mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-04-27 11:17:31 +02:00
Fix match logic (#604)
This commit is contained in:
@@ -123,6 +123,16 @@ namespace WireMock.Matchers.Request
|
|||||||
|
|
||||||
private double CalculateMatchScore(IRequestMessage requestMessage, IMatcher matcher)
|
private double CalculateMatchScore(IRequestMessage requestMessage, IMatcher matcher)
|
||||||
{
|
{
|
||||||
|
if (matcher is ExactObjectMatcher exactObjectMatcher)
|
||||||
|
{
|
||||||
|
// If the body is a byte array, try to match.
|
||||||
|
var detectedBodyType = requestMessage?.BodyData?.DetectedBodyType;
|
||||||
|
if (detectedBodyType == BodyType.Bytes || detectedBodyType == BodyType.String)
|
||||||
|
{
|
||||||
|
return exactObjectMatcher.IsMatch(requestMessage.BodyData.BodyAsBytes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Check if the matcher is a IObjectMatcher
|
// Check if the matcher is a IObjectMatcher
|
||||||
if (matcher is IObjectMatcher objectMatcher)
|
if (matcher is IObjectMatcher objectMatcher)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -209,13 +209,15 @@ namespace WireMock.Net.Tests.RequestMatchers
|
|||||||
Check.That(score).IsEqualTo(1.0d);
|
Check.That(score).IsEqualTo(1.0d);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Theory]
|
||||||
public void RequestMessageBodyMatcher_GetMatchingScore_BodyAsBytes_IObjectMatcher()
|
[InlineData(new byte[] { 1 })]
|
||||||
|
[InlineData(new byte[] { 48 })]
|
||||||
|
public void RequestMessageBodyMatcher_GetMatchingScore_BodyAsBytes_IObjectMatcher(byte[] bytes)
|
||||||
{
|
{
|
||||||
// Assign
|
// Assign
|
||||||
var body = new BodyData
|
var body = new BodyData
|
||||||
{
|
{
|
||||||
BodyAsBytes = new byte[] { 1 },
|
BodyAsBytes = bytes,
|
||||||
DetectedBodyType = BodyType.Bytes
|
DetectedBodyType = BodyType.Bytes
|
||||||
};
|
};
|
||||||
var objectMatcherMock = new Mock<IObjectMatcher>();
|
var objectMatcherMock = new Mock<IObjectMatcher>();
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
using NFluent;
|
using NFluent;
|
||||||
using System;
|
using System;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using FluentAssertions;
|
||||||
using WireMock.Matchers;
|
using WireMock.Matchers;
|
||||||
using WireMock.Matchers.Request;
|
using WireMock.Matchers.Request;
|
||||||
using WireMock.Models;
|
using WireMock.Models;
|
||||||
@@ -307,17 +308,20 @@ namespace WireMock.Net.Tests
|
|||||||
Check.That(requestBuilder.GetMatchingScore(request, requestMatchResult)).IsEqualTo(1.0);
|
Check.That(requestBuilder.GetMatchingScore(request, requestMatchResult)).IsEqualTo(1.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Theory]
|
||||||
public void Request_WithBodyAsBytes_ExactObjectMatcher_true()
|
[InlineData(new byte[] { 1 }, BodyType.Bytes)]
|
||||||
|
[InlineData(new byte[] { 48, 49, 50 }, BodyType.Bytes)]
|
||||||
|
[InlineData(new byte[] { 48, 49, 50 }, BodyType.String)]
|
||||||
|
public void Request_WithBodyAsBytes_ExactObjectMatcher_true(byte[] bytes, BodyType detectedBodyType)
|
||||||
{
|
{
|
||||||
// Assign
|
// Assign
|
||||||
byte[] body = { 123 };
|
byte[] body = bytes;
|
||||||
var requestBuilder = Request.Create().UsingAnyMethod().WithBody(body);
|
var requestBuilder = Request.Create().UsingAnyMethod().WithBody(body);
|
||||||
|
|
||||||
var bodyData = new BodyData
|
var bodyData = new BodyData
|
||||||
{
|
{
|
||||||
BodyAsBytes = new byte[] { 123 },
|
BodyAsBytes = bytes,
|
||||||
DetectedBodyType = BodyType.Bytes
|
DetectedBodyType = detectedBodyType
|
||||||
};
|
};
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
@@ -325,7 +329,7 @@ namespace WireMock.Net.Tests
|
|||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
var requestMatchResult = new RequestMatchResult();
|
var requestMatchResult = new RequestMatchResult();
|
||||||
Check.That(requestBuilder.GetMatchingScore(request, requestMatchResult)).IsEqualTo(1.0);
|
requestBuilder.GetMatchingScore(request, requestMatchResult).Should().Be(1.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user