Skip to content

Commit

Permalink
feat: upgrade dependencies and .net framework
Browse files Browse the repository at this point in the history
  • Loading branch information
Christoph Bühler committed Nov 30, 2023
1 parent f1c91ae commit d5dd762
Show file tree
Hide file tree
Showing 28 changed files with 243 additions and 307 deletions.
5 changes: 5 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ end_of_line = crlf
insert_final_newline = true

#### Custom StyleCop Rules ####
# https://rules.sonarsource.com/csharp/RSPEC-6608/
dotnet_diagnostic.S6608.severity = None

# https://rules.sonarsource.com/csharp/RSPEC-3925/
dotnet_diagnostic.S3925.severity = None

# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA0001.md
dotnet_diagnostic.SA0001.severity = None
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: 7.x
dotnet-version: 8.x

- name: Build
run: dotnet build --configuration Release
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: 7.x
dotnet-version: 8.x

- name: Linting
run: dotnet format --verify-no-changes
Expand All @@ -42,7 +42,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: 7.x
dotnet-version: 8.x
- name: Tools
run: dotnet tool restore

Expand Down
9 changes: 5 additions & 4 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@
<ItemGroup>
<PackageReference
Include="StyleCop.Analyzers"
Version="1.2.0-beta.435"
Version="1.2.0-beta.507"
PrivateAssets="all"
Condition="$(MSBuildProjectExtension) == '.csproj'"/>
Condition="$(MSBuildProjectExtension) == '.csproj'" />
<PackageReference
Include="SonarAnalyzer.CSharp"
Version="9.0.0.68202"
Version="9.14.0.81108"
PrivateAssets="all"
Condition="$(MSBuildProjectExtension) == '.csproj'"/>
Condition="$(MSBuildProjectExtension) == '.csproj'" />
<PackageReference Include="Roslynator.Analyzers" Version="4.6.4" PrivateAssets="All" />
</ItemGroup>

</Project>
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
### Build
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build

WORKDIR /app

Expand All @@ -17,7 +17,7 @@ RUN dotnet publish \
MumbleApi

### Deploy
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS final
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS final

ARG BUILD_VERSION=unknown
ARG COMMIT_SHA=unknown
Expand Down
105 changes: 45 additions & 60 deletions MumbleApi.Test/Controller/PostControllerTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,9 @@

namespace MumbleApi.Test.Controller;

public class PostControllerTest : IClassFixture<WebAppFactory>
public class PostControllerTest(WebAppFactory factory) : IClassFixture<WebAppFactory>
{
private readonly WebAppFactory _factory;

public PostControllerTest(WebAppFactory factory)
{
_factory = factory;
}

public static TheoryData<string, HttpContent, Action<PostBase>> CreatePostData =>
public static TheoryData<string, MultipartFormDataContent, Action<PostBase>> CreatePostData =>
new()
{
// Create a post with text only.
Expand All @@ -29,7 +22,7 @@ public PostControllerTest(WebAppFactory factory)
new StringContent("new post text"), "text"
},
},
result => { result.Text.Should().Be("new post text"); }
result => result.Text.Should().Be("new post text")
},

// Create post with media only.
Expand Down Expand Up @@ -536,7 +529,7 @@ public PostControllerTest(WebAppFactory factory)
},
};

public static TheoryData<HttpContent, Action<PostBase>> ReplacePostData =>
public static TheoryData<MultipartFormDataContent, Action<PostBase>> ReplacePostData =>
new()
{
// Create a post with text only.
Expand Down Expand Up @@ -606,16 +599,16 @@ public PostControllerTest(WebAppFactory factory)
[InlineData("DELETE", "/posts/id/likes")]
public async Task ReturnsUnauthorizedOnProtectedRoute(string method, string uri)
{
var client = _factory.CreateUnauthorizedClient();
var client = factory.CreateUnauthorizedClient();
var result = await client.SendAsync(new HttpRequestMessage(new HttpMethod(method), uri));
result.StatusCode.Should().Be(HttpStatusCode.Unauthorized);
}

[Fact]
public async Task FetchEmptyPosts()
{
await _factory.PrepareTestData(TestData.Empty);
var client = _factory.CreateClient();
await factory.PrepareTestData(TestData.Empty);
var client = factory.CreateClient();
var result = await client.GetFromJsonAsync<PaginatedResult<Post>>("/posts");

if (result is null)
Expand All @@ -638,8 +631,8 @@ public async Task FetchEmptyPosts()
[InlineData("/posts/00000000000000000000000002/replies?offset=2&limit=1", true, false)]
public async Task PaginateCorrectly(string url, bool nextIsNull, bool prevIsNull)
{
await _factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = _factory.CreateClient();
await factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = factory.CreateClient();
var result = await client.GetFromJsonAsync<PaginatedResult<Post>>(url);

if (result is null)
Expand All @@ -656,8 +649,8 @@ public async Task PaginateCorrectly(string url, bool nextIsNull, bool prevIsNull
[InlineData("/posts/00000000000000000000000002/replies")]
public async Task NoInfoAboutLikeWithoutAuth(string url)
{
await _factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = _factory.CreateUnauthorizedClient();
await factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = factory.CreateUnauthorizedClient();
var result = await client.GetFromJsonAsync<PaginatedResult<Post>>(url);

if (result is null)
Expand All @@ -673,8 +666,8 @@ public async Task NoInfoAboutLikeWithoutAuth(string url)
[InlineData("/posts/00000000000000000000000002/replies")]
public async Task ContainInfoAboutLikeWithAuth(string url)
{
await _factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = _factory.CreateClient();
await factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = factory.CreateClient();
var result = await client.GetFromJsonAsync<PaginatedResult<Post>>(url);

if (result is null)
Expand All @@ -689,12 +682,10 @@ public async Task ContainInfoAboutLikeWithAuth(string url)
[MemberData(nameof(CreatePostData))]
public async Task CreatePost(string url, MultipartFormDataContent content, Action<PostBase> verify)
{
await _factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = _factory.CreateClient();
using var request = new HttpRequestMessage(HttpMethod.Post, url)
{
Content = content,
};
await factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = factory.CreateClient();
using var request = new HttpRequestMessage(HttpMethod.Post, url);
request.Content = content;

var response = await client.SendAsync(request);
var result = await response.EnsureSuccessStatusCode().Content.ReadFromJsonAsync<PostBase>();
Expand All @@ -713,12 +704,10 @@ public async Task CreatePost(string url, MultipartFormDataContent content, Actio
[MemberData(nameof(ErroneousResultData))]
public async Task ErroneousResult(HttpMethod method, string url, HttpContent? content, HttpStatusCode result)
{
await _factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = _factory.CreateClient();
using var request = new HttpRequestMessage(method, url)
{
Content = content,
};
await factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = factory.CreateClient();
using var request = new HttpRequestMessage(method, url);
request.Content = content;

var response = await client.SendAsync(request);
response.StatusCode.Should().Be(result);
Expand All @@ -727,8 +716,8 @@ public async Task ErroneousResult(HttpMethod method, string url, HttpContent? co
[Fact]
public async Task FetchPostById()
{
await _factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = _factory.CreateUnauthorizedClient();
await factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = factory.CreateUnauthorizedClient();
var result = await client.GetFromJsonAsync<Post>("/posts/00000000000000000000000001");

if (result is null)
Expand All @@ -743,8 +732,8 @@ public async Task FetchPostById()
[Fact]
public async Task FetchPostByIdWithLikeInfo()
{
await _factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = _factory.CreateClient();
await factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = factory.CreateClient();
var result = await client.GetFromJsonAsync<Post>("/posts/00000000000000000000000001");

if (result is null)
Expand All @@ -760,12 +749,10 @@ public async Task FetchPostByIdWithLikeInfo()
[MemberData(nameof(ReplacePostData))]
public async Task ReplacePost(MultipartFormDataContent content, Action<PostBase> verify)
{
await _factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = _factory.CreateClient();
using var request = new HttpRequestMessage(HttpMethod.Put, "/posts/00000000000000000000000001")
{
Content = content,
};
await factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = factory.CreateClient();
using var request = new HttpRequestMessage(HttpMethod.Put, "/posts/00000000000000000000000001");
request.Content = content;

var response = await client.SendAsync(request);
var result = await response.EnsureSuccessStatusCode().Content.ReadFromJsonAsync<PostBase>();
Expand All @@ -782,12 +769,10 @@ public async Task ReplacePost(MultipartFormDataContent content, Action<PostBase>
[Fact]
public async Task PatchPostWithText()
{
await _factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = _factory.CreateClient();
using var request = new HttpRequestMessage(HttpMethod.Patch, "/posts/00000000000000000000000001")
{
Content = new StringContent(@"{""text"": ""new post text""}", new MediaTypeHeaderValue("application/json")),
};
await factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = factory.CreateClient();
using var request = new HttpRequestMessage(HttpMethod.Patch, "/posts/00000000000000000000000001");
request.Content = new StringContent("""{"text": "new post text"}""", new MediaTypeHeaderValue("application/json"));

var response = await client.SendAsync(request);
response.StatusCode.Should().Be(HttpStatusCode.NoContent);
Expand All @@ -799,8 +784,8 @@ public async Task PatchPostWithText()
[Fact]
public async Task DeleteAPost()
{
await _factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = _factory.CreateClient();
await factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = factory.CreateClient();
var response = await client.DeleteAsync("/posts/00000000000000000000000001");
response.StatusCode.Should().Be(HttpStatusCode.NoContent);

Expand All @@ -811,8 +796,8 @@ public async Task DeleteAPost()
[Fact]
public async Task AttachMediaOnPost()
{
await _factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = _factory.CreateClient();
await factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = factory.CreateClient();
var response = await client.PutAsync("/posts/00000000000000000000000001/media", new MultipartFormDataContent
{
{
Expand All @@ -835,8 +820,8 @@ public async Task AttachMediaOnPost()
[Fact]
public async Task ReplaceMediaOnPost()
{
await _factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = _factory.CreateClient();
await factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = factory.CreateClient();
var response = await client.PutAsync("/posts/00000000000000000000000002/media", new MultipartFormDataContent
{
{
Expand All @@ -859,8 +844,8 @@ public async Task ReplaceMediaOnPost()
[Fact]
public async Task DeleteMediaFromPost()
{
await _factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = _factory.CreateClient();
await factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = factory.CreateClient();
var response = await client.DeleteAsync("/posts/00000000000000000000000003/media");
response.StatusCode.Should().Be(HttpStatusCode.NoContent);

Expand All @@ -871,8 +856,8 @@ public async Task DeleteMediaFromPost()
[Fact]
public async Task LikePost()
{
await _factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = _factory.CreateClient();
await factory.PrepareTestData(TestData.PostsWithoutLikes);
var client = factory.CreateClient();

// Perform the put twice to see if it's idempotent.
var response = await client.PutAsync("/posts/00000000000000000000000001/likes", null);
Expand All @@ -887,8 +872,8 @@ public async Task LikePost()
[Fact]
public async Task UnlikePost()
{
await _factory.PrepareTestData(TestData.PostsWithLikes);
var client = _factory.CreateClient();
await factory.PrepareTestData(TestData.PostsWithLikes);
var client = factory.CreateClient();

var result = await client.GetFromJsonAsync<Post>("/posts/00000000000000000000000001");
result?.LikedBySelf.Should().BeTrue();
Expand Down
Loading

0 comments on commit d5dd762

Please sign in to comment.