From 8c0baf0f3de759d5a1bd1add4ab27edb1370322e Mon Sep 17 00:00:00 2001 From: David Perfors Date: Sat, 6 Jun 2026 11:59:46 +0200 Subject: [PATCH] Removed WithFilter, WithRequestHeader and WithContentHeader methods. --- CHANGELOG.md | 6 + .../HttpRequestMessageAsserter.cs | 18 +- .../HttpRequestMessagesCheckExtensions.cs | 65 ++---- .../IHttpRequestMessagesCheck.cs | 6 +- .../Utils/MessageBuilder.cs | 12 +- .../WithFilter.cs | 90 -------- .../WithContentHeaderName.cs | 137 ----------- .../WithContentHeaderNameAndValue.cs | 212 ------------------ .../WithRequestHeaderName.cs | 114 ---------- .../WithRequestHeaderNameAndValue.cs | 190 ---------------- .../Utils/MessageBuilderTests.cs | 42 +--- version.json | 2 +- 12 files changed, 41 insertions(+), 853 deletions(-) delete mode 100644 test/TestableHttpClient.Tests/HttpRequestMessageAsserterTests/WithFilter.cs delete mode 100644 test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithContentHeaderName.cs delete mode 100644 test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithContentHeaderNameAndValue.cs delete mode 100644 test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithRequestHeaderName.cs delete mode 100644 test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithRequestHeaderNameAndValue.cs diff --git a/CHANGELOG.md b/CHANGELOG.md index c780cb95..51b50ca3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ All notable changes to TestableHttpClient will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.13] - unplanned +### Removed +- The methods `WithRequestHeader` and `WithContentHeader` have been removed, please use `WithHeader` instead. +- The `WithFilter` method is removed. + ## [0.12] - 2026-06-06 ### Deprecated - The methods `WithRequestHeader` and `WithContentHeader` are deprecated, please use `WithHeader` instead. @@ -307,6 +312,7 @@ this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm - Automatically build project when pushing changes to github and when creating a pull request - Automatically deploy to NuGet when creating a tag in github +[0.12]: https://github.com/testablehttpclient/TestableHttpClient/compare/v0.12...v0.13 [0.12]: https://github.com/testablehttpclient/TestableHttpClient/compare/v0.11...v0.12 [0.11]: https://github.com/testablehttpclient/TestableHttpClient/compare/v0.10...v0.11 [0.10]: https://github.com/testablehttpclient/TestableHttpClient/compare/v0.9...v0.10 diff --git a/src/TestableHttpClient/HttpRequestMessageAsserter.cs b/src/TestableHttpClient/HttpRequestMessageAsserter.cs index 39a500d6..2336ad4c 100644 --- a/src/TestableHttpClient/HttpRequestMessageAsserter.cs +++ b/src/TestableHttpClient/HttpRequestMessageAsserter.cs @@ -5,8 +5,6 @@ /// internal sealed class HttpRequestMessageAsserter : IHttpRequestMessagesCheck { - private readonly List _expectedConditions = new(); - private readonly RequestBuilder expectedRequestBuilder; /// @@ -58,7 +56,7 @@ internal HttpRequestMessageAsserter Assert(int? expectedCount = null) if (!pass) { - var message = MessageBuilder.BuildMessage(expectedCount, actualCount, expectedRequest, _expectedConditions); + var message = MessageBuilder.BuildMessage(expectedCount, actualCount, expectedRequest); throw new HttpRequestMessageAssertionException(message); } @@ -72,7 +70,7 @@ internal HttpRequestMessageAsserter Assert(int? expectedCount = null) /// The name of the condition, used in the exception message. /// The for further assertions. [AssertionMethod] - [Obsolete("WithFilter will be removed, since it should no longer be necesary to use.")] + [Obsolete("WithFilter will be removed, since it should no longer be necesary to use.", true)] public IHttpRequestMessagesCheck WithFilter(Func requestFilter, string condition) => WithFilter(requestFilter, null, condition); /// @@ -83,21 +81,13 @@ internal HttpRequestMessageAsserter Assert(int? expectedCount = null) /// The name of the condition, used in the exception message. /// The for further assertions. [AssertionMethod] - [Obsolete("WithFilter will be removed, since it should no longer be necesary to use.")] + [Obsolete("WithFilter will be removed, since it should no longer be necesary to use.", true)] public IHttpRequestMessagesCheck WithFilter(Func requestFilter, int expectedNumberOfRequests, string condition) => WithFilter(requestFilter, (int?)expectedNumberOfRequests, condition); [AssertionMethod] - [Obsolete("WithFilter will be removed, since it should no longer be necesary to use.")] + [Obsolete("WithFilter will be removed, since it should no longer be necesary to use.", true)] public IHttpRequestMessagesCheck WithFilter(Func requestFilter, int? expectedNumberOfRequests, string condition) { - if (!string.IsNullOrEmpty(condition)) - { - _expectedConditions.Add(condition); - } - - Requests = Requests.Where(requestFilter); - Assert(expectedNumberOfRequests); - return this; } diff --git a/src/TestableHttpClient/HttpRequestMessagesCheckExtensions.cs b/src/TestableHttpClient/HttpRequestMessagesCheckExtensions.cs index e3a2e252..0f2f24cf 100644 --- a/src/TestableHttpClient/HttpRequestMessagesCheckExtensions.cs +++ b/src/TestableHttpClient/HttpRequestMessagesCheckExtensions.cs @@ -9,13 +9,8 @@ public static class HttpRequestMessagesCheckExtensions /// The implementation that hold all the request messages. /// The name of the header that is expected. /// The for further assertions. - [Obsolete("Use WithHeader instead.")] - public static IHttpRequestMessagesCheck WithRequestHeader(this IHttpRequestMessagesCheck check, string headerName) - { - Guard.ThrowIfNull(check); - - return check.WithHeader(headerName); - } + [Obsolete("Use WithHeader instead.", true)] + public static IHttpRequestMessagesCheck WithRequestHeader(this IHttpRequestMessagesCheck check, string headerName) => check; /// /// Asserts whether requests were made with a specific header name. Values are ignored. @@ -25,13 +20,8 @@ public static IHttpRequestMessagesCheck WithRequestHeader(this IHttpRequestMessa /// The name of the header that is expected. /// The expected number of requests. /// The for further assertions. - [Obsolete("Use WithHeader instead.")] - public static IHttpRequestMessagesCheck WithRequestHeader(this IHttpRequestMessagesCheck check, string headerName, int expectedNumberOfRequests) - { - Guard.ThrowIfNull(check); - - return check.WithHeader(headerName, expectedNumberOfRequests); - } + [Obsolete("Use WithHeader instead.", true)] + public static IHttpRequestMessagesCheck WithRequestHeader(this IHttpRequestMessagesCheck check, string headerName, int expectedNumberOfRequests) => check; /// /// Asserts whether requests were made with a specific header name and value. @@ -41,13 +31,8 @@ public static IHttpRequestMessagesCheck WithRequestHeader(this IHttpRequestMessa /// The name of the header that is expected. /// The value of the expected header, supports wildcards. /// The for further assertions. - [Obsolete("Use WithHeader instead.")] - public static IHttpRequestMessagesCheck WithRequestHeader(this IHttpRequestMessagesCheck check, string headerName, string headerValue) - { - Guard.ThrowIfNull(check); - - return check.WithHeader(headerName, headerValue); - } + [Obsolete("Use WithHeader instead.", true)] + public static IHttpRequestMessagesCheck WithRequestHeader(this IHttpRequestMessagesCheck check, string headerName, string headerValue) => check; /// /// Asserts whether requests were made with a specific header name and value. @@ -58,13 +43,8 @@ public static IHttpRequestMessagesCheck WithRequestHeader(this IHttpRequestMessa /// The value of the expected header, supports wildcards. /// The expected number of requests. /// The for further assertions. - [Obsolete("Use WithHeader instead.")] - public static IHttpRequestMessagesCheck WithRequestHeader(this IHttpRequestMessagesCheck check, string headerName, string headerValue, int expectedNumberOfRequests) - { - Guard.ThrowIfNull(check); - - return check.WithHeader(headerName, headerValue, expectedNumberOfRequests); - } + [Obsolete("Use WithHeader instead.", true)] + public static IHttpRequestMessagesCheck WithRequestHeader(this IHttpRequestMessagesCheck check, string headerName, string headerValue, int expectedNumberOfRequests) => check; /// /// Asserts whether requests were made with a specific header name. Values are ignored. @@ -73,13 +53,8 @@ public static IHttpRequestMessagesCheck WithRequestHeader(this IHttpRequestMessa /// The implementation that hold all the request messages. /// The name of the header that is expected. /// The for further assertions. - [Obsolete("Use WithHeader instead.")] - public static IHttpRequestMessagesCheck WithContentHeader(this IHttpRequestMessagesCheck check, string headerName) - { - Guard.ThrowIfNull(check); - - return check.WithHeader(headerName); - } + [Obsolete("Use WithHeader instead.", true)] + public static IHttpRequestMessagesCheck WithContentHeader(this IHttpRequestMessagesCheck check, string headerName) => check; /// /// Asserts whether requests were made with a specific header name. Values are ignored. @@ -89,13 +64,8 @@ public static IHttpRequestMessagesCheck WithContentHeader(this IHttpRequestMessa /// The name of the header that is expected. /// The expected number of requests. /// The for further assertions. - [Obsolete("Use WithHeader instead.")] - public static IHttpRequestMessagesCheck WithContentHeader(this IHttpRequestMessagesCheck check, string headerName, int expectedNumberOfRequests) - { - Guard.ThrowIfNull(check); - - return check.WithHeader(headerName, expectedNumberOfRequests); - } + [Obsolete("Use WithHeader instead.", true)] + public static IHttpRequestMessagesCheck WithContentHeader(this IHttpRequestMessagesCheck check, string headerName, int expectedNumberOfRequests) => check; /// /// Asserts whether requests were made with a specific header name and value. @@ -105,13 +75,8 @@ public static IHttpRequestMessagesCheck WithContentHeader(this IHttpRequestMessa /// The name of the header that is expected. /// The value of the expected header, supports wildcards. /// The for further assertions. - [Obsolete("Use WithHeader instead.")] - public static IHttpRequestMessagesCheck WithContentHeader(this IHttpRequestMessagesCheck check, string headerName, string headerValue) - { - Guard.ThrowIfNull(check); - - return check.WithHeader(headerName, headerValue); - } + [Obsolete("Use WithHeader instead.", true)] + public static IHttpRequestMessagesCheck WithContentHeader(this IHttpRequestMessagesCheck check, string headerName, string headerValue) => check; /// /// Asserts whether requests were made with a specific header name and value. @@ -122,7 +87,7 @@ public static IHttpRequestMessagesCheck WithContentHeader(this IHttpRequestMessa /// The value of the expected header, supports wildcards. /// The expected number of requests. /// The for further assertions. - [Obsolete("Use WithHeader instead.")] + [Obsolete("Use WithHeader instead.", true)] public static IHttpRequestMessagesCheck WithContentHeader(this IHttpRequestMessagesCheck check, string headerName, string headerValue, int expectedNumberOfRequests) { Guard.ThrowIfNull(check); diff --git a/src/TestableHttpClient/IHttpRequestMessagesCheck.cs b/src/TestableHttpClient/IHttpRequestMessagesCheck.cs index 50784112..5a183cb5 100644 --- a/src/TestableHttpClient/IHttpRequestMessagesCheck.cs +++ b/src/TestableHttpClient/IHttpRequestMessagesCheck.cs @@ -16,7 +16,7 @@ public interface IHttpRequestMessagesCheck /// The filter to filter requests with before asserting. /// The name of the condition, used in the exception message. /// The for further assertions. - [Obsolete("WithFilter will be made removed, since it should no longer be necesary to use.")] + [Obsolete("WithFilter will be made removed, since it should no longer be necesary to use.", true)] public IHttpRequestMessagesCheck WithFilter(Func requestFilter, string condition); /// @@ -26,7 +26,7 @@ public interface IHttpRequestMessagesCheck /// The expected number of requests. /// The name of the condition, used in the exception message. /// The for further assertions. - [Obsolete("WithFilter will be made removed, since it should no longer be necesary to use.")] + [Obsolete("WithFilter will be made removed, since it should no longer be necesary to use.", true)] public IHttpRequestMessagesCheck WithFilter(Func requestFilter, int expectedNumberOfRequests, string condition); /// @@ -36,7 +36,7 @@ public interface IHttpRequestMessagesCheck /// The expected number of requests, when null is passed "at least one" is presumed. /// The name of the condition, used in the exception message. /// The for further assertions. - [Obsolete("WithFilter will be made removed, since it should no longer be necesary to use.")] + [Obsolete("WithFilter will be made removed, since it should no longer be necesary to use.", true)] public IHttpRequestMessagesCheck WithFilter(Func requestFilter, int? expectedNumberOfRequests, string condition); /// diff --git a/src/TestableHttpClient/Utils/MessageBuilder.cs b/src/TestableHttpClient/Utils/MessageBuilder.cs index 84650bb6..7b6911ca 100644 --- a/src/TestableHttpClient/Utils/MessageBuilder.cs +++ b/src/TestableHttpClient/Utils/MessageBuilder.cs @@ -5,7 +5,7 @@ namespace TestableHttpClient.Utils; internal static class MessageBuilder { - internal static string BuildMessage(int? expectedCount, int actualCount, Request expectedRequest, IEnumerable conditions) + internal static string BuildMessage(int? expectedCount, int actualCount, Request expectedRequest) { var pass = expectedCount switch { @@ -60,12 +60,6 @@ internal static string BuildMessage(int? expectedCount, int actualCount, Request content = contentBuilder.ToString(); } - var expectedConditions = string.Empty; - if (conditions is not null && conditions.Any()) - { - expectedConditions = $" with {string.Join(", ", conditions)}"; - } - var actualMessage = actualCount switch { 0 => "no requests were made", @@ -75,8 +69,8 @@ internal static string BuildMessage(int? expectedCount, int actualCount, Request return pass switch { - true => $"Expected {expectedMessage} to be made{requestUri}{headers}{content}{expectedConditions}, and {actualMessage}.", - false => $"Expected {expectedMessage} to be made{requestUri}{headers}{content}{expectedConditions}, but {actualMessage}." + true => $"Expected {expectedMessage} to be made{requestUri}{headers}{content}, and {actualMessage}.", + false => $"Expected {expectedMessage} to be made{requestUri}{headers}{content}, but {actualMessage}." }; } diff --git a/test/TestableHttpClient.Tests/HttpRequestMessageAsserterTests/WithFilter.cs b/test/TestableHttpClient.Tests/HttpRequestMessageAsserterTests/WithFilter.cs deleted file mode 100644 index 3aa86ed6..00000000 --- a/test/TestableHttpClient.Tests/HttpRequestMessageAsserterTests/WithFilter.cs +++ /dev/null @@ -1,90 +0,0 @@ -namespace TestableHttpClient.Tests.HttpRequestMessageAsserterTests; - -[Obsolete("WithFilter will be made internal, since it should no longer be necesary to use.")] -public sealed class WithFilter -{ - [Fact] - public void WithFilter_NullPredicate_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = new([]); - var exception = Assert.Throws(() => sut.WithFilter(null!, "check")); - Assert.Equal("predicate", exception.ParamName); - } - - [Fact] - public void WithFilter_PredicateThatDoesNotMatchAnyRequests_ThrowsAssertionException() - { - using HttpRequestMessage request = new(HttpMethod.Get, "https://example.com"); - HttpRequestMessageAsserter sut = new([request]); - - var exception = Assert.Throws(() => sut.WithFilter(x => x == null, string.Empty)); - Assert.Equal("Expected at least one request to be made, but no requests were made.", exception.Message); - } - - [Fact] - public void WithFilter_PredicateThatDoesNotMatchAnyRequestsAndMessageIsGiven_ThrowsAssertionException() - { - using HttpRequestMessage request = new(HttpMethod.Get, "https://example.com"); - HttpRequestMessageAsserter sut = new([request]); - - var exception = Assert.Throws(() => sut.WithFilter(x => x == null, "custom check")); - Assert.Equal("Expected at least one request to be made with custom check, but no requests were made.", exception.Message); - } - - [Fact] - public void WithFilter_PredicateThatDoesMatchAnyRequests_DoesNotThrow() - { - using HttpRequestMessage request = new(HttpMethod.Get, "https://example.com"); - HttpRequestMessageAsserter sut = new([request]); - - sut.WithFilter(x => x != null, string.Empty); - } - - [Fact] - public void WithFilter_WithRequestExpectations_NullPredicate_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = new([]); - Assert.Throws("predicate", () => sut.WithFilter(null!, 1, "check")); - } - - [Fact] - public void WithFilter_WithRequestExpectation_PredicateThatDoesNotMatchAnyRequests_ThrowsAssertionException() - { - using HttpRequestMessage request = new(HttpMethod.Get, "https://example.com"); - HttpRequestMessageAsserter sut = new([request]); - - var exception = Assert.Throws(() => sut.WithFilter(x => x == null, 1, string.Empty)); - Assert.Equal("Expected one request to be made, but no requests were made.", exception.Message); - } - - [Fact] - public void WithFilter_WithRequestExpectation_PredicateThatDoesNotMatchAnyRequestsAndMessageIsGiven_ThrowsAssertionException() - { - using HttpRequestMessage request = new(HttpMethod.Get, "https://example.com"); - HttpRequestMessageAsserter sut = new([request]); - - var exception = Assert.Throws(() => sut.WithFilter(x => x == null, 1, "custom check")); - Assert.Equal("Expected one request to be made with custom check, but no requests were made.", exception.Message); - } - - [Fact] - public void WithFilter_WithRequestExpectation_PredicateThatDoesMatchAnyRequests_DoesNotThrow() - { - using HttpRequestMessage request = new(HttpMethod.Get, "https://example.com"); - HttpRequestMessageAsserter sut = new([request]); - - sut.WithFilter(x => x != null, 1, string.Empty); - } - - [Fact] - public void WithFilter_WithDisposedRequestContent_DoesThrowSensibleException() - { - StringContent content = new(""); - content.Dispose(); - using HttpRequestMessage request = new() { Content = content }; - HttpRequestMessageAsserter sut = new([request]); - - var exception = Assert.Throws(() => sut.WithContent("test", 1)); - Assert.Equal("Can't validate requests, because one or more requests have content that is already disposed.", exception.Message); - } -} diff --git a/test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithContentHeaderName.cs b/test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithContentHeaderName.cs deleted file mode 100644 index fbcb2c99..00000000 --- a/test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithContentHeaderName.cs +++ /dev/null @@ -1,137 +0,0 @@ -namespace TestableHttpClient.Tests.HttpRequestMessagesCheckExtensionsTests; - -[Obsolete("Use WithHeader")] -public sealed class WithContentHeaderName -{ - [Fact] - public void WithContentHeader_WithoutNumberOfRequests_NullCheck_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = null!; - - var exception = Assert.Throws(() => sut.WithContentHeader("someHeader")); - - Assert.Equal("check", exception.ParamName); - } - - [Fact] - public void WithContentHeader_WithNumberOfRequests_NullCheck_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = null!; - - var exception = Assert.Throws(() => sut.WithContentHeader("someHeader", 1)); - - Assert.Equal("check", exception.ParamName); - } - - [Fact] - public void WithContentHeader_WithoutNumberOfRequests_NullHeaderName_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithContentHeader(null!)); - - Assert.Equal("headerName", exception.ParamName); - } - - [Fact] - public void WithContentHeader_WithoutNumberOfRequests_EmptyHeaderName_ThrowsArgumentException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithContentHeader(string.Empty)); - - Assert.Equal("headerName", exception.ParamName); - } - - [Fact] - public void WithContentHeader_WithNumberOfRequests_NullHeaderName_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithContentHeader(null!, 1)); - - Assert.Equal("headerName", exception.ParamName); - } - - [Fact] - public void WithContentHeader_WithNumberOfRequests_EmptyHeaderName_ThrowsArgumentException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithContentHeader(string.Empty, 1)); - - Assert.Equal("headerName", exception.ParamName); - } - - [Fact] - public void WithMatchingContentHeader_WithoutNumberOfRequests_DoesNotThrow() - { - using HttpRequestMessage request = new() - { - Content = new StringContent("") - }; - request.Content.Headers.ContentType = new("application/json"); - HttpRequestMessageAsserter sut = new([request]); - - sut.WithContentHeader("Content-Type"); - } - - [Fact] - public void WithNoContent_WithoutNumberOfRequests_ThrowsHttpRequestMessageAssertionException() - { - using HttpRequestMessage request = new(); - - HttpRequestMessageAsserter sut = new([request]); - - Assert.Throws(() => sut.WithContentHeader("Content-Type")); - } - - [Fact] - public void WithNotMatchingContentHeader_WithoutNumberOfRequests_ThrowsHttpRequestMessageAssertionException() - { - using HttpRequestMessage request = new() - { - Content = new StringContent("") - }; - request.Content.Headers.ContentType = new("application/json"); - HttpRequestMessageAsserter sut = new([request]); - - Assert.Throws(() => sut.WithContentHeader("Content-Disposition")); - } - - [Fact] - public void WithContentHeader_WithNumberOfRequests_DoesNotThrow() - { - using HttpRequestMessage request = new() - { - Content = new StringContent("") - }; - request.Content.Headers.ContentType = new("application/json"); - HttpRequestMessageAsserter sut = new([request]); - - sut.WithContentHeader("Content-Type", 1); - } - - [Fact] - public void WithNoContent_WithNumberOfRequests_ThrowsHttpRequestMessageAssertionException() - { - using HttpRequestMessage request = new(); - - HttpRequestMessageAsserter sut = new([request, request]); - - Assert.Throws(() => sut.WithContentHeader("Content-Type", 2)); - } - - [Fact] - public void WithNotMatchingContentHeader_WithNumberOfRequests_ThrowsHttpRequestMessageAssertionException() - { - using HttpRequestMessage request = new() - { - Content = new StringContent("") - }; - request.Content.Headers.ContentType = new("application/json"); - HttpRequestMessageAsserter sut = new([request, request]); - - Assert.Throws(() => sut.WithContentHeader("Content-Disposition", 2)); - } -} diff --git a/test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithContentHeaderNameAndValue.cs b/test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithContentHeaderNameAndValue.cs deleted file mode 100644 index cf081060..00000000 --- a/test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithContentHeaderNameAndValue.cs +++ /dev/null @@ -1,212 +0,0 @@ -namespace TestableHttpClient.Tests.HttpRequestMessagesCheckExtensionsTests; - -[Obsolete("Use WithHeader")] -public sealed class WithContentHeaderNameAndValue -{ - [Fact] - public void WithContentHeaderNameAndValue_WithoutNumberOfRequests_NullCheck_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = null!; - - var exception = Assert.Throws(() => sut.WithContentHeader("someHeader", "someValue")); - - Assert.Equal("check", exception.ParamName); - } - - [Fact] - public void WithContentHeaderNameAndValue_WithNumberOfRequests_NullCheck_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = null!; - - var exception = Assert.Throws(() => sut.WithContentHeader("someHeader", "someValue", 1)); - - Assert.Equal("check", exception.ParamName); - } - - [Fact] - public void WithContentHeaderNameAndValue_WithoutNumberOfRequests_NullHeaderName_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithContentHeader(null!, "someValue")); - - Assert.Equal("headerName", exception.ParamName); - } - - [Fact] - public void WithContentHeaderNameAndValue_WithoutNumberOfRequests_EmptyHeaderName_ThrowsArgumentException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithContentHeader(string.Empty, "someValue")); - - Assert.Equal("headerName", exception.ParamName); - } - - [Fact] - public void WithContentHeaderNameAndValue_WithNumberOfRequests_NullHeaderName_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithContentHeader(null!, "someValue", 1)); - - Assert.Equal("headerName", exception.ParamName); - } - - [Fact] - public void WithContentHeaderNameAndValue_WithNumberOfRequests_EmptyHeaderName_ThrowsArgumentException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithContentHeader(string.Empty, "someValue", 1)); - - Assert.Equal("headerName", exception.ParamName); - } - - [Fact] - public void WithContentHeaderNameAndValue_WithoutNumberOfRequests_NullValue_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithContentHeader("someHeader", null!)); - - Assert.Equal("headerValue", exception.ParamName); - } - - [Fact] - public void WithContentHeaderNameAndValue_WithoutNumberOfRequests_EmptyValue_ThrowsArgumentException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithContentHeader("someHeader", string.Empty)); - - Assert.Equal("headerValue", exception.ParamName); - } - - [Fact] - public void WithContentHeaderNameAndValue_WithNumberOfRequests_NullValue_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithContentHeader("someHeader", null!, 1)); - - Assert.Equal("headerValue", exception.ParamName); - } - - [Fact] - public void WithContentHeaderNameAndValue_WithNumberOfRequests_EmptyValue_ThrowsArgumentException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithContentHeader("someHeader", string.Empty, 1)); - - Assert.Equal("headerValue", exception.ParamName); - } - - [Theory] - [InlineData("*")] - [InlineData("application/*")] - [InlineData("application/json*")] - [InlineData("application/json; charset=utf-8")] - public void WithMatchingContentHeaderNameAndValue_WithoutNumberOfRequests_DoesNotThrow(string headerValue) - { - using HttpRequestMessage request = new(); - request.Content = new StringContent("", Encoding.UTF8, "application/json"); - - HttpRequestMessageAsserter sut = new([request]); - - sut.WithContentHeader("Content-Type", headerValue); - } - - [Theory] - [InlineData("*")] - [InlineData("application/*")] - [InlineData("application/json*")] - [InlineData("application/json; charset=utf-8")] - public void WithContentHeaderNameAndValue_WithNumberOfRequests_DoesNotThrow(string headerValue) - { - using HttpRequestMessage request = new(); - request.Content = new StringContent("", Encoding.UTF8, "application/json"); - - HttpRequestMessageAsserter sut = new([request, request]); - - sut.WithContentHeader("Content-Type", headerValue, 2); - } - - [Fact] - public void WithNoContent_WithoutNumberOfRequests_ThrowsHttpRequestMessageAssertionException() - { - using HttpRequestMessage request = new(); - request.Content = null; - - HttpRequestMessageAsserter sut = new([request]); - - Assert.Throws(() => sut.WithContentHeader("Content-Type", "application/json*")); - } - - [Fact] - public void WithNoContent_WithNumberOfRequests_ThrowsHttpRequestMessageAssertionException() - { - using HttpRequestMessage request = new(); - request.Content = null; - - HttpRequestMessageAsserter sut = new([request, request]); - - Assert.Throws(() => sut.WithContentHeader("Content-Type", "application/json*", 2)); - } - - [Fact] - public void WithNotMatchingContentHeaderNameAndMatchingValue_WithoutNumberOfRequests_ThrowsHttpRequestMessageAssertionException() - { - using HttpRequestMessage request = new(); - request.Content = new StringContent("", Encoding.UTF8, "application/json"); - - HttpRequestMessageAsserter sut = new([request]); - - Assert.Throws(() => sut.WithContentHeader("Host", "application/json*")); - } - - [Fact] - public void WithNotMatchingContentHeaderNameAndMatchingValue_WithNumberOfRequests_ThrowsHttpRequestMessageAssertionException() - { - using HttpRequestMessage request = new(); - request.Content = new StringContent("", Encoding.UTF8, "application/json"); - - HttpRequestMessageAsserter sut = new([request, request]); - - Assert.Throws(() => sut.WithContentHeader("Host", "application/json*", 2)); - } - - [Fact] - public void WithMatchingContentHeaderNameAndNotMatchingValue_WithoutNumberOfRequests_ThrowsHttpRequestMessageAssertionException() - { - using HttpRequestMessage request = new(); - request.Content = new StringContent("", Encoding.UTF8, "application/json"); - - HttpRequestMessageAsserter sut = new([request]); - - Assert.Throws(() => sut.WithContentHeader("Content-Type", "text/yaml*")); - } - - [Fact] - public void WithMatchingContentHeaderNameAndNotMatchingValue_WithNumberOfRequests_ThrowsHttpRequestMessageAssertionException() - { - using HttpRequestMessage request = new(); - request.Content = new StringContent("", Encoding.UTF8, "application/json"); - - HttpRequestMessageAsserter sut = new([request, request]); - - Assert.Throws(() => sut.WithContentHeader("Content-Type", "text/yaml*", 2)); - } - - [Fact] - public void WithMatchingContentHeaderNameAndMatchingValue_WithNotMatchingNumberOfRequests_ThrowsHttpRequestMessageAssertionException() - { - using HttpRequestMessage request = new(); - request.Content = new StringContent("", Encoding.UTF8, "application/json"); - - HttpRequestMessageAsserter sut = new([request]); - - Assert.Throws(() => sut.WithContentHeader("Content-Type", "application/json*", 2)); - } -} diff --git a/test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithRequestHeaderName.cs b/test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithRequestHeaderName.cs deleted file mode 100644 index 8f2b8f3b..00000000 --- a/test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithRequestHeaderName.cs +++ /dev/null @@ -1,114 +0,0 @@ -namespace TestableHttpClient.Tests.HttpRequestMessagesCheckExtensionsTests; - -[Obsolete("Use WithHeader")] -public sealed class WithRequestHeaderName -{ - [Fact] - public void WithRequestHeader_WithoutNumberOfRequests_NullCheck_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = null!; - - var exception = Assert.Throws(() => sut.WithRequestHeader("host")); - - Assert.Equal("check", exception.ParamName); - } - - [Fact] - public void WithRequestHeader_WithNumberOfRequests_NullCheck_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = null!; - - var exception = Assert.Throws(() => sut.WithRequestHeader("host", 1)); - - Assert.Equal("check", exception.ParamName); - } - - [Fact] - public void WithRequestHeader_WithoutNumberOfRequests_NullHeaderName_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithRequestHeader(null!)); - - Assert.Equal("headerName", exception.ParamName); - } - - [Fact] - public void WithRequestHeader_WithoutNumberOfRequests_EmptyHeaderName_ThrowsArgumentException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithRequestHeader(string.Empty)); - - Assert.Equal("headerName", exception.ParamName); - } - - [Fact] - public void WithRequestHeader_WithNumberOfRequests_NullHeaderName_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithRequestHeader(null!, 1)); - - Assert.Equal("headerName", exception.ParamName); - } - - [Fact] - public void WithRequestHeader_WithNumberOfRequests_EmptyHeaderName_ThrowsArgumentException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithRequestHeader(string.Empty, 1)); - - Assert.Equal("headerName", exception.ParamName); - } - - [Fact] - public void WithMatchingRequestHeader_WithoutNumberOfRequests_DoesNotThrow() - { - using HttpRequestMessage request = new(); - request.Headers.Host = "example.com"; - HttpRequestMessageAsserter sut = new([request]); - - sut.WithRequestHeader("Host"); - } - - [Fact] - public void WithNotMatchingRequestHeader_WithoutNumberOfRequests_ThrowsHttpRequestMessageAssertionException() - { - using HttpRequestMessage request = new(); - HttpRequestMessageAsserter sut = new([request]); - - Assert.Throws(() => sut.WithRequestHeader("host")); - } - - [Fact] - public void WithRequestHeader_WithNumberOfRequests_DoesNotThrow() - { - using HttpRequestMessage request = new(); - request.Headers.Host = "example.com"; - - HttpRequestMessageAsserter sut = new([request, request]); - - sut.WithRequestHeader("Host", 2); - } - - [Fact] - public void WithNotMatchingRequestHeader_WithNumberOfRequests_ThrowsHttpRequestMessageAssertionException() - { - using HttpRequestMessage request = new(); - HttpRequestMessageAsserter sut = new([request, request]); - - Assert.Throws(() => sut.WithRequestHeader("Host", 2)); - } - - [Fact] - public void WithMatchingRequestHeader_WithNotMatchingNumberOfRequests_ThrowsHttpRequestMessageAssertionException() - { - using HttpRequestMessage request = new(); - request.Headers.Host = "example.com"; - HttpRequestMessageAsserter sut = new([request]); - - Assert.Throws(() => sut.WithRequestHeader("Host", 2)); - } -} diff --git a/test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithRequestHeaderNameAndValue.cs b/test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithRequestHeaderNameAndValue.cs deleted file mode 100644 index 3012e102..00000000 --- a/test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithRequestHeaderNameAndValue.cs +++ /dev/null @@ -1,190 +0,0 @@ -namespace TestableHttpClient.Tests.HttpRequestMessagesCheckExtensionsTests; - -[Obsolete("Use WithHeader")] -public sealed class WithRequestHeaderNameAndValue -{ - [Fact] - public void WithRequestHeaderNameAndValue_WithoutNumberOfRequests_NullCheck_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = null!; - - var exception = Assert.Throws(() => sut.WithRequestHeader("host", "example.com")); - - Assert.Equal("check", exception.ParamName); - } - - [Fact] - public void WithRequestHeaderNameAndValue_WithNumberOfRequests_NullCheck_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = null!; - - var exception = Assert.Throws(() => sut.WithRequestHeader("host", "example.com", 1)); - - Assert.Equal("check", exception.ParamName); - } - - [Fact] - public void WithRequestHeaderNameAndValue_WithoutNumberOfRequests_NullHeaderName_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithRequestHeader(null!, "example.com")); - - Assert.Equal("headerName", exception.ParamName); - } - - [Fact] - public void WithRequestHeaderNameAndValue_WithoutNumberOfRequests_EmptyHeaderName_ThrowsArgumentException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithRequestHeader(string.Empty, "example.com")); - - Assert.Equal("headerName", exception.ParamName); - } - - [Fact] - public void WithRequestHeaderNameAndValue_WithNumberOfRequests_NullHeaderName_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithRequestHeader(null!, "example.com", 1)); - - Assert.Equal("headerName", exception.ParamName); - } - - [Fact] - public void WithRequestHeaderNameAndValue_WithNumberOfRequests_EmptyHeaderName_ThrowsArgumentException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithRequestHeader(string.Empty, "example.com", 1)); - - Assert.Equal("headerName", exception.ParamName); - } - - [Fact] - public void WithRequestHeaderNameAndValue_WithoutNumberOfRequests_NullValue_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithRequestHeader("host", null!)); - - Assert.Equal("headerValue", exception.ParamName); - } - - [Fact] - public void WithRequestHeaderNameAndValue_WithoutNumberOfRequests_EmptyValue_ThrowsArgumentException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithRequestHeader("host", string.Empty)); - - Assert.Equal("headerValue", exception.ParamName); - } - - [Fact] - public void WithRequestHeaderNameAndValue_WithNumberOfRequests_NullValue_ThrowsArgumentNullException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithRequestHeader("host", null!, 1)); - - Assert.Equal("headerValue", exception.ParamName); - } - - [Fact] - public void WithRequestHeaderNameAndValue_WithNumberOfRequests_EmptyValue_ThrowsArgumentException() - { - HttpRequestMessageAsserter sut = new([]); - - var exception = Assert.Throws(() => sut.WithRequestHeader("host", string.Empty, 1)); - - Assert.Equal("headerValue", exception.ParamName); - } - - [Theory] - [InlineData("*")] - [InlineData("*.com")] - [InlineData("example*")] - [InlineData("example.com")] - public void WithMatchingRequestHeaderNameAndValue_WithoutNumberOfRequests_DoesNotThrow(string headerValue) - { - using HttpRequestMessage request = new(); - request.Headers.Host = "example.com"; - - HttpRequestMessageAsserter sut = new([request]); - - sut.WithRequestHeader("host", headerValue); - } - - [Theory] - [InlineData("*")] - [InlineData("*.com")] - [InlineData("example*")] - [InlineData("example.com")] - public void WithRequestHeaderNameAndValue_WithNumberOfRequests_DoesNotThrow(string headerValue) - { - using HttpRequestMessage request = new(); - request.Headers.Host = "example.com"; - - HttpRequestMessageAsserter sut = new([request, request]); - - sut.WithRequestHeader("host", headerValue, 2); - } - - [Fact] - public void WithNotMatchingRequestHeaderNameAndMatchingValue_WithoutNumberOfRequests_ThrowsHttpRequestMessageAssertionException() - { - using HttpRequestMessage request = new(); - request.Headers.Host = "example.com"; - - HttpRequestMessageAsserter sut = new([request]); - - Assert.Throws(() => sut.WithRequestHeader("Via", "example.com")); - } - - [Fact] - public void WithNotMatchingRequestHeaderNameAndMatchingValue_WithNumberOfRequests_ThrowsHttpRequestMessageAssertionException() - { - using HttpRequestMessage request = new(); - request.Headers.Host = "example.com"; - - HttpRequestMessageAsserter sut = new([request, request]); - - Assert.Throws(() => sut.WithRequestHeader("Via", "example.com", 2)); - } - - [Fact] - public void WithMatchingRequestHeaderNameAndNotMatchingValue_WithoutNumberOfRequests_ThrowsHttpRequestMessageAssertionException() - { - using HttpRequestMessage request = new(); - request.Headers.Host = "example.com"; - - HttpRequestMessageAsserter sut = new([request]); - - Assert.Throws(() => sut.WithRequestHeader("Host", "text/yaml*")); - } - - [Fact] - public void WithMatchingRequestHeaderNameAndNotMatchingValue_WithNumberOfRequests_ThrowsHttpRequestMessageAssertionException() - { - using HttpRequestMessage request = new(); - request.Headers.Host = "example.com"; - - HttpRequestMessageAsserter sut = new([request, request]); - - Assert.Throws(() => sut.WithRequestHeader("Host", "text/yaml*", 2)); - } - - [Fact] - public void WithMatchingRequestHeaderNameAndMatchingValue_WithNotMatchingNumberOfRequests_ThrowsHttpRequestMessageAssertionException() - { - using HttpRequestMessage request = new(); - request.Headers.Host = "example.com"; - - HttpRequestMessageAsserter sut = new([request]); - - Assert.Throws(() => sut.WithRequestHeader("Host", "example.com", 2)); - } -} diff --git a/test/TestableHttpClient.Tests/Utils/MessageBuilderTests.cs b/test/TestableHttpClient.Tests/Utils/MessageBuilderTests.cs index df908569..5e8c0094 100644 --- a/test/TestableHttpClient.Tests/Utils/MessageBuilderTests.cs +++ b/test/TestableHttpClient.Tests/Utils/MessageBuilderTests.cs @@ -8,7 +8,7 @@ public sealed class MessageBuilderTests public void BuildMessage_NoExpectedCountZeroActualCountDefaultExpectedRequest() { Request request = new(new()); - var result = MessageBuilder.BuildMessage(null, 0, request, []); + var result = MessageBuilder.BuildMessage(null, 0, request); Assert.Equal("Expected at least one request to be made, but no requests were made.", result); } @@ -20,7 +20,7 @@ public void BuildMessage_NoExpectedCountZeroActualCountDefaultExpectedRequest() public void BuildMessage_NoExpectedCountVariableActualCountDefaultExpectedRequest(int actualCount, string expectedMessage) { Request request = new(new()); - var result = MessageBuilder.BuildMessage(null, actualCount, request, []); + var result = MessageBuilder.BuildMessage(null, actualCount, request); Assert.Equal($"Expected at least one request to be made, and {expectedMessage}.", result); } @@ -29,7 +29,7 @@ public void BuildMessage_NoExpectedCountVariableActualCountDefaultExpectedReques public void BuildMessage_ZeroExpectedCountZeroActualCountDefaultExpectedRequest() { Request request = new(new()); - var result = MessageBuilder.BuildMessage(0, 0, request, []); + var result = MessageBuilder.BuildMessage(0, 0, request); Assert.Equal($"Expected no requests to be made, and no requests were made.", result); } @@ -41,7 +41,7 @@ public void BuildMessage_ZeroExpectedCountZeroActualCountDefaultExpectedRequest( public void BuildMessage_VariableExpectedCountZeroActualCountDefaultExpectedRequest(int expectedCount, string expectedMessage) { Request request = new(new()); - var result = MessageBuilder.BuildMessage(expectedCount, 0, request, []); + var result = MessageBuilder.BuildMessage(expectedCount, 0, request); Assert.Equal($"Expected {expectedMessage} to be made, but no requests were made.", result); } @@ -58,7 +58,7 @@ public void BuildMessage_VariableExpectedCountZeroActualCountRequestSpecifyingMe Method = HttpMethod.Get, }; - var result = MessageBuilder.BuildMessage(expectedCount, 0, request, []); + var result = MessageBuilder.BuildMessage(expectedCount, 0, request); Assert.Equal($"Expected {expectedMessage} to be made, but no requests were made.", result); } @@ -74,7 +74,7 @@ public void BuildMessage_OnexpectedCountZeroActualCountRequestSpecifyingUri(stri RequestUri = UriPatternParser.Parse(uri) }; - var result = MessageBuilder.BuildMessage(1, 0, request, []); + var result = MessageBuilder.BuildMessage(1, 0, request); Assert.Equal($"Expected one request to be made to '{expectedRepresentation}', but no requests were made.", result); } @@ -92,7 +92,7 @@ public void BuildMessage_OnexpectedCountZeroActualCountRequestSpecifyingHeaders( } }; - var result = MessageBuilder.BuildMessage(1, 0, request, []); + var result = MessageBuilder.BuildMessage(1, 0, request); Assert.Equal(""" Expected one request to be made with headers: @@ -111,7 +111,7 @@ public void BuildMessage_OnexpectedCountZeroActualCountRequestSpecifyingContent( Content = "test" }; - var result = MessageBuilder.BuildMessage(1, 0, request, []); + var result = MessageBuilder.BuildMessage(1, 0, request); Assert.Equal(""" Expected one request to be made with content: @@ -136,7 +136,7 @@ public void BuildMessage_OnexpectedCountZeroActualCountRequestSpecifyingHeadersS """ }; - var result = MessageBuilder.BuildMessage(1, 0, request, []); + var result = MessageBuilder.BuildMessage(1, 0, request); Assert.Equal(""" Expected one request to be made with headers: @@ -148,28 +148,4 @@ public void BuildMessage_OnexpectedCountZeroActualCountRequestSpecifyingHeadersS , but no requests were made. """, result); } - - [Theory] - [InlineData("with condition 1", "condition 1")] - [InlineData("with condition 1, condition 2", "condition 1", "condition 2")] - [InlineData("with condition 1, condition 2, condition 3", "condition 1", "condition 2", "condition 3")] - public void BuildMessage_NullExpectedCountZeroActualCountVariableAmountOfConditions(string expectedCondition, params string[] conditions) - { - Request request = new(new()); - var result = MessageBuilder.BuildMessage(null, 0, request, conditions); - - Assert.Equal($"Expected at least one request to be made {expectedCondition}, but no requests were made.", result); - } - - [Theory] - [InlineData("with condition 1", "condition 1")] - [InlineData("with condition 1, condition 2", "condition 1", "condition 2")] - [InlineData("with condition 1, condition 2, condition 3", "condition 1", "condition 2", "condition 3")] - public void BuildMessage_NullExpectedCountOneActualCountVariableAmountOfConditions(string expectedCondition, params string[] conditions) - { - Request request = new(new()); - var result = MessageBuilder.BuildMessage(null, 1, request, conditions); - - Assert.Equal($"Expected at least one request to be made {expectedCondition}, and one request was made.", result); - } } diff --git a/version.json b/version.json index 4710bbbf..7a8188a6 100644 --- a/version.json +++ b/version.json @@ -1,6 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/master/src/NerdBank.GitVersioning/version.schema.json", - "version": "0.12", + "version": "0.13-alpha", "versionHeightOffset": -1, "publicReleaseRefSpec": [ "^refs/tags/v\\d+(?:\\.\\d+)?$"