Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
31 changes: 0 additions & 31 deletions src/TestableHttpClient/HttpRequestMessagesCheckExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@ public static class HttpRequestMessagesCheckExtensions
/// <returns>The <seealso cref="IHttpRequestMessagesCheck"/> for further assertions.</returns>
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);

/// <summary>
/// Asserts whether requests were made to a given URI based on a pattern.
/// </summary>
Expand All @@ -22,9 +19,6 @@ public static class HttpRequestMessagesCheckExtensions
/// <returns>The <seealso cref="IHttpRequestMessagesCheck"/> for further assertions.</returns>
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);
Expand All @@ -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;

/// <summary>
/// Asserts whether requests were made with a given querystring based on a pattern. For asserting the decoded version of the querystring is used.
/// </summary>
/// <param name="check">The implementation that hold all the request messages.</param>
/// <param name="pattern">The querystring pattern that is expected.</param>
/// <returns>The <seealso cref="IHttpRequestMessagesCheck"/> for further assertions.</returns>
[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);

/// <summary>
/// Asserts whether requests were made with a given querystring based on a pattern. For asserting the decoded version of the querystring is used.
/// </summary>
/// <param name="check">The implementation that hold all the request messages.</param>
/// <param name="pattern">The querystring pattern that is expected.</param>
/// <param name="expectedNumberOfRequests">The expected number of requests.</param>
/// <returns>The <seealso cref="IHttpRequestMessagesCheck"/> for further assertions.</returns>
[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;

/// <summary>
/// Asserts whether requests were made with a given HTTP Method.
/// </summary>
Expand Down
16 changes: 0 additions & 16 deletions src/TestableHttpClient/PublicAPI.Shipped.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
21 changes: 0 additions & 21 deletions src/TestableHttpClient/RoutingOptions.cs

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -50,25 +50,6 @@ public static IHttpRequestMessagesCheck ShouldHaveMadeRequestsTo(this TestableHt
return new HttpRequestMessageAsserter(handler.Requests, handler.Options).WithRequestUri(pattern);
}

/// <summary>
/// Validates that requests to a specific uri have been made, throws an exception when no requests were made.
/// </summary>
/// <param name="handler">The <see cref="TestableHttpMessageHandler"/> that should be asserted.</param>
/// <param name="pattern">The uri pattern to validate against, the pattern supports *.</param>
/// <param name="ignoreCase">The uri validation should ignore cases.</param>
/// <returns>An <see cref="IHttpRequestMessagesCheck"/> that can be used for additional assertions.</returns>
/// <exception cref="ArgumentNullException">handler is `null` or pattern is `null`</exception>
/// <exception cref="HttpRequestMessageAssertionException">When no requests are made</exception>
[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);
}

/// <summary>
/// Validates that requests to a specific uri have been made, throws an exception when no requests were made.
/// </summary>
Expand All @@ -86,23 +67,4 @@ public static IHttpRequestMessagesCheck ShouldHaveMadeRequestsTo(this TestableHt

return new HttpRequestMessageAsserter(handler.Requests, handler.Options).WithRequestUri(pattern, expectedNumberOfRequests);
}

/// <summary>
/// Validates that requests to a specific uri have been made, throws an exception when no requests were made.
/// </summary>
/// <param name="handler">The <see cref="TestableHttpMessageHandler"/> that should be asserted.</param>
/// <param name="pattern">The uri pattern to validate against, the pattern supports *.</param>
/// <param name="expectedNumberOfRequests">The expected number of requests.</param>
/// <returns>An <see cref="IHttpRequestMessagesCheck"/> that can be used for additional assertions.</returns>
/// <exception cref="ArgumentNullException">handler is `null` or pattern is `null`</exception>
/// <exception cref="HttpRequestMessageAssertionException">When no requests are made</exception>
[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);
}
}
3 changes: 0 additions & 3 deletions src/TestableHttpClient/TestableHttpMessageHandlerOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -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<IHttpRequestMessagesCheck>();

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<IHttpRequestMessagesCheck>();

var result = sut.WithRequestUri("https://example.com/", ignoreCase: false, 2);

Assert.Same(sut, result);
}
}
2 changes: 1 addition & 1 deletion version.json
Original file line number Diff line number Diff line change
@@ -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+)?$"
Expand Down