Fixed logic for FluentAssertions WithHeader (#959)

This commit is contained in:
Stef Heyenrath
2023-06-23 15:20:57 +02:00
committed by GitHub
parent 8ce24249d0
commit c92183558b
2 changed files with 33 additions and 3 deletions

View File

@@ -149,15 +149,15 @@ public class WireMockAssertions
using (new AssertionScope($"header \"{expectedKey}\" from requests sent with value(s)")) using (new AssertionScope($"header \"{expectedKey}\" from requests sent with value(s)"))
{ {
var headerValues = _headers.First(h => h.Key == expectedKey).Value; var matchingHeaderValues = _headers.Where(h => h.Key == expectedKey).SelectMany(h => h.Value.ToArray()).ToArray();
if (expectedValues.Length == 1) if (expectedValues.Length == 1)
{ {
headerValues.Should().Contain(expectedValues.First(), because, becauseArgs); matchingHeaderValues.Should().Contain(expectedValues.First(), because, becauseArgs);
} }
else else
{ {
var trimmedHeaderValues = string.Join(",", headerValues.Select(x => x)).Split(',').Select(x => x.Trim()).ToList(); var trimmedHeaderValues = string.Join(",", matchingHeaderValues.Select(x => x)).Split(',').Select(x => x.Trim()).ToList();
foreach (var expectedValue in expectedValues) foreach (var expectedValue in expectedValues)
{ {
trimmedHeaderValues.Should().Contain(expectedValue, because, becauseArgs); trimmedHeaderValues.Should().Contain(expectedValue, because, becauseArgs);

View File

@@ -210,6 +210,36 @@ public class WireMockAssertionsTests : IDisposable
.Be($"{string.Join(NewLine, missingValue1Message, missingValue2Message)}{NewLine}"); .Be($"{string.Join(NewLine, missingValue1Message, missingValue2Message)}{NewLine}");
} }
[Fact]
public async Task HaveReceivedACall_WithHeader_ShouldCheckAllRequests()
{
// Arrange
using var server = WireMockServer.Start();
using var client = server.CreateClient();
// Act 1
await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, "/")
{
Headers =
{
Authorization = new AuthenticationHeaderValue("Bearer", "invalidToken")
}
});
// Act 2
await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, "/")
{
Headers =
{
Authorization = new AuthenticationHeaderValue("Bearer", "validToken")
}
});
// Assert
server.Should().HaveReceivedACall().WithHeader("Authorization", "Bearer invalidToken");
server.Should().HaveReceivedACall().WithHeader("Authorization", "Bearer validToken");
}
[Fact] [Fact]
public async Task HaveReceivedACall_AtUrl_WhenACallWasMadeToUrl_Should_BeOK() public async Task HaveReceivedACall_AtUrl_WhenACallWasMadeToUrl_Should_BeOK()
{ {