diff --git a/CHANGELOG.md b/CHANGELOG.md index 64f09e9..86e948d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ 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.12] - unplanned + ## [0.11] - 2024-06-15 ### Removed - .NET 7.0 target, since it is no longer supported @@ -284,6 +286,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.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 [0.9]: https://github.com/testablehttpclient/TestableHttpClient/compare/v0.8...v0.9 diff --git a/src/TestableHttpClient/HttpRequestMessagesCheckExtensions.cs b/src/TestableHttpClient/HttpRequestMessagesCheckExtensions.cs index 810f0dc..72a8f86 100644 --- a/src/TestableHttpClient/HttpRequestMessagesCheckExtensions.cs +++ b/src/TestableHttpClient/HttpRequestMessagesCheckExtensions.cs @@ -10,9 +10,6 @@ public static class HttpRequestMessagesCheckExtensions /// The for further assertions. public static IHttpRequestMessagesCheck WithRequestUri(this IHttpRequestMessagesCheck check, string pattern) => WithRequestUri(check, pattern, null); - [Obsolete("Please use an overload without the 'ignoreCase', since ignoring casing is now controlled globally.", true)] - public static IHttpRequestMessagesCheck WithRequestUri(this IHttpRequestMessagesCheck check, string pattern, bool ignoreCase) => WithRequestUri(check, pattern, ignoreCase, null); - /// /// Asserts whether requests were made to a given URI based on a pattern. /// @@ -22,9 +19,6 @@ public static class HttpRequestMessagesCheckExtensions /// The for further assertions. public static IHttpRequestMessagesCheck WithRequestUri(this IHttpRequestMessagesCheck check, string pattern, int expectedNumberOfRequests) => WithRequestUri(check, pattern, (int?)expectedNumberOfRequests); - [Obsolete("Please use an overload without the 'ignoreCase', since ignoring casing is now controlled globally.", true)] - public static IHttpRequestMessagesCheck WithRequestUri(this IHttpRequestMessagesCheck check, string pattern, bool ignoreCase, int expectedNumberOfRequests) => WithRequestUri(check, pattern, ignoreCase, (int?)expectedNumberOfRequests); - private static IHttpRequestMessagesCheck WithRequestUri(this IHttpRequestMessagesCheck check, string pattern, int? expectedNumberOfRequests) { Guard.ThrowIfNull(check); @@ -41,31 +35,6 @@ private static IHttpRequestMessagesCheck WithRequestUri(this IHttpRequestMessage return check.WithFilter(x => x.RequestUri is not null && uriPattern.Matches(x.RequestUri, check.Options.UriPatternMatchingOptions), expectedNumberOfRequests, condition); } - [Obsolete("Please use an overload without the 'ignoreCase', since ignoring casing is now controlled globally.", true)] - private static IHttpRequestMessagesCheck WithRequestUri(this IHttpRequestMessagesCheck check, string pattern, bool ignoreCase, int? expectedNumberOfRequests) => check; - - /// - /// Asserts whether requests were made with a given querystring based on a pattern. For asserting the decoded version of the querystring is used. - /// - /// The implementation that hold all the request messages. - /// The querystring pattern that is expected. - /// The for further assertions. - [Obsolete("Use WithRequestUri instead, since it now properly supports QueryStrings as well", true)] - public static IHttpRequestMessagesCheck WithQueryString(this IHttpRequestMessagesCheck check, string pattern) => WithQueryString(check, pattern, null); - - /// - /// Asserts whether requests were made with a given querystring based on a pattern. For asserting the decoded version of the querystring is used. - /// - /// The implementation that hold all the request messages. - /// The querystring pattern that is expected. - /// The expected number of requests. - /// The for further assertions. - [Obsolete("Use WithRequestUri instead, since it now properly supports QueryStrings as well", true)] - public static IHttpRequestMessagesCheck WithQueryString(this IHttpRequestMessagesCheck check, string pattern, int expectedNumberOfRequests) => WithQueryString(check, pattern, (int?)expectedNumberOfRequests); - - [Obsolete("Use WithRequestUri instead, since it now properly supports QueryStrings as well", true)] - private static IHttpRequestMessagesCheck WithQueryString(this IHttpRequestMessagesCheck check, string pattern, int? expectedNumberOfRequests) => check; - /// /// Asserts whether requests were made with a given HTTP Method. /// diff --git a/src/TestableHttpClient/PublicAPI.Shipped.txt b/src/TestableHttpClient/PublicAPI.Shipped.txt index 21a5b94..0897b89 100644 --- a/src/TestableHttpClient/PublicAPI.Shipped.txt +++ b/src/TestableHttpClient/PublicAPI.Shipped.txt @@ -10,18 +10,8 @@ override TestableHttpClient.TestableHttpMessageHandler.SendAsync(System.Net.Http TestableHttpClient.TestableHttpMessageHandlerOptions TestableHttpClient.TestableHttpMessageHandlerOptions.JsonSerializerOptions.get -> System.Text.Json.JsonSerializerOptions! TestableHttpClient.TestableHttpMessageHandlerOptions.TestableHttpMessageHandlerOptions() -> void -TestableHttpClient.TestableHttpMessageHandlerOptions.RoutingOptions.get -> TestableHttpClient.RoutingOptions! TestableHttpClient.TestableHttpMessageHandlerOptions.UriPatternMatchingOptions.get -> TestableHttpClient.UriPatternMatchingOptions! -TestableHttpClient.RoutingOptions -TestableHttpClient.RoutingOptions.HostCaseInsensitive.get -> bool -TestableHttpClient.RoutingOptions.HostCaseInsensitive.set -> void -TestableHttpClient.RoutingOptions.PathCaseInsensitive.get -> bool -TestableHttpClient.RoutingOptions.PathCaseInsensitive.set -> void -TestableHttpClient.RoutingOptions.RoutingOptions() -> void -TestableHttpClient.RoutingOptions.SchemeCaseInsensitive.get -> bool -TestableHttpClient.RoutingOptions.SchemeCaseInsensitive.set -> void - TestableHttpClient.UriPatternMatchingOptions TestableHttpClient.UriPatternMatchingOptions.DefaultQueryFormat.get -> System.UriFormat TestableHttpClient.UriPatternMatchingOptions.DefaultQueryFormat.set -> void @@ -71,8 +61,6 @@ TestableHttpClient.TestableHttpMessageHandlerAssertionExtensions static TestableHttpClient.TestableHttpMessageHandlerAssertionExtensions.ShouldHaveMadeRequests(this TestableHttpClient.TestableHttpMessageHandler! handler) -> TestableHttpClient.IHttpRequestMessagesCheck! static TestableHttpClient.TestableHttpMessageHandlerAssertionExtensions.ShouldHaveMadeRequests(this TestableHttpClient.TestableHttpMessageHandler! handler, int expectedNumberOfRequests) -> TestableHttpClient.IHttpRequestMessagesCheck! static TestableHttpClient.TestableHttpMessageHandlerAssertionExtensions.ShouldHaveMadeRequestsTo(this TestableHttpClient.TestableHttpMessageHandler! handler, string! pattern) -> TestableHttpClient.IHttpRequestMessagesCheck! -static TestableHttpClient.TestableHttpMessageHandlerAssertionExtensions.ShouldHaveMadeRequestsTo(this TestableHttpClient.TestableHttpMessageHandler! handler, string! pattern, bool ignoreCase) -> TestableHttpClient.IHttpRequestMessagesCheck! -static TestableHttpClient.TestableHttpMessageHandlerAssertionExtensions.ShouldHaveMadeRequestsTo(this TestableHttpClient.TestableHttpMessageHandler! handler, string! pattern, bool ignoreCase, int expectedNumberOfRequests) -> TestableHttpClient.IHttpRequestMessagesCheck! static TestableHttpClient.TestableHttpMessageHandlerAssertionExtensions.ShouldHaveMadeRequestsTo(this TestableHttpClient.TestableHttpMessageHandler! handler, string! pattern, int expectedNumberOfRequests) -> TestableHttpClient.IHttpRequestMessagesCheck! TestableHttpClient.IHttpRequestMessagesCheck @@ -107,15 +95,11 @@ static TestableHttpClient.HttpRequestMessagesCheckExtensions.WithJsonContent(thi static TestableHttpClient.HttpRequestMessagesCheckExtensions.WithJsonContent(this TestableHttpClient.IHttpRequestMessagesCheck! check, object? jsonObject, int expectedNumberOfRequests) -> TestableHttpClient.IHttpRequestMessagesCheck! static TestableHttpClient.HttpRequestMessagesCheckExtensions.WithJsonContent(this TestableHttpClient.IHttpRequestMessagesCheck! check, object? jsonObject, System.Text.Json.JsonSerializerOptions! jsonSerializerOptions) -> TestableHttpClient.IHttpRequestMessagesCheck! static TestableHttpClient.HttpRequestMessagesCheckExtensions.WithJsonContent(this TestableHttpClient.IHttpRequestMessagesCheck! check, object? jsonObject, System.Text.Json.JsonSerializerOptions! jsonSerializerOptions, int expectedNumberOfRequests) -> TestableHttpClient.IHttpRequestMessagesCheck! -static TestableHttpClient.HttpRequestMessagesCheckExtensions.WithQueryString(this TestableHttpClient.IHttpRequestMessagesCheck! check, string! pattern) -> TestableHttpClient.IHttpRequestMessagesCheck! -static TestableHttpClient.HttpRequestMessagesCheckExtensions.WithQueryString(this TestableHttpClient.IHttpRequestMessagesCheck! check, string! pattern, int expectedNumberOfRequests) -> TestableHttpClient.IHttpRequestMessagesCheck! static TestableHttpClient.HttpRequestMessagesCheckExtensions.WithRequestHeader(this TestableHttpClient.IHttpRequestMessagesCheck! check, string! headerName) -> TestableHttpClient.IHttpRequestMessagesCheck! static TestableHttpClient.HttpRequestMessagesCheckExtensions.WithRequestHeader(this TestableHttpClient.IHttpRequestMessagesCheck! check, string! headerName, int expectedNumberOfRequests) -> TestableHttpClient.IHttpRequestMessagesCheck! static TestableHttpClient.HttpRequestMessagesCheckExtensions.WithRequestHeader(this TestableHttpClient.IHttpRequestMessagesCheck! check, string! headerName, string! headerValue) -> TestableHttpClient.IHttpRequestMessagesCheck! static TestableHttpClient.HttpRequestMessagesCheckExtensions.WithRequestHeader(this TestableHttpClient.IHttpRequestMessagesCheck! check, string! headerName, string! headerValue, int expectedNumberOfRequests) -> TestableHttpClient.IHttpRequestMessagesCheck! static TestableHttpClient.HttpRequestMessagesCheckExtensions.WithRequestUri(this TestableHttpClient.IHttpRequestMessagesCheck! check, string! pattern) -> TestableHttpClient.IHttpRequestMessagesCheck! -static TestableHttpClient.HttpRequestMessagesCheckExtensions.WithRequestUri(this TestableHttpClient.IHttpRequestMessagesCheck! check, string! pattern, bool ignoreCase) -> TestableHttpClient.IHttpRequestMessagesCheck! -static TestableHttpClient.HttpRequestMessagesCheckExtensions.WithRequestUri(this TestableHttpClient.IHttpRequestMessagesCheck! check, string! pattern, bool ignoreCase, int expectedNumberOfRequests) -> TestableHttpClient.IHttpRequestMessagesCheck! static TestableHttpClient.HttpRequestMessagesCheckExtensions.WithRequestUri(this TestableHttpClient.IHttpRequestMessagesCheck! check, string! pattern, int expectedNumberOfRequests) -> TestableHttpClient.IHttpRequestMessagesCheck! TestableHttpClient.Utils.UriPatternParserException diff --git a/src/TestableHttpClient/RoutingOptions.cs b/src/TestableHttpClient/RoutingOptions.cs deleted file mode 100644 index a2d85c9..0000000 --- a/src/TestableHttpClient/RoutingOptions.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace TestableHttpClient; - -/// -/// Options specific for routing. -/// -[Obsolete("Renamed to UriPatternMatchingOptions", true)] -public class RoutingOptions -{ - /// - /// Indicates whether or not the scheme of an URI should be treated as case insensitive. Default: true - /// - public bool SchemeCaseInsensitive { get; set; } = true; - /// - /// Indicates whether or not the host of an URI should be treated as case insensitive. Default: true - /// - public bool HostCaseInsensitive { get; set; } = true; - /// - /// Indicates whether or not the path of an URI should be treated as case insensitive. Default: true - /// - public bool PathCaseInsensitive { get; set; } = true; -} diff --git a/src/TestableHttpClient/TestableHttpMessageHandlerAssertionExtensions.cs b/src/TestableHttpClient/TestableHttpMessageHandlerAssertionExtensions.cs index 0c79397..7c0dfaa 100644 --- a/src/TestableHttpClient/TestableHttpMessageHandlerAssertionExtensions.cs +++ b/src/TestableHttpClient/TestableHttpMessageHandlerAssertionExtensions.cs @@ -50,25 +50,6 @@ public static IHttpRequestMessagesCheck ShouldHaveMadeRequestsTo(this TestableHt return new HttpRequestMessageAsserter(handler.Requests, handler.Options).WithRequestUri(pattern); } - /// - /// Validates that requests to a specific uri have been made, throws an exception when no requests were made. - /// - /// The that should be asserted. - /// The uri pattern to validate against, the pattern supports *. - /// The uri validation should ignore cases. - /// An that can be used for additional assertions. - /// handler is `null` or pattern is `null` - /// When no requests are made - [AssertionMethod] - [Obsolete("Please use an overload without the 'ignoreCase', since ignoring casing is now controlled globally.")] - public static IHttpRequestMessagesCheck ShouldHaveMadeRequestsTo(this TestableHttpMessageHandler handler, string pattern, bool ignoreCase) - { - Guard.ThrowIfNull(handler); - Guard.ThrowIfNull(pattern); - - return new HttpRequestMessageAsserter(handler.Requests, handler.Options).WithRequestUri(pattern, ignoreCase); - } - /// /// Validates that requests to a specific uri have been made, throws an exception when no requests were made. /// @@ -86,23 +67,4 @@ public static IHttpRequestMessagesCheck ShouldHaveMadeRequestsTo(this TestableHt return new HttpRequestMessageAsserter(handler.Requests, handler.Options).WithRequestUri(pattern, expectedNumberOfRequests); } - - /// - /// Validates that requests to a specific uri have been made, throws an exception when no requests were made. - /// - /// The that should be asserted. - /// The uri pattern to validate against, the pattern supports *. - /// The expected number of requests. - /// An that can be used for additional assertions. - /// handler is `null` or pattern is `null` - /// When no requests are made - [AssertionMethod] - [Obsolete("Please use an overload without the 'ignoreCase', since ignoring casing is now controlled globally.")] - public static IHttpRequestMessagesCheck ShouldHaveMadeRequestsTo(this TestableHttpMessageHandler handler, string pattern, bool ignoreCase, int expectedNumberOfRequests) - { - Guard.ThrowIfNull(handler); - Guard.ThrowIfNull(pattern); - - return new HttpRequestMessageAsserter(handler.Requests, handler.Options).WithRequestUri(pattern, ignoreCase, expectedNumberOfRequests); - } } diff --git a/src/TestableHttpClient/TestableHttpMessageHandlerOptions.cs b/src/TestableHttpClient/TestableHttpMessageHandlerOptions.cs index d592f11..723f427 100644 --- a/src/TestableHttpClient/TestableHttpMessageHandlerOptions.cs +++ b/src/TestableHttpClient/TestableHttpMessageHandlerOptions.cs @@ -10,8 +10,5 @@ public sealed class TestableHttpMessageHandlerOptions PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; - [ExcludeFromCodeCoverage] - [Obsolete("Renamed to UriPatternMatchingOptions", true)] - public RoutingOptions RoutingOptions => new(); public UriPatternMatchingOptions UriPatternMatchingOptions { get; } = new UriPatternMatchingOptions(); } diff --git a/test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithQueryString.cs b/test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithQueryString.cs deleted file mode 100644 index 6e9aceb..0000000 --- a/test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithQueryString.cs +++ /dev/null @@ -1,47 +0,0 @@ -using NSubstitute; - -namespace TestableHttpClient.Tests.HttpRequestMessagesCheckExtensionsTests; - -[Obsolete("Use WithRequestUri instead, since it now properly supports QueryStrings as well", true)] -public class WithQueryString -{ - [Fact] - public void WithQueryString_WithoutNumberOfRequests_NullCheck_ReturnsNull() - { - IHttpRequestMessagesCheck sut = null!; - - IHttpRequestMessagesCheck result = sut.WithQueryString("*"); - - Assert.Same(sut, result); - } - - [Fact] - public void WithQueryString_WithNumberOfRequests_NullCheck_ReturnsNull() - { - IHttpRequestMessagesCheck sut = null!; - - IHttpRequestMessagesCheck result = sut.WithQueryString("*", 1); - - Assert.Same(sut, result); - } - - [Fact] - public void WithQueryString_WithoutNumberOfRequests_ReturnsSut() - { - IHttpRequestMessagesCheck sut = Substitute.For(); - - IHttpRequestMessagesCheck result = sut.WithQueryString(""); - - Assert.Same(sut, result); - } - - [Fact] - public void WithQueryString_WithNumberOfRequests_ReturnsSut() - { - IHttpRequestMessagesCheck sut = Substitute.For(); - - IHttpRequestMessagesCheck result = sut.WithQueryString("", 2); - - Assert.Same(sut, result); - } -} diff --git a/test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithRequestUri.cs b/test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithRequestUri.cs index 7c1f5d6..cb88841 100644 --- a/test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithRequestUri.cs +++ b/test/TestableHttpClient.Tests/HttpRequestMessagesCheckExtensionsTests/WithRequestUri.cs @@ -55,26 +55,4 @@ public void WithRequestUri_WithoutNumberOfRequests_CallsWithCorrectly() sut.Received(1).WithFilter(Args.AnyPredicate(), null, "uri pattern 'https://example.com/'"); } - - [Fact] - [Obsolete("Please use an overload without the 'ignoreCase', since ignoring casing is now controlled globally.", true)] - public void WithRequestUri_WithoutNumberOfRequestsAndNotIgnoringCase_CallsWithCorrectly() - { - IHttpRequestMessagesCheck sut = Substitute.For(); - - var result = sut.WithRequestUri("https://example.com/", ignoreCase: false); - - Assert.Same(sut, result); - } - - [Fact] - [Obsolete("Please use an overload without the 'ignoreCase', since ignoring casing is now controlled globally.", true)] - public void WithRequestUri_WithNumberOfRequestsAndNotIgnoringCase_CallsWithCorrectly() - { - IHttpRequestMessagesCheck sut = Substitute.For(); - - var result = sut.WithRequestUri("https://example.com/", ignoreCase: false, 2); - - Assert.Same(sut, result); - } } diff --git a/version.json b/version.json index 1d6a246..6aa64e2 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.11", + "version": "0.12-alpha", "versionHeightOffset": -1, "publicReleaseRefSpec": [ "^refs/tags/v\\d+(?:\\.\\d+)?$"