mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-04-11 03:37:11 +02:00
ICallbackResponseBuilder + added more unit-tests (#101)
* Callback * Add more tests
This commit is contained in:
@@ -1,62 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using JetBrains.Annotations;
|
|
||||||
using WireMock.Validation;
|
|
||||||
using WireMock.Settings;
|
|
||||||
|
|
||||||
namespace WireMock
|
|
||||||
{
|
|
||||||
internal class DynamicResponseProvider : IResponseProvider
|
|
||||||
{
|
|
||||||
private readonly Func<RequestMessage, ResponseMessage> _responseMessageFunc;
|
|
||||||
|
|
||||||
public DynamicResponseProvider([NotNull] Func<RequestMessage, ResponseMessage> responseMessageFunc)
|
|
||||||
{
|
|
||||||
Check.NotNull(responseMessageFunc, nameof(responseMessageFunc));
|
|
||||||
|
|
||||||
_responseMessageFunc = responseMessageFunc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Task<ResponseMessage> ProvideResponseAsync(RequestMessage requestMessage)
|
|
||||||
{
|
|
||||||
return Task.FromResult(_responseMessageFunc(requestMessage));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal class DynamicAsyncResponseProvider : IResponseProvider
|
|
||||||
{
|
|
||||||
private readonly Func<RequestMessage, Task<ResponseMessage>> _responseMessageFunc;
|
|
||||||
|
|
||||||
public DynamicAsyncResponseProvider([NotNull] Func<RequestMessage, Task<ResponseMessage>> responseMessageFunc)
|
|
||||||
{
|
|
||||||
Check.NotNull(responseMessageFunc, nameof(responseMessageFunc));
|
|
||||||
|
|
||||||
_responseMessageFunc = responseMessageFunc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Task<ResponseMessage> ProvideResponseAsync(RequestMessage requestMessage)
|
|
||||||
{
|
|
||||||
return _responseMessageFunc(requestMessage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal class ProxyAsyncResponseProvider : IResponseProvider
|
|
||||||
{
|
|
||||||
private readonly Func<RequestMessage, IProxyAndRecordSettings, Task<ResponseMessage>> _responseMessageFunc;
|
|
||||||
private readonly IProxyAndRecordSettings _settings;
|
|
||||||
|
|
||||||
public ProxyAsyncResponseProvider([NotNull] Func<RequestMessage, IProxyAndRecordSettings, Task<ResponseMessage>> responseMessageFunc, [NotNull] IProxyAndRecordSettings settings)
|
|
||||||
{
|
|
||||||
Check.NotNull(responseMessageFunc, nameof(responseMessageFunc));
|
|
||||||
Check.NotNull(settings, nameof(settings));
|
|
||||||
|
|
||||||
_responseMessageFunc = responseMessageFunc;
|
|
||||||
_settings = settings;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Task<ResponseMessage> ProvideResponseAsync(RequestMessage requestMessage)
|
|
||||||
{
|
|
||||||
return _responseMessageFunc(requestMessage, _settings);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
using WireMock.Matchers.Request;
|
using WireMock.Matchers.Request;
|
||||||
|
using WireMock.ResponseProviders;
|
||||||
|
|
||||||
namespace WireMock
|
namespace WireMock
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
using System;
|
||||||
|
using JetBrains.Annotations;
|
||||||
|
using WireMock.ResponseProviders;
|
||||||
|
|
||||||
|
namespace WireMock.ResponseBuilders
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The CallbackResponseBuilder interface.
|
||||||
|
/// </summary>
|
||||||
|
public interface ICallbackResponseBuilder : IResponseProvider
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The callback builder
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>The <see cref="IResponseBuilder"/>.</returns>
|
||||||
|
[PublicAPI]
|
||||||
|
IResponseBuilder WithCallback([NotNull] Func<RequestMessage, ResponseMessage> callbackHandler);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,7 +5,7 @@ namespace WireMock.ResponseBuilders
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// The DelayResponseBuilder interface.
|
/// The DelayResponseBuilder interface.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IDelayResponseBuilder : IResponseProvider
|
public interface IDelayResponseBuilder : ICallbackResponseBuilder
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The with delay.
|
/// The with delay.
|
||||||
|
|||||||
@@ -48,11 +48,13 @@ namespace WireMock.ResponseBuilders
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the response message.
|
/// Gets the response message.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>
|
|
||||||
/// The response message.
|
|
||||||
/// </value>
|
|
||||||
public ResponseMessage ResponseMessage { get; }
|
public ResponseMessage ResponseMessage { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A delegate to execute to generate the response
|
||||||
|
/// </summary>
|
||||||
|
public Func<RequestMessage, ResponseMessage> Callback { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates this instance.
|
/// Creates this instance.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -308,6 +310,16 @@ namespace WireMock.ResponseBuilders
|
|||||||
return WithProxy(settings.Url, settings.ClientX509Certificate2ThumbprintOrSubjectName);
|
return WithProxy(settings.Url, settings.ClientX509Certificate2ThumbprintOrSubjectName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc cref="ICallbackResponseBuilder.WithCallback"/>
|
||||||
|
public IResponseBuilder WithCallback(Func<RequestMessage, ResponseMessage> callbackHandler)
|
||||||
|
{
|
||||||
|
Check.NotNull(callbackHandler, nameof(callbackHandler));
|
||||||
|
|
||||||
|
Callback = callbackHandler;
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The provide response.
|
/// The provide response.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -336,6 +348,11 @@ namespace WireMock.ResponseBuilders
|
|||||||
return ResponseMessageTransformer.Transform(requestMessage, ResponseMessage);
|
return ResponseMessageTransformer.Transform(requestMessage, ResponseMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Callback != null)
|
||||||
|
{
|
||||||
|
return Callback(requestMessage);
|
||||||
|
}
|
||||||
|
|
||||||
return ResponseMessage;
|
return ResponseMessage;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using JetBrains.Annotations;
|
||||||
|
using WireMock.Validation;
|
||||||
|
|
||||||
|
namespace WireMock.ResponseProviders
|
||||||
|
{
|
||||||
|
internal class DynamicAsyncResponseProvider : IResponseProvider
|
||||||
|
{
|
||||||
|
private readonly Func<RequestMessage, Task<ResponseMessage>> _responseMessageFunc;
|
||||||
|
|
||||||
|
public DynamicAsyncResponseProvider([NotNull] Func<RequestMessage, Task<ResponseMessage>> responseMessageFunc)
|
||||||
|
{
|
||||||
|
Check.NotNull(responseMessageFunc, nameof(responseMessageFunc));
|
||||||
|
|
||||||
|
_responseMessageFunc = responseMessageFunc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task<ResponseMessage> ProvideResponseAsync(RequestMessage requestMessage)
|
||||||
|
{
|
||||||
|
return _responseMessageFunc(requestMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using JetBrains.Annotations;
|
||||||
|
using WireMock.Validation;
|
||||||
|
|
||||||
|
namespace WireMock.ResponseProviders
|
||||||
|
{
|
||||||
|
internal class DynamicResponseProvider : IResponseProvider
|
||||||
|
{
|
||||||
|
private readonly Func<RequestMessage, ResponseMessage> _responseMessageFunc;
|
||||||
|
|
||||||
|
public DynamicResponseProvider([NotNull] Func<RequestMessage, ResponseMessage> responseMessageFunc)
|
||||||
|
{
|
||||||
|
Check.NotNull(responseMessageFunc, nameof(responseMessageFunc));
|
||||||
|
|
||||||
|
_responseMessageFunc = responseMessageFunc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task<ResponseMessage> ProvideResponseAsync(RequestMessage requestMessage)
|
||||||
|
{
|
||||||
|
return Task.FromResult(_responseMessageFunc(requestMessage));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
|
|
||||||
namespace WireMock
|
namespace WireMock.ResponseProviders
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The Response Provider interface.
|
/// The Response Provider interface.
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using JetBrains.Annotations;
|
||||||
|
using WireMock.Settings;
|
||||||
|
using WireMock.Validation;
|
||||||
|
|
||||||
|
namespace WireMock.ResponseProviders
|
||||||
|
{
|
||||||
|
internal class ProxyAsyncResponseProvider : IResponseProvider
|
||||||
|
{
|
||||||
|
private readonly Func<RequestMessage, IProxyAndRecordSettings, Task<ResponseMessage>> _responseMessageFunc;
|
||||||
|
private readonly IProxyAndRecordSettings _settings;
|
||||||
|
|
||||||
|
public ProxyAsyncResponseProvider([NotNull] Func<RequestMessage, IProxyAndRecordSettings, Task<ResponseMessage>> responseMessageFunc, [NotNull] IProxyAndRecordSettings settings)
|
||||||
|
{
|
||||||
|
Check.NotNull(responseMessageFunc, nameof(responseMessageFunc));
|
||||||
|
Check.NotNull(settings, nameof(settings));
|
||||||
|
|
||||||
|
_responseMessageFunc = responseMessageFunc;
|
||||||
|
_settings = settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task<ResponseMessage> ProvideResponseAsync(RequestMessage requestMessage)
|
||||||
|
{
|
||||||
|
return _responseMessageFunc(requestMessage, _settings);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,6 +17,7 @@ using WireMock.Matchers;
|
|||||||
using WireMock.Matchers.Request;
|
using WireMock.Matchers.Request;
|
||||||
using WireMock.RequestBuilders;
|
using WireMock.RequestBuilders;
|
||||||
using WireMock.ResponseBuilders;
|
using WireMock.ResponseBuilders;
|
||||||
|
using WireMock.ResponseProviders;
|
||||||
using WireMock.Serialization;
|
using WireMock.Serialization;
|
||||||
using WireMock.Settings;
|
using WireMock.Settings;
|
||||||
using WireMock.Util;
|
using WireMock.Util;
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ using WireMock.RequestBuilders;
|
|||||||
using WireMock.Settings;
|
using WireMock.Settings;
|
||||||
using WireMock.Validation;
|
using WireMock.Validation;
|
||||||
using WireMock.Owin;
|
using WireMock.Owin;
|
||||||
|
using WireMock.ResponseProviders;
|
||||||
|
|
||||||
namespace WireMock.Server
|
namespace WireMock.Server
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using WireMock.ResponseProviders;
|
||||||
|
|
||||||
namespace WireMock.Server
|
namespace WireMock.Server
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using WireMock.Matchers.Request;
|
using WireMock.Matchers.Request;
|
||||||
|
using WireMock.ResponseProviders;
|
||||||
|
|
||||||
namespace WireMock.Server
|
namespace WireMock.Server
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -89,13 +89,12 @@ namespace WireMock.Net.Tests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void FluentMockServer_Admin_Mappings_Get()
|
public void FluentMockServer_Admin_Mappings_WithGuid_Get()
|
||||||
{
|
{
|
||||||
Guid guid = Guid.Parse("90356dba-b36c-469a-a17e-669cd84f1f05");
|
Guid guid = Guid.Parse("90356dba-b36c-469a-a17e-669cd84f1f05");
|
||||||
_server = FluentMockServer.Start();
|
_server = FluentMockServer.Start();
|
||||||
|
|
||||||
_server.Given(Request.Create().WithPath("/foo1").UsingGet())
|
_server.Given(Request.Create().WithPath("/foo1").UsingGet()).WithGuid(guid)
|
||||||
.WithGuid(guid)
|
|
||||||
.RespondWith(Response.Create().WithStatusCode(201).WithBody("1"));
|
.RespondWith(Response.Create().WithStatusCode(201).WithBody("1"));
|
||||||
|
|
||||||
_server.Given(Request.Create().WithPath("/foo2").UsingGet())
|
_server.Given(Request.Create().WithPath("/foo2").UsingGet())
|
||||||
@@ -105,6 +104,19 @@ namespace WireMock.Net.Tests
|
|||||||
Check.That(mappings).HasSize(2);
|
Check.That(mappings).HasSize(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void FluentMockServer_Admin_Mappings_WithGuidAsString_Get()
|
||||||
|
{
|
||||||
|
string guid = "90356dba-b36c-469a-a17e-669cd84f1f05";
|
||||||
|
_server = FluentMockServer.Start();
|
||||||
|
|
||||||
|
_server.Given(Request.Create().WithPath("/foo1").UsingGet()).WithGuid(guid)
|
||||||
|
.RespondWith(Response.Create().WithStatusCode(201).WithBody("1"));
|
||||||
|
|
||||||
|
var mappings = _server.Mappings.ToArray();
|
||||||
|
Check.That(mappings).HasSize(1);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void FluentMockServer_Admin_Mappings_Add_SameGuid()
|
public void FluentMockServer_Admin_Mappings_Add_SameGuid()
|
||||||
{
|
{
|
||||||
@@ -432,6 +444,23 @@ namespace WireMock.Net.Tests
|
|||||||
Check.That(requestLoggedB.RequestMessage.Path).EndsWith("/foo3");
|
Check.That(requestLoggedB.RequestMessage.Path).EndsWith("/foo3");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task FluentMockServer_Should_respond_to_request_callback()
|
||||||
|
{
|
||||||
|
// Assign
|
||||||
|
_server = FluentMockServer.Start();
|
||||||
|
|
||||||
|
_server
|
||||||
|
.Given(Request.Create().WithPath("/foo").UsingGet())
|
||||||
|
.RespondWith(Response.Create().WithCallback(req => new ResponseMessage { Body = req.Path + "Bar" }));
|
||||||
|
|
||||||
|
// Act
|
||||||
|
string response = await new HttpClient().GetStringAsync("http://localhost:" + _server.Ports[0] + "/foo");
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Check.That(response).IsEqualTo("/fooBar");
|
||||||
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_server?.Stop();
|
_server?.Stop();
|
||||||
|
|||||||
23
test/WireMock.Net.Tests/Matchers/ExactObjectMatcherTests.cs
Normal file
23
test/WireMock.Net.Tests/Matchers/ExactObjectMatcherTests.cs
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
using NFluent;
|
||||||
|
using WireMock.Matchers;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace WireMock.Net.Tests.Matchers
|
||||||
|
{
|
||||||
|
public class ExactObjectMatcherTests
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void ExactObjectMatcher_GetName()
|
||||||
|
{
|
||||||
|
// Assign
|
||||||
|
object obj = 1;
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var matcher = new ExactObjectMatcher(obj);
|
||||||
|
string name = matcher.GetName();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Check.That(name).Equals("ExactObjectMatcher");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,6 +15,60 @@ namespace WireMock.Net.Tests
|
|||||||
{
|
{
|
||||||
private const string ClientIp = "::1";
|
private const string ClientIp = "::1";
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Request_WithBody_FuncString()
|
||||||
|
{
|
||||||
|
// Assign
|
||||||
|
var requestBuilder = Request.Create().UsingAnyVerb().WithBody(b => b.Contains("b"));
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var body = new BodyData
|
||||||
|
{
|
||||||
|
BodyAsString = "b"
|
||||||
|
};
|
||||||
|
var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", ClientIp, body);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
var requestMatchResult = new RequestMatchResult();
|
||||||
|
Check.That(requestBuilder.GetMatchingScore(request, requestMatchResult)).IsEqualTo(1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Request_WithBody_FuncJson()
|
||||||
|
{
|
||||||
|
// Assign
|
||||||
|
var requestBuilder = Request.Create().UsingAnyVerb().WithBody(b => b != null);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var body = new BodyData
|
||||||
|
{
|
||||||
|
BodyAsJson = 123
|
||||||
|
};
|
||||||
|
var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", ClientIp, body);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
var requestMatchResult = new RequestMatchResult();
|
||||||
|
Check.That(requestBuilder.GetMatchingScore(request, requestMatchResult)).IsEqualTo(1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Request_WithBody_FuncByteArray()
|
||||||
|
{
|
||||||
|
// Assign
|
||||||
|
var requestBuilder = Request.Create().UsingAnyVerb().WithBody((byte[] b) => b != null);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var body = new BodyData
|
||||||
|
{
|
||||||
|
BodyAsBytes = new byte[0]
|
||||||
|
};
|
||||||
|
var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", ClientIp, body);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
var requestMatchResult = new RequestMatchResult();
|
||||||
|
Check.That(requestBuilder.GetMatchingScore(request, requestMatchResult)).IsEqualTo(1.0);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Request_WithBodyExactMatcher()
|
public void Request_WithBodyExactMatcher()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using NFluent;
|
using NFluent;
|
||||||
|
using WireMock.Matchers;
|
||||||
using WireMock.Matchers.Request;
|
using WireMock.Matchers.Request;
|
||||||
using WireMock.RequestBuilders;
|
using WireMock.RequestBuilders;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
@@ -35,5 +36,33 @@ namespace WireMock.Net.Tests
|
|||||||
var requestMatchResult = new RequestMatchResult();
|
var requestMatchResult = new RequestMatchResult();
|
||||||
Check.That(spec.GetMatchingScore(request, requestMatchResult)).IsEqualTo(0.0);
|
Check.That(spec.GetMatchingScore(request, requestMatchResult)).IsEqualTo(0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Request_WithClientIP_WildcardMatcher()
|
||||||
|
{
|
||||||
|
// given
|
||||||
|
var spec = Request.Create().WithClientIP(new WildcardMatcher("127.0.0.2"));
|
||||||
|
|
||||||
|
// when
|
||||||
|
var request = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.2");
|
||||||
|
|
||||||
|
// then
|
||||||
|
var requestMatchResult = new RequestMatchResult();
|
||||||
|
Check.That(spec.GetMatchingScore(request, requestMatchResult)).IsEqualTo(1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Request_WithClientIP_Func()
|
||||||
|
{
|
||||||
|
// given
|
||||||
|
var spec = Request.Create().WithClientIP(c => c.Contains("."));
|
||||||
|
|
||||||
|
// when
|
||||||
|
var request = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.2");
|
||||||
|
|
||||||
|
// then
|
||||||
|
var requestMatchResult = new RequestMatchResult();
|
||||||
|
Check.That(spec.GetMatchingScore(request, requestMatchResult)).IsEqualTo(1.0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using NFluent;
|
using NFluent;
|
||||||
|
using WireMock.Matchers;
|
||||||
using WireMock.Matchers.Request;
|
using WireMock.Matchers.Request;
|
||||||
using WireMock.RequestBuilders;
|
using WireMock.RequestBuilders;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
@@ -25,10 +26,24 @@ namespace WireMock.Net.Tests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Request_WithUrlExact()
|
public void Request_WithUrl_WildcardMatcher()
|
||||||
{
|
{
|
||||||
// given
|
// given
|
||||||
var spec = Request.Create().WithUrl("http://localhost/foo");
|
var spec = Request.Create().WithUrl(new WildcardMatcher("*/foo"));
|
||||||
|
|
||||||
|
// when
|
||||||
|
var request = new RequestMessage(new Uri("http://localhost/foo"), "blabla", ClientIp);
|
||||||
|
|
||||||
|
// then
|
||||||
|
var requestMatchResult = new RequestMatchResult();
|
||||||
|
Check.That(spec.GetMatchingScore(request, requestMatchResult)).IsEqualTo(1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Request_WithUrl_Func()
|
||||||
|
{
|
||||||
|
// given
|
||||||
|
var spec = Request.Create().WithUrl(url => url.Contains("foo"));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
var request = new RequestMessage(new Uri("http://localhost/foo"), "blabla", ClientIp);
|
var request = new RequestMessage(new Uri("http://localhost/foo"), "blabla", ClientIp);
|
||||||
|
|||||||
Reference in New Issue
Block a user