From d8d45ec8d9b68ca35c1fce4810774daba3d53879 Mon Sep 17 00:00:00 2001 From: Kaliumhexacyanoferrat Date: Thu, 7 Dec 2023 14:48:51 +0100 Subject: [PATCH] Introduce a mechnism to print additional response information in tests --- .config/dotnet-tools.json | 2 +- .../Protobuf/GenHTTP.Modules.Protobuf.csproj | 2 +- Playground/Program.cs | 39 ++++----------- Testing/AssertX.cs | 47 ++++++++++++++++++- Testing/Engine/BasicTests.cs | 8 ++-- Testing/Engine/ErrorHandlingTest.cs | 2 +- Testing/Engine/HeaderTests.cs | 2 +- Testing/Engine/HostTests.cs | 4 +- Testing/Engine/ResponseTests.cs | 2 +- Testing/Engine/RoutingTests.cs | 2 +- Testing/Engine/SecurityTests.cs | 15 +++--- Testing/GenHTTP.Testing.Acceptance.csproj | 2 +- .../ApiKeyAuthenticationTests.cs | 10 ++-- .../BasicAuthenticationTests.cs | 10 ++-- .../Authentication/UserInjectionTests.cs | 4 +- Testing/Modules/CacheValidationTests.cs | 4 +- Testing/Modules/Controllers/ActionTests.cs | 24 +++++----- .../Modules/Controllers/ErrorHandlingTests.cs | 2 +- .../Modules/Controllers/ResultTypeTests.cs | 8 ++-- Testing/Modules/Controllers/SeoTests.cs | 2 +- .../Modules/Conversion/ErrorHandlingTests.cs | 2 +- Testing/Modules/ConversionTests.cs | 2 +- Testing/Modules/Functional/InlineTests.cs | 2 +- Testing/Modules/IO/ContentTests.cs | 4 +- Testing/Modules/IO/DownloadTests.cs | 6 +-- Testing/Modules/IO/RangeTests.cs | 24 +++++----- Testing/Modules/IO/ResourcesTests.cs | 14 +++--- Testing/Modules/LayoutTests.cs | 10 ++-- Testing/Modules/ListingTests.cs | 2 +- Testing/Modules/LoadBalancerTests.cs | 8 ++-- Testing/Modules/PageTests.cs | 6 +-- Testing/Modules/Pages/ErrorHandlingTests.cs | 2 +- Testing/Modules/RedirectTests.cs | 8 ++-- Testing/Modules/ReverseProxyTests.cs | 8 ++-- Testing/Modules/Security/CorsTests.cs | 10 ++-- .../ServerCaching/PrecompressedContentTest.cs | 2 +- .../Modules/ServerCaching/ServerCacheTests.cs | 14 +++--- Testing/Modules/SinglePageTests.cs | 10 ++-- .../StaticWebsites/StaticWebsiteTests.cs | 14 +++--- Testing/Modules/VirtualHostsTests.cs | 2 +- Testing/Modules/WebserviceTests.cs | 20 ++++---- .../Modules/Webservices/ResultTypeTests.cs | 8 ++-- Testing/Modules/WebsiteTests.cs | 36 +++++++------- 43 files changed, 214 insertions(+), 191 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 04d4d539..dfcbccac 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "dotnet-sonarscanner": { - "version": "5.14.0", + "version": "5.15.0", "commands": [ "dotnet-sonarscanner" ] diff --git a/Modules/Protobuf/GenHTTP.Modules.Protobuf.csproj b/Modules/Protobuf/GenHTTP.Modules.Protobuf.csproj index e3fd5292..2285f69e 100644 --- a/Modules/Protobuf/GenHTTP.Modules.Protobuf.csproj +++ b/Modules/Protobuf/GenHTTP.Modules.Protobuf.csproj @@ -40,7 +40,7 @@ - + diff --git a/Playground/Program.cs b/Playground/Program.cs index b8451216..64ff2816 100644 --- a/Playground/Program.cs +++ b/Playground/Program.cs @@ -1,34 +1,11 @@ -using System.Collections.Generic; +using GenHTTP.Engine; -using GenHTTP.Engine; - -using GenHTTP.Modules.Functional; -using GenHTTP.Modules.Layouting; +using GenHTTP.Modules.IO; using GenHTTP.Modules.Practices; -using GenHTTP.Modules.Security; - -var books = new List() -{ - new Book(1, "Lord of the Rings") -}; - -var bookApi = Inline.Create() - .Get(() => books) // GET http://localhost:8080/books/ - .Put((Book book) => books.Add(book)); // PUT http://localhost:8080/books/ - -var content = Layout.Create() - .Add("books", bookApi) - .Add(CorsPolicy.Permissive()); - -return Host.Create() - .Handler(content) - .Defaults() - .Console() -//-:cnd:noEmit -#if DEBUG - .Development() -#endif -//+:cnd:noEmit - .Run(); -record class Book(int ID, string Title); \ No newline at end of file +Host.Create() + .Handler(Content.From(Resource.FromString("Hello World"))) + .Defaults() + .Development() + .Console() + .Run(); diff --git a/Testing/AssertX.cs b/Testing/AssertX.cs index 9ca7d828..cd444ec7 100644 --- a/Testing/AssertX.cs +++ b/Testing/AssertX.cs @@ -1,5 +1,10 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; +using System.Net; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -30,6 +35,46 @@ public static class AssertX public static void IsNullOrEmpty(string? value) => Assert.IsTrue(string.IsNullOrEmpty(value)); + /// + /// Raises an assertion expection if the response does not have the expected status code + /// and additionally prints information about the response to be able to further debug + /// issues in workflow runs. + /// + /// The response to be evaluated + /// The expected status code to check for + public static async Task AssertStatusAsync(this HttpResponseMessage response, HttpStatusCode expectedStatus) + { + if (response.StatusCode != expectedStatus) + { + var builder = new StringBuilder(); + + builder.AppendLine($"Response returned with status '{response.StatusCode}', expected '{expectedStatus}'."); + builder.AppendLine(); + + builder.AppendLine("Headers"); + builder.AppendLine(); + + foreach (var header in response.Headers) + { + builder.AppendLine($" {header.Key} = {string.Join(',', header.Value.ToList())}"); + } + + builder.AppendLine(); + + var content = await response.Content.ReadAsStringAsync(); + + if (!string.IsNullOrEmpty(content)) + { + builder.AppendLine("Body"); + builder.AppendLine(); + + builder.AppendLine(content); + } + + throw new AssertFailedException(builder.ToString()); + } + } + } } diff --git a/Testing/Engine/BasicTests.cs b/Testing/Engine/BasicTests.cs index 9cc51f8f..6b40fb3a 100644 --- a/Testing/Engine/BasicTests.cs +++ b/Testing/Engine/BasicTests.cs @@ -25,7 +25,7 @@ public async Task TestBuilder() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] @@ -37,7 +37,7 @@ public async Task TestLegacyHttp() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] @@ -50,7 +50,7 @@ public async Task TestConnectionClose() using var response = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); Assert.IsTrue(response.Headers.Connection.Contains("Close")); } @@ -61,7 +61,7 @@ public async Task TestEmptyQuery() using var response = await runner.GetResponse("/?"); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } diff --git a/Testing/Engine/ErrorHandlingTest.cs b/Testing/Engine/ErrorHandlingTest.cs index 7fe098bc..ee84c62c 100644 --- a/Testing/Engine/ErrorHandlingTest.cs +++ b/Testing/Engine/ErrorHandlingTest.cs @@ -25,7 +25,7 @@ public async Task TestGenericError() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.InternalServerError, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.InternalServerError); } } diff --git a/Testing/Engine/HeaderTests.cs b/Testing/Engine/HeaderTests.cs index 9e5a5692..ccabc097 100644 --- a/Testing/Engine/HeaderTests.cs +++ b/Testing/Engine/HeaderTests.cs @@ -43,7 +43,7 @@ public async Task TestReservedHeaderCannotBeSet() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.InternalServerError, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.InternalServerError); } } diff --git a/Testing/Engine/HostTests.cs b/Testing/Engine/HostTests.cs index 8a655283..f942ec7f 100644 --- a/Testing/Engine/HostTests.cs +++ b/Testing/Engine/HostTests.cs @@ -19,7 +19,7 @@ public async Task TestStart() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] @@ -31,7 +31,7 @@ public async Task TestRestart() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } } diff --git a/Testing/Engine/ResponseTests.cs b/Testing/Engine/ResponseTests.cs index b0e2ddf0..0354d4af 100644 --- a/Testing/Engine/ResponseTests.cs +++ b/Testing/Engine/ResponseTests.cs @@ -73,7 +73,7 @@ public async Task TestProperties() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("Hello World", await response.GetContent()); Assert.AreEqual("text/x-custom", response.GetContentHeader("Content-Type")); diff --git a/Testing/Engine/RoutingTests.cs b/Testing/Engine/RoutingTests.cs index 72938f66..4c9ea6a8 100644 --- a/Testing/Engine/RoutingTests.cs +++ b/Testing/Engine/RoutingTests.cs @@ -19,7 +19,7 @@ public async Task NotFoundForUnknownRoute() using var runner = TestRunner.Run(); using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } } diff --git a/Testing/Engine/SecurityTests.cs b/Testing/Engine/SecurityTests.cs index 621818dd..3b44ea6f 100644 --- a/Testing/Engine/SecurityTests.cs +++ b/Testing/Engine/SecurityTests.cs @@ -34,7 +34,7 @@ public Task TestSecure() using var response = await client.GetAsync($"https://localhost:{sec}"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("Hello Alice!", await response.Content.ReadAsStringAsync()); }); } @@ -52,7 +52,7 @@ public Task TestDefaultRedirection() using var response = await client.GetAsync($"http://localhost:{insec}"); - Assert.AreEqual(HttpStatusCode.MovedPermanently, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.MovedPermanently); Assert.AreEqual($"https://localhost:{sec}/", response.Headers.GetValues("Location").First()); }); } @@ -70,7 +70,7 @@ public Task TestNoRedirectionWithAllowed() using var response = await client.GetAsync($"http://localhost:{insec}"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); }, mode: SecureUpgrade.Allow); } @@ -90,7 +90,8 @@ public Task TestRedirectionWhenRequested() using var response = await client.SendAsync(request); - Assert.AreEqual(HttpStatusCode.TemporaryRedirect, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.TemporaryRedirect); + Assert.AreEqual($"https://localhost:{sec}/", response.Headers.GetValues("Location").First()); Assert.AreEqual($"Upgrade-Insecure-Requests", response.Headers.GetValues("Vary").First()); }, mode: SecureUpgrade.Allow); @@ -109,12 +110,12 @@ public Task TestTransportPolicy() using var insecureResponse = await client.GetAsync($"http://localhost:{insec}"); - Assert.AreEqual(HttpStatusCode.OK, insecureResponse.StatusCode); + await insecureResponse.AssertStatusAsync(HttpStatusCode.OK); Assert.IsFalse(insecureResponse.Headers.Contains("Strict-Transport-Security")); using var secureResponse = await client.GetAsync($"https://localhost:{sec}"); - Assert.AreEqual(HttpStatusCode.OK, secureResponse.StatusCode); + await secureResponse.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("max-age=31536000; includeSubDomains; preload", secureResponse.Headers.GetValues("Strict-Transport-Security").First()); }, mode: SecureUpgrade.None); @@ -139,7 +140,7 @@ await Assert.ThrowsExceptionAsync(async () => using var client = TestRunner.GetClient(ignoreSecurityErrors: true); using var response = await client.GetAsync($"https://localhost:{sec}"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); }); } diff --git a/Testing/GenHTTP.Testing.Acceptance.csproj b/Testing/GenHTTP.Testing.Acceptance.csproj index 647f4de0..5f52624e 100644 --- a/Testing/GenHTTP.Testing.Acceptance.csproj +++ b/Testing/GenHTTP.Testing.Acceptance.csproj @@ -47,7 +47,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/Testing/Modules/Authentication/ApiKeyAuthenticationTests.cs b/Testing/Modules/Authentication/ApiKeyAuthenticationTests.cs index 3b5ccf1b..d5773891 100644 --- a/Testing/Modules/Authentication/ApiKeyAuthenticationTests.cs +++ b/Testing/Modules/Authentication/ApiKeyAuthenticationTests.cs @@ -26,7 +26,7 @@ public async Task TestNoKey() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.Unauthorized, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.Unauthorized); } [TestMethod] @@ -52,7 +52,7 @@ public async Task TestValidKey() using var response = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); } [TestMethod] @@ -83,7 +83,7 @@ public async Task TestValidKeyFromHeader() using var response = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); } [TestMethod] @@ -100,7 +100,7 @@ public async Task TestCustomExtractor() using var response = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); } [TestMethod] @@ -118,7 +118,7 @@ public async Task TestCustomAuthenticator() using var response = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); } private static TestRunner GetRunnerWithKeys(params string[] keys) diff --git a/Testing/Modules/Authentication/BasicAuthenticationTests.cs b/Testing/Modules/Authentication/BasicAuthenticationTests.cs index 13811c6d..17cf06b9 100644 --- a/Testing/Modules/Authentication/BasicAuthenticationTests.cs +++ b/Testing/Modules/Authentication/BasicAuthenticationTests.cs @@ -27,7 +27,7 @@ public async Task TestNoUser() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.Unauthorized, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.Unauthorized); } [TestMethod] @@ -65,7 +65,7 @@ public async Task TestInvalidUser() using var response = await GetResponse(runner, "u", "password"); - Assert.AreEqual(HttpStatusCode.Unauthorized, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.Unauthorized); } [TestMethod] @@ -89,7 +89,7 @@ public async Task TestNoCustomUser() using var response = await GetResponse(runner, "_", "_"); - Assert.AreEqual(HttpStatusCode.Unauthorized, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.Unauthorized); } [TestMethod] @@ -104,7 +104,7 @@ public async Task TestOtherAuthenticationIsNotAccepted() using var response = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.Unauthorized, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.Unauthorized); } [TestMethod] @@ -119,7 +119,7 @@ public async Task TestNoValidBase64() using var response = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.Unauthorized, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.Unauthorized); } private static async Task GetResponse(TestRunner runner, string user, string password) diff --git a/Testing/Modules/Authentication/UserInjectionTests.cs b/Testing/Modules/Authentication/UserInjectionTests.cs index 3941ed8c..f2f8a516 100644 --- a/Testing/Modules/Authentication/UserInjectionTests.cs +++ b/Testing/Modules/Authentication/UserInjectionTests.cs @@ -27,7 +27,7 @@ public async Task TestUserInjected() using var response = await runner.GetResponse(client: client); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("abc", await response.GetContent()); } @@ -38,7 +38,7 @@ public async Task TestNoUser() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.Unauthorized, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.Unauthorized); } #endregion diff --git a/Testing/Modules/CacheValidationTests.cs b/Testing/Modules/CacheValidationTests.cs index 566efffb..8d20d78e 100644 --- a/Testing/Modules/CacheValidationTests.cs +++ b/Testing/Modules/CacheValidationTests.cs @@ -44,7 +44,7 @@ public async Task TestServerReturnsUnmodified() using var cached = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.NotModified, cached.StatusCode); + await cached.AssertStatusAsync(HttpStatusCode.NotModified); Assert.AreEqual("0", cached.GetContentHeader("Content-Length")); } @@ -60,7 +60,7 @@ public async Task TestServerReturnsModified() using var reloaded = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.OK, reloaded.StatusCode); + await reloaded.AssertStatusAsync(HttpStatusCode.OK); } [TestMethod] diff --git a/Testing/Modules/Controllers/ActionTests.cs b/Testing/Modules/Controllers/ActionTests.cs index 2e4305e5..5409800c 100644 --- a/Testing/Modules/Controllers/ActionTests.cs +++ b/Testing/Modules/Controllers/ActionTests.cs @@ -86,7 +86,7 @@ public async Task TestIndex() using var response = await runner.GetResponse("/t/"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("Hello World!", await response.GetContent()); } @@ -97,7 +97,7 @@ public async Task TestAction() using var response = await runner.GetResponse("/t/action/"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("Action", await response.GetContent()); } @@ -108,7 +108,7 @@ public async Task TestActionWithQuery() using var response = await runner.GetResponse("/t/action/?query=0815"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("815", await response.GetContent()); } @@ -129,7 +129,7 @@ public async Task TestActionWithQueryFromBody() using var response = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("Action test", await response.GetContent()); } @@ -147,7 +147,7 @@ public async Task TestActionWithBody() using var response = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("FieldData", await response.GetContent()); } @@ -158,7 +158,7 @@ public async Task TestActionWithParameter() using var response = await runner.GetResponse("/t/simple-action/4711/"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("4711", await response.GetContent()); } @@ -169,7 +169,7 @@ public async Task TestActionWithBadParameter() using var response = await runner.GetResponse("/t/simple-action/string/"); - Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.BadRequest); } [TestMethod] @@ -179,7 +179,7 @@ public async Task TestActionWithMixedParameters() using var response = await runner.GetResponse("/t/complex-action/1/2/?three=3"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("6", await response.GetContent()); } @@ -190,7 +190,7 @@ public async Task TestActionWithNoResult() using var response = await runner.GetResponse("/t/void/"); - Assert.AreEqual(HttpStatusCode.NoContent, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NoContent); } [TestMethod] @@ -200,7 +200,7 @@ public async Task TestNonExistingAction() using var response = await runner.GetResponse("/t/nope/"); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] @@ -210,7 +210,7 @@ public async Task TestHypenCasing() using var response = await runner.GetResponse("/t/hypen-casing-99/"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("OK", await response.GetContent()); } @@ -221,7 +221,7 @@ public async Task TestIndexController() using var response = await runner.GetResponse("/simple-action/4711/"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("4711", await response.GetContent()); } diff --git a/Testing/Modules/Controllers/ErrorHandlingTests.cs b/Testing/Modules/Controllers/ErrorHandlingTests.cs index 65393a84..b8e6954a 100644 --- a/Testing/Modules/Controllers/ErrorHandlingTests.cs +++ b/Testing/Modules/Controllers/ErrorHandlingTests.cs @@ -49,7 +49,7 @@ public async Task TestMustNotReturnSimpleType() { using var response = await Run("/c/simple-type/"); - Assert.AreEqual(HttpStatusCode.InternalServerError, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.InternalServerError); } [TestMethod] diff --git a/Testing/Modules/Controllers/ResultTypeTests.cs b/Testing/Modules/Controllers/ResultTypeTests.cs index 136618b2..05d0840d 100644 --- a/Testing/Modules/Controllers/ResultTypeTests.cs +++ b/Testing/Modules/Controllers/ResultTypeTests.cs @@ -57,7 +57,7 @@ public async Task ControllerMayReturnHandlerBuilder() using var response = await runner.GetResponse("/t/handler-builder/"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("HandlerBuilder", await response.GetContent()); } @@ -68,7 +68,7 @@ public async Task ControllerMayReturnHandler() using var response = await runner.GetResponse("/t/handler/"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("Handler", await response.GetContent()); } @@ -79,7 +79,7 @@ public async Task ControllerMayReturnResponseBuilder() using var response = await runner.GetResponse("/t/response-builder/"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("ResponseBuilder", await response.GetContent()); } @@ -90,7 +90,7 @@ public async Task ControllerMayReturnResponse() using var response = await runner.GetResponse("/t/response/"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("Response", await response.GetContent()); } diff --git a/Testing/Modules/Controllers/SeoTests.cs b/Testing/Modules/Controllers/SeoTests.cs index 60b16fb7..d5fbe786 100644 --- a/Testing/Modules/Controllers/SeoTests.cs +++ b/Testing/Modules/Controllers/SeoTests.cs @@ -50,7 +50,7 @@ public async Task TestActionCasingMatters() using var response = await runner.GetResponse("/t/Action/"); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } #endregion diff --git a/Testing/Modules/Conversion/ErrorHandlingTests.cs b/Testing/Modules/Conversion/ErrorHandlingTests.cs index 53d7c1c1..1e27e6cb 100644 --- a/Testing/Modules/Conversion/ErrorHandlingTests.cs +++ b/Testing/Modules/Conversion/ErrorHandlingTests.cs @@ -38,7 +38,7 @@ public async Task UndeserializableBodyReturnsWithBadRequest() using var response = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.BadRequest); } #endregion diff --git a/Testing/Modules/ConversionTests.cs b/Testing/Modules/ConversionTests.cs index d5437e6b..581bf9de 100644 --- a/Testing/Modules/ConversionTests.cs +++ b/Testing/Modules/ConversionTests.cs @@ -129,7 +129,7 @@ public ConversionHandler(ISerializationFormat format, IHandler parent) using var response = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual(serialized, await response.GetContent()); } diff --git a/Testing/Modules/Functional/InlineTests.cs b/Testing/Modules/Functional/InlineTests.cs index 81af6c2b..0ec51e1b 100644 --- a/Testing/Modules/Functional/InlineTests.cs +++ b/Testing/Modules/Functional/InlineTests.cs @@ -116,7 +116,7 @@ public async Task TestNotFound() using var response = await host.GetResponse("/nope"); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] diff --git a/Testing/Modules/IO/ContentTests.cs b/Testing/Modules/IO/ContentTests.cs index 058cf7d6..5a1cfd9e 100644 --- a/Testing/Modules/IO/ContentTests.cs +++ b/Testing/Modules/IO/ContentTests.cs @@ -19,7 +19,7 @@ public async Task TestContent() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("Hello World!", await response.GetContent()); } @@ -30,7 +30,7 @@ public async Task TestContentIgnoresRouting() using var response = await runner.GetResponse("/some/path"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); } } diff --git a/Testing/Modules/IO/DownloadTests.cs b/Testing/Modules/IO/DownloadTests.cs index 9f175696..1ece7c1b 100644 --- a/Testing/Modules/IO/DownloadTests.cs +++ b/Testing/Modules/IO/DownloadTests.cs @@ -22,7 +22,7 @@ public async Task TestDownload() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("This is text!", await response.GetContent()); Assert.AreEqual("text/plain", response.GetContentHeader("Content-Type")); @@ -38,7 +38,7 @@ public async Task TestDownloadDoesNotAcceptRouting() using var response = await runner.GetResponse("/file.txt/blubb"); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] @@ -55,7 +55,7 @@ public async Task DownloadsCannotBeModified() using var response = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.MethodNotAllowed, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.MethodNotAllowed); } [TestMethod] diff --git a/Testing/Modules/IO/RangeTests.cs b/Testing/Modules/IO/RangeTests.cs index 6ee19259..706ff4d1 100644 --- a/Testing/Modules/IO/RangeTests.cs +++ b/Testing/Modules/IO/RangeTests.cs @@ -19,7 +19,7 @@ public async Task TestRangesAreOptional() { using var response = await GetResponse(null); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual(CONTENT, await response.GetContent()); } @@ -28,7 +28,7 @@ public async Task TestFullRangeIsSatisfied() { using var response = await GetResponse("bytes=1-8"); - Assert.AreEqual(HttpStatusCode.PartialContent, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.PartialContent); Assert.AreEqual("12345678", await response.GetContent()); Assert.AreEqual("bytes 1-8/10", response.GetContentHeader("Content-Range")); } @@ -38,7 +38,7 @@ public async Task TestRangeFromStartIsSatisfied() { using var response = await GetResponse("bytes=4-"); - Assert.AreEqual(HttpStatusCode.PartialContent, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.PartialContent); Assert.AreEqual("456789", await response.GetContent()); Assert.AreEqual("bytes 4-9/10", response.GetContentHeader("Content-Range")); } @@ -48,7 +48,7 @@ public async Task TestRangeFromEndIsSatisfied() { using var response = await GetResponse("bytes=-4"); - Assert.AreEqual(HttpStatusCode.PartialContent, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.PartialContent); Assert.AreEqual("6789", await response.GetContent()); Assert.AreEqual("bytes 6-9/10", response.GetContentHeader("Content-Range")); } @@ -58,7 +58,7 @@ public async Task TestSingleRangeIsSatisfied() { using var response = await GetResponse("bytes=1-1"); - Assert.AreEqual(HttpStatusCode.PartialContent, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.PartialContent); Assert.AreEqual("1", await response.GetContent()); Assert.AreEqual("bytes 1-1/10", response.GetContentHeader("Content-Range")); } @@ -68,7 +68,7 @@ public async Task TestFullRangeNotSatisfied() { using var response = await GetResponse("bytes=9-13"); - Assert.AreEqual(HttpStatusCode.RequestedRangeNotSatisfiable, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.RequestedRangeNotSatisfiable); Assert.AreEqual("bytes */10", response.GetContentHeader("Content-Range")); } @@ -77,7 +77,7 @@ public async Task TestRangeFromStartNotSatisfied() { using var response = await GetResponse("bytes=12-"); - Assert.AreEqual(HttpStatusCode.RequestedRangeNotSatisfiable, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.RequestedRangeNotSatisfiable); Assert.AreEqual("bytes */10", response.GetContentHeader("Content-Range")); } @@ -86,7 +86,7 @@ public async Task TestRangeFromEndNotSatisfied() { using var response = await GetResponse("bytes=-12"); - Assert.AreEqual(HttpStatusCode.RequestedRangeNotSatisfiable, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.RequestedRangeNotSatisfiable); Assert.AreEqual("bytes */10", response.GetContentHeader("Content-Range")); } @@ -95,7 +95,7 @@ public async Task TestMultipleRangesNotSatisfied() { using var response = await GetResponse("bytes=1-2,3-4"); - Assert.AreEqual(HttpStatusCode.RequestedRangeNotSatisfiable, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.RequestedRangeNotSatisfiable); Assert.AreEqual("bytes */10", response.GetContentHeader("Content-Range")); } @@ -104,7 +104,7 @@ public async Task TestOneBasedIndexDoesNotWork() { using var response = await GetResponse("bytes=1-10"); - Assert.AreEqual(HttpStatusCode.RequestedRangeNotSatisfiable, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.RequestedRangeNotSatisfiable); Assert.AreEqual("bytes */10", response.GetContentHeader("Content-Range")); } @@ -113,7 +113,7 @@ public async Task TestHeadRequest() { using var response = await GetResponse("bytes=1-8", HttpMethod.Head); - Assert.AreEqual(HttpStatusCode.PartialContent, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.PartialContent); Assert.AreEqual("bytes 1-8/10", response.GetContentHeader("Content-Range")); Assert.AreEqual("8", response.GetContentHeader("Content-Length")); @@ -126,7 +126,7 @@ public async Task TestRangesIgnoredOnPostRequests() { using var response = await GetResponse("bytes=1-8", HttpMethod.Post); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual(CONTENT, await response.GetContent()); } diff --git a/Testing/Modules/IO/ResourcesTests.cs b/Testing/Modules/IO/ResourcesTests.cs index ef234051..3b0cd602 100644 --- a/Testing/Modules/IO/ResourcesTests.cs +++ b/Testing/Modules/IO/ResourcesTests.cs @@ -21,7 +21,7 @@ public async Task TestFileDownload() using var response = await runner.GetResponse("/Resources/File.txt"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("This is text!", await response.GetContent()); } @@ -32,7 +32,7 @@ public async Task TestSubdirectoryFileDownload() using var response = await runner.GetResponse("/Resources/Subdirectory/AnotherFile.txt"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("This is another text!", await response.GetContent()); } @@ -43,7 +43,7 @@ public async Task TestNoFileDownload() using var response = await runner.GetResponse("/Resources/nah.txt"); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] @@ -53,7 +53,7 @@ public async Task TestNoSubdirectoryFileDownload() using var response = await runner.GetResponse("/Resources/nah/File.txt"); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] @@ -63,7 +63,7 @@ public async Task TestRootDownload() using var response = await runner.GetResponse("/File.txt"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("This is text!", await response.GetContent()); } @@ -74,7 +74,7 @@ public async Task TestDirectory() using var response = await runner.GetResponse("/Resources/nah/"); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] @@ -84,7 +84,7 @@ public async Task TestNonExistingDirectory() using var response = await runner.GetResponse("/Resources/nah/"); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] diff --git a/Testing/Modules/LayoutTests.cs b/Testing/Modules/LayoutTests.cs index 1f653cad..9728af6f 100644 --- a/Testing/Modules/LayoutTests.cs +++ b/Testing/Modules/LayoutTests.cs @@ -27,12 +27,12 @@ public async Task TestGetIndex() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("Hello World!", await response.GetContent()); using var notFound = await runner.GetResponse("/notfound"); - Assert.AreEqual(HttpStatusCode.NotFound, notFound.StatusCode); + await notFound.AssertStatusAsync(HttpStatusCode.NotFound); } /// @@ -49,7 +49,7 @@ public async Task TestDefaultContent() { using var response = await runner.GetResponse(path); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("Hello World!", await response.GetContent()); } } @@ -68,12 +68,12 @@ public async Task TestRedirect() using var response = await runner.GetResponse("/section/"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("Hello World!", await response.GetContent()); using var redirected = await runner.GetResponse("/section"); - Assert.AreEqual(HttpStatusCode.MovedPermanently, redirected.StatusCode); + await redirected.AssertStatusAsync(HttpStatusCode.MovedPermanently); AssertX.EndsWith("/section/", redirected.GetHeader("Location")!); } diff --git a/Testing/Modules/ListingTests.cs b/Testing/Modules/ListingTests.cs index 289fd756..43b9f6f2 100644 --- a/Testing/Modules/ListingTests.cs +++ b/Testing/Modules/ListingTests.cs @@ -75,7 +75,7 @@ public async Task TestNonExistingFolder() using var response = await runner.GetResponse("/idonotexist/"); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] diff --git a/Testing/Modules/LoadBalancerTests.cs b/Testing/Modules/LoadBalancerTests.cs index 355927fa..1e3fb17d 100644 --- a/Testing/Modules/LoadBalancerTests.cs +++ b/Testing/Modules/LoadBalancerTests.cs @@ -27,7 +27,7 @@ public async Task TestProxy() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("Proxy!", await response.GetContent()); } @@ -41,7 +41,7 @@ public async Task TestRedirect() using var response = await runner.GetResponse("/page"); - Assert.AreEqual(HttpStatusCode.TemporaryRedirect, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.TemporaryRedirect); Assert.AreEqual("http://node/page", response.GetHeader("Location")); } @@ -55,7 +55,7 @@ public async Task TestCustomHandler() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("My Content!", await response.GetContent()); } @@ -95,7 +95,7 @@ public async Task TestNoNodes() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } } diff --git a/Testing/Modules/PageTests.cs b/Testing/Modules/PageTests.cs index d16f2c19..381017b2 100644 --- a/Testing/Modules/PageTests.cs +++ b/Testing/Modules/PageTests.cs @@ -131,7 +131,7 @@ public async Task TestContentInfo() var content = await response.GetContent(); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); AssertX.Contains("My Title", content); AssertX.Contains("", content); @@ -148,7 +148,7 @@ public async Task TestNoContentInfo() var content = await response.GetContent(); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); AssertX.Contains("Untitled Page", content); AssertX.Contains("", content); @@ -207,7 +207,7 @@ public async Task TestRoutingToPath() var content = await response.GetContent(); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); AssertX.Contains("/test/1", content); } } diff --git a/Testing/Modules/Pages/ErrorHandlingTests.cs b/Testing/Modules/Pages/ErrorHandlingTests.cs index 734ff80e..cc22ceb1 100644 --- a/Testing/Modules/Pages/ErrorHandlingTests.cs +++ b/Testing/Modules/Pages/ErrorHandlingTests.cs @@ -22,7 +22,7 @@ public async Task TestErrorPage() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.InternalServerError, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.InternalServerError); } } diff --git a/Testing/Modules/RedirectTests.cs b/Testing/Modules/RedirectTests.cs index 1bb537cf..3a0044a7 100644 --- a/Testing/Modules/RedirectTests.cs +++ b/Testing/Modules/RedirectTests.cs @@ -25,7 +25,7 @@ public async Task TestTemporary() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.TemporaryRedirect, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.TemporaryRedirect); Assert.AreEqual("https://google.de/", response.GetHeader("Location")); } @@ -41,7 +41,7 @@ public async Task TestTemporaryPost() using var response = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.SeeOther, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.SeeOther); Assert.AreEqual("https://google.de/", response.GetHeader("Location")); } @@ -54,7 +54,7 @@ public async Task TestPermanent() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.MovedPermanently, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.MovedPermanently); Assert.AreEqual("https://google.de/", response.GetHeader("Location")); } @@ -70,7 +70,7 @@ public async Task TestPermanentPost() using var response = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.PermanentRedirect, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.PermanentRedirect); Assert.AreEqual("https://google.de/", response.GetHeader("Location")); } diff --git a/Testing/Modules/ReverseProxyTests.cs b/Testing/Modules/ReverseProxyTests.cs index 7dfc3952..3944f4b5 100644 --- a/Testing/Modules/ReverseProxyTests.cs +++ b/Testing/Modules/ReverseProxyTests.cs @@ -196,7 +196,7 @@ public async Task TestHead() using var headed = await runner.GetResponse(headRequest); - Assert.AreEqual(HttpStatusCode.OK, headed.StatusCode); + await headed.AssertStatusAsync(HttpStatusCode.OK); } [TestMethod] @@ -224,7 +224,7 @@ public async Task TestCookies() using var cookied = await client.SendAsync(cookieRequest); - Assert.AreEqual(HttpStatusCode.OK, cookied.StatusCode); + await cookied.AssertStatusAsync(HttpStatusCode.OK); var returned = cookies.GetCookies(new Uri(runner.GetUrl())); @@ -279,7 +279,7 @@ public async Task TestPost() using var response = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("Input", await response.GetContent()); } @@ -394,7 +394,7 @@ public async Task TestBadGateway() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.BadGateway, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.BadGateway); } diff --git a/Testing/Modules/Security/CorsTests.cs b/Testing/Modules/Security/CorsTests.cs index 3d18e567..495ea685 100644 --- a/Testing/Modules/Security/CorsTests.cs +++ b/Testing/Modules/Security/CorsTests.cs @@ -28,7 +28,7 @@ public async Task TestPreflight() using var response = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.NoContent, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NoContent); } [TestMethod] @@ -38,7 +38,7 @@ public async Task TestPermissive() using var response = await runner.GetResponse("/t"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("*", response.GetHeader("Access-Control-Allow-Origin")); @@ -60,7 +60,7 @@ public async Task TestPermissiveWithoutDefaultAuthorizationHeader() using var response = await runner.GetResponse("/t"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("*", response.GetHeader("Access-Control-Allow-Origin")); @@ -82,7 +82,7 @@ public async Task TestRestrictive() using var response = await runner.GetResponse("/t"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.IsFalse(response.Headers.Contains("Access-Control-Allow-Origin")); @@ -108,7 +108,7 @@ public async Task TestCustom() using var response = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("http://google.de", response.GetHeader("Access-Control-Allow-Origin")); diff --git a/Testing/Modules/ServerCaching/PrecompressedContentTest.cs b/Testing/Modules/ServerCaching/PrecompressedContentTest.cs index 0b720e58..d7615a33 100644 --- a/Testing/Modules/ServerCaching/PrecompressedContentTest.cs +++ b/Testing/Modules/ServerCaching/PrecompressedContentTest.cs @@ -30,7 +30,7 @@ public async Task TestContentCanBePreCompressed() using var response = await runner.GetResponse(request); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("br", response.GetContentHeader("Content-Encoding")); } diff --git a/Testing/Modules/ServerCaching/ServerCacheTests.cs b/Testing/Modules/ServerCaching/ServerCacheTests.cs index ca3b42c1..4cc768ca 100644 --- a/Testing/Modules/ServerCaching/ServerCacheTests.cs +++ b/Testing/Modules/ServerCaching/ServerCacheTests.cs @@ -40,14 +40,14 @@ public async Task TestContentIsInvalidated() using var first = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.OK, first.StatusCode); + await first.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("1", await first.GetContent()); FileUtil.WriteText(file, "12"); using var second = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.OK, second.StatusCode); + await second.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("12", await second.GetContent()); } finally @@ -70,14 +70,14 @@ public async Task TestContentNotInvalidated() using var first = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.OK, first.StatusCode); + await first.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("1", await first.GetContent()); FileUtil.WriteText(file, "12"); using var second = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.OK, second.StatusCode); + await second.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("1", await second.GetContent()); } finally @@ -105,7 +105,7 @@ public async Task TestVariationRespected() using var gzipResponse = await runner.GetResponse(gzipRequest); - Assert.AreEqual(HttpStatusCode.OK, gzipResponse.StatusCode); + await gzipResponse.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("gzip", gzipResponse.GetContentHeader("Content-Encoding")); var brRequest = runner.GetRequest(); @@ -114,12 +114,12 @@ public async Task TestVariationRespected() using var brResponse = await runner.GetResponse(brRequest); - Assert.AreEqual(HttpStatusCode.OK, brResponse.StatusCode); + await brResponse.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("br", brResponse.GetContentHeader("Content-Encoding")); using var uncompressedResponse = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.OK, uncompressedResponse.StatusCode); + await uncompressedResponse.AssertStatusAsync(HttpStatusCode.OK); AssertX.IsNullOrEmpty(uncompressedResponse.GetContentHeader("Content-Encoding")); Assert.AreEqual("This is some content!", await uncompressedResponse.GetContent()); } diff --git a/Testing/Modules/SinglePageTests.cs b/Testing/Modules/SinglePageTests.cs index 374b9f2b..6d5421a1 100644 --- a/Testing/Modules/SinglePageTests.cs +++ b/Testing/Modules/SinglePageTests.cs @@ -29,7 +29,7 @@ public async Task TestIndex() using var index = await runner.GetResponse("/"); - Assert.AreEqual(HttpStatusCode.OK, index.StatusCode); + await index.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("text/html", index.GetContentHeader("Content-Type")); var content = await index.GetContent(); @@ -51,7 +51,7 @@ public async Task TestIndexServedWithRouting() using var index = await runner.GetResponse("/some-route/"); - Assert.AreEqual(HttpStatusCode.OK, index.StatusCode); + await index.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("text/html", index.GetContentHeader("Content-Type")); } @@ -62,7 +62,7 @@ public async Task TestNoIndex() using var index = await runner.GetResponse("/"); - Assert.AreEqual(HttpStatusCode.NotFound, index.StatusCode); + await index.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] @@ -76,7 +76,7 @@ public async Task TestFile() using var index = await runner.GetResponse("/some.txt"); - Assert.AreEqual(HttpStatusCode.OK, index.StatusCode); + await index.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("text/plain", index.GetContentHeader("Content-Type")); var content = await index.GetContent(); @@ -91,7 +91,7 @@ public async Task TestNoFile() using var index = await runner.GetResponse("/nope.txt"); - Assert.AreEqual(HttpStatusCode.NotFound, index.StatusCode); + await index.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] diff --git a/Testing/Modules/StaticWebsites/StaticWebsiteTests.cs b/Testing/Modules/StaticWebsites/StaticWebsiteTests.cs index 76ca0ba1..8428902b 100644 --- a/Testing/Modules/StaticWebsites/StaticWebsiteTests.cs +++ b/Testing/Modules/StaticWebsites/StaticWebsiteTests.cs @@ -40,10 +40,10 @@ public async Task TestNoIndex() using var runner = TestRunner.Run(StaticWebsite.From(tree)); using var indexResponse = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.NotFound, indexResponse.StatusCode); + await indexResponse.AssertStatusAsync(HttpStatusCode.NotFound); - using var subIndexResponse = await runner.GetResponse("/sub/"); - Assert.AreEqual(HttpStatusCode.NotFound, subIndexResponse.StatusCode); + using var subIndexResponse = await runner.GetResponse("/sub/"); + await subIndexResponse.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] @@ -70,7 +70,7 @@ public async Task TestNoSitemap() using var response = await runner.GetResponse("/" + Sitemap.FILE_NAME); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] @@ -91,7 +91,7 @@ public async Task TestRobots() using var runner = TestRunner.Run(StaticWebsite.From(VirtualTree.Create())); using var response = await runner.GetResponse("/" + BotInstructions.FILE_NAME); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); } [TestMethod] @@ -101,7 +101,7 @@ public async Task TestNoRobots() using var response = await runner.GetResponse("/" + BotInstructions.FILE_NAME); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] @@ -123,7 +123,7 @@ public async Task TestNoRobotsInSubdirectory() using var response = await runner.GetResponse("/sub/" + BotInstructions.FILE_NAME); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } } diff --git a/Testing/Modules/VirtualHostsTests.cs b/Testing/Modules/VirtualHostsTests.cs index ef6b8602..0c4684e3 100644 --- a/Testing/Modules/VirtualHostsTests.cs +++ b/Testing/Modules/VirtualHostsTests.cs @@ -45,7 +45,7 @@ public async Task TestNoDefault() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } private static async Task TestHost(TestRunner runner, string host, string? expected = null) diff --git a/Testing/Modules/WebserviceTests.cs b/Testing/Modules/WebserviceTests.cs index 42968020..9d0b6570 100644 --- a/Testing/Modules/WebserviceTests.cs +++ b/Testing/Modules/WebserviceTests.cs @@ -105,13 +105,13 @@ public void Empty() { } [TestMethod] public async Task TestEmpty() { - await WithResponse("", r => { Assert.AreEqual(HttpStatusCode.NoContent, r.StatusCode); return Task.CompletedTask; }); + await WithResponse("", async r => { await r.AssertStatusAsync(HttpStatusCode.NoContent); }); } [TestMethod] public async Task TestVoidReturn() { - await WithResponse("nothing", r => { Assert.AreEqual(HttpStatusCode.NoContent, r.StatusCode); return Task.CompletedTask; }); + await WithResponse("nothing", async r => { await r.AssertStatusAsync(HttpStatusCode.NoContent); }); } [TestMethod] @@ -135,7 +135,7 @@ public async Task TestNullableSet() [TestMethod] public async Task TestNullableNotSet() { - await WithResponse("nullable", r => { Assert.AreEqual(HttpStatusCode.NoContent, r.StatusCode); return Task.CompletedTask; }); + await WithResponse("nullable", async r => { await r.AssertStatusAsync(HttpStatusCode.NoContent); }); } [TestMethod] @@ -155,7 +155,7 @@ public async Task TestParam() [TestMethod] public async Task TestConversionFailure() { - await WithResponse("param/abc", r => { Assert.AreEqual(HttpStatusCode.BadRequest, r.StatusCode); return Task.CompletedTask; }); + await WithResponse("param/abc", async r => { await r.AssertStatusAsync(HttpStatusCode.BadRequest); }); } [TestMethod] @@ -181,7 +181,7 @@ public async Task TestEntityWithNoNulls() [TestMethod] public async Task TestNotSupportedUpload() { - await WithResponse("entity", HttpMethod.Post, "123", "bla/blubb", null, r => { Assert.AreEqual(HttpStatusCode.UnsupportedMediaType, r.StatusCode); return Task.CompletedTask; }); + await WithResponse("entity", HttpMethod.Post, "123", "bla/blubb", null, async r => { await r.AssertStatusAsync(HttpStatusCode.UnsupportedMediaType); }); } [TestMethod] @@ -194,13 +194,13 @@ public async Task TestUnsupportedDownloadEnforcesDefault() [TestMethod] public async Task TestWrongMethod() { - await WithResponse("entity", HttpMethod.Put, "123", null, null, r => { Assert.AreEqual(HttpStatusCode.MethodNotAllowed, r.StatusCode); return Task.CompletedTask; }); + await WithResponse("entity", HttpMethod.Put, "123", null, null, async r => { await r.AssertStatusAsync(HttpStatusCode.MethodNotAllowed); }); } [TestMethod] public async Task TestNoMethod() { - await WithResponse("idonotexist", r => { Assert.AreEqual(HttpStatusCode.NotFound, r.StatusCode); return Task.CompletedTask; }); + await WithResponse("idonotexist", async r => { await r.AssertStatusAsync(HttpStatusCode.NotFound); }); } [TestMethod] @@ -240,13 +240,13 @@ await WithResponse("entity", HttpMethod.Post, entity, "text/xml", "text/xml", as [TestMethod] public async Task TestException() { - await WithResponse("exception", r => { Assert.AreEqual(HttpStatusCode.AlreadyReported, r.StatusCode); return Task.CompletedTask; }); + await WithResponse("exception", async r => { await r.AssertStatusAsync(HttpStatusCode.AlreadyReported); }); } [TestMethod] public async Task TestDuplicate() { - await WithResponse("duplicate", r => { Assert.AreEqual(HttpStatusCode.BadRequest, r.StatusCode); return Task.CompletedTask; }); + await WithResponse("duplicate", async r => { await r.AssertStatusAsync(HttpStatusCode.BadRequest); }); } [TestMethod] @@ -258,7 +258,7 @@ public async Task TestWithInstance() using var response = await runner.GetResponse("/t"); - Assert.AreEqual(HttpStatusCode.NoContent, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NoContent); } #endregion diff --git a/Testing/Modules/Webservices/ResultTypeTests.cs b/Testing/Modules/Webservices/ResultTypeTests.cs index 31cab568..53250079 100644 --- a/Testing/Modules/Webservices/ResultTypeTests.cs +++ b/Testing/Modules/Webservices/ResultTypeTests.cs @@ -43,7 +43,7 @@ public async Task ControllerMayReturnTask() using var response = await runner.GetResponse("/t/task"); - Assert.AreEqual(HttpStatusCode.NoContent, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NoContent); } [TestMethod] @@ -53,7 +53,7 @@ public async Task ControllerMayReturnValueTask() using var response = await runner.GetResponse("/t/value-task"); - Assert.AreEqual(HttpStatusCode.NoContent, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NoContent); } [TestMethod] @@ -63,7 +63,7 @@ public async Task ControllerMayReturnGenericTask() using var response = await runner.GetResponse("/t/generic-task"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("Task result", await response.GetContent()); } @@ -74,7 +74,7 @@ public async Task ControllerMayReturnGenericValueTask() using var response = await runner.GetResponse("/t/generic-value-task"); - Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("ValueTask result", await response.GetContent()); } diff --git a/Testing/Modules/WebsiteTests.cs b/Testing/Modules/WebsiteTests.cs index 839d8cfa..ae2cd936 100644 --- a/Testing/Modules/WebsiteTests.cs +++ b/Testing/Modules/WebsiteTests.cs @@ -65,7 +65,7 @@ public async Task TestErrorHandler() using var file = await runner.GetResponse("/blubb"); - Assert.AreEqual(HttpStatusCode.NotFound, file.StatusCode); + await file.AssertStatusAsync(HttpStatusCode.NotFound); Assert.AreEqual("text/html; charset=UTF-8", file.GetContentHeader("Content-Type"), StringComparer.InvariantCultureIgnoreCase); var content = await file.GetContent(); @@ -85,16 +85,16 @@ public async Task TestDevelopmentResourcesWithoutBundle() .Start(); using var style = await runner.GetResponse("/styles/custom.css"); - Assert.AreEqual(HttpStatusCode.OK, style.StatusCode); + await style.AssertStatusAsync(HttpStatusCode.OK); using var script = await runner.GetResponse("/scripts/custom.js"); - Assert.AreEqual(HttpStatusCode.OK, script.StatusCode); + await script.AssertStatusAsync(HttpStatusCode.OK); using var noStyle = await runner.GetResponse("/styles/no.css"); - Assert.AreEqual(HttpStatusCode.NotFound, noStyle.StatusCode); + await noStyle.AssertStatusAsync(HttpStatusCode.NotFound); using var noScript = await runner.GetResponse("/scripts/no.js"); - Assert.AreEqual(HttpStatusCode.NotFound, noScript.StatusCode); + await noScript.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] @@ -103,10 +103,10 @@ public async Task TestBundleNotServed() using var runner = TestRunner.Run(GetWebsite()); using var noStyle = await runner.GetResponse("/styles/custom.css"); - Assert.AreEqual(HttpStatusCode.NotFound, noStyle.StatusCode); + await noStyle.AssertStatusAsync(HttpStatusCode.NotFound); using var noScript = await runner.GetResponse("/scripts/custom.js"); - Assert.AreEqual(HttpStatusCode.NotFound, noScript.StatusCode); + await noScript.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] @@ -137,7 +137,7 @@ public async Task TestStaticMenu() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] @@ -151,7 +151,7 @@ public async Task TestDynamicMenu() using var response = await runner.GetResponse(); - Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); + await response.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] @@ -160,10 +160,10 @@ public async Task TestResources() using var runner = TestRunner.Run(GetWebsite()); using var file = await runner.GetResponse("/resources/some.txt"); - Assert.AreEqual(HttpStatusCode.OK, file.StatusCode); + await file.AssertStatusAsync(HttpStatusCode.OK); using var noFile = await runner.GetResponse("/resources/other.txt"); - Assert.AreEqual(HttpStatusCode.NotFound, noFile.StatusCode); + await noFile.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] @@ -172,7 +172,7 @@ public async Task TestFavicon() using var runner = TestRunner.Run(GetWebsite()); using var file = await runner.GetResponse("/favicon.ico"); - Assert.AreEqual(HttpStatusCode.OK, file.StatusCode); + await file.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("image/x-icon", file.GetContentHeader("Content-Type")); } @@ -183,7 +183,7 @@ public async Task TestSitemap() using var file = await runner.GetResponse("/" + Sitemap.FILE_NAME); - Assert.AreEqual(HttpStatusCode.OK, file.StatusCode); + await file.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("text/xml", file.GetContentHeader("Content-Type")); } @@ -194,7 +194,7 @@ public async Task TestRobots() using var file = await runner.GetResponse("/" + BotInstructions.FILE_NAME); - Assert.AreEqual(HttpStatusCode.OK, file.StatusCode); + await file.AssertStatusAsync(HttpStatusCode.OK); Assert.AreEqual("text/plain", file.GetContentHeader("Content-Type")); } @@ -204,13 +204,13 @@ public async Task TestCoreWebsiteWithoutResources() using var runner = TestRunner.Run(); using var robots = await runner.GetResponse("/" + BotInstructions.FILE_NAME); - Assert.AreEqual(HttpStatusCode.NotFound, robots.StatusCode); + await robots.AssertStatusAsync(HttpStatusCode.NotFound); using var favicon = await runner.GetResponse("/favicon.ico"); - Assert.AreEqual(HttpStatusCode.NotFound, favicon.StatusCode); + await favicon.AssertStatusAsync(HttpStatusCode.NotFound); using var sitemap = await runner.GetResponse("/sitemaps/" + Sitemap.FILE_NAME); - Assert.AreEqual(HttpStatusCode.NotFound, sitemap.StatusCode); + await sitemap.AssertStatusAsync(HttpStatusCode.NotFound); } [TestMethod] @@ -279,7 +279,7 @@ public async Task TestAutoReload() using var script = await runner.GetResponse("/scripts/genhttp-modules-autoreload.js"); - Assert.AreEqual(HttpStatusCode.OK, script.StatusCode); + await script.AssertStatusAsync(HttpStatusCode.OK); AssertX.Contains("checkForModifications", await script.GetContent()); }