path <> url

This commit is contained in:
Stef Heyenrath
2017-01-29 14:24:48 +01:00
parent 7fe0f41a9d
commit fddc85f48d
9 changed files with 167 additions and 198 deletions

View File

@@ -19,7 +19,7 @@ namespace WireMock.Net.ConsoleApplication
Console.WriteLine("FluentMockServer running at {0}", server.Port);
server
.Given(Request.Create().WithUrl(u => u.Contains("x")).UsingGet())
.Given(Request.Create().WithPath(u => u.Contains("x")).UsingGet())
.RespondWith(Response.Create()
.WithStatusCode(200)
.WithHeader("Content-Type", "application/json")
@@ -27,55 +27,54 @@ namespace WireMock.Net.ConsoleApplication
// http://localhost:8080/gffgfgf/sddsds?start=1000&stop=1&stop=2
server
.Given(Request.Create().WithUrl("/*").UsingGet().WithParam("start"))
.Given(Request.Create().WithPath("/*").UsingGet().WithParam("start"))
.WithGuid(Guid.Parse("90356dba-b36c-469a-a17e-669cd84f1f05"))
.RespondWith(Response.Create()
.WithStatusCode(200)
.WithHeader("Content-Type", "application/json")
.WithHeader("Transformed-Postman-Token", "token is {{request.headers.Postman-Token}}")
.WithBody(@"{""msg"": ""Hello world, {{request.url}}, {{request.path}} :
bykey={{request.query.start}}, bykey={{request.query.stop}}, byidx0={{request.query.stop.[0]}}, byidx1={{request.query.stop.[1]}}""")
.WithBody(@"{""msg"": ""Hello world, {{request.path}}, bykey={{request.query.start}}, bykey={{request.query.stop}}, byidx0={{request.query.stop.[0]}}, byidx1={{request.query.stop.[1]}}""")
.WithTransformer()
.WithDelay(TimeSpan.FromMilliseconds(100))
);
server
.Given(Request.Create().WithUrl("/data").UsingPost().WithBody(b => b.Contains("e")))
.Given(Request.Create().WithPath("/data").UsingPost().WithBody(b => b.Contains("e")))
.RespondWith(Response.Create()
.WithStatusCode(201)
.WithHeader("Content-Type", "application/json")
.WithBody(@"{ ""result"": ""data posted with FUNC 201""}"));
server
.Given(Request.Create().WithUrl("/data", "/ax").UsingPost().WithHeader("Content-Type", "application/json*"))
.Given(Request.Create().WithPath("/data", "/ax").UsingPost().WithHeader("Content-Type", "application/json*"))
.RespondWith(Response.Create()
.WithStatusCode(201)
.WithHeader("Content-Type", "application/json")
.WithBody(@"{ ""result"": ""data posted with 201""}"));
server
.Given(Request.Create().WithUrl("/json").UsingPost().WithBody(new JsonPathMatcher("$.things[?(@.name == 'RequiredThing')]")))
.Given(Request.Create().WithPath("/json").UsingPost().WithBody(new JsonPathMatcher("$.things[?(@.name == 'RequiredThing')]")))
.RespondWith(Response.Create()
.WithStatusCode(201)
.WithHeader("Content-Type", "application/json")
.WithBody(@"{ ""result"": ""json posted with 201""}"));
server
.Given(Request.Create().WithUrl("/json2").UsingPost().WithBody("x"))
.Given(Request.Create().WithPath("/json2").UsingPost().WithBody("x"))
.RespondWith(Response.Create()
.WithStatusCode(201)
.WithHeader("Content-Type", "application/json")
.WithBody(@"{ ""result"": ""json posted with x - 201""}"));
server
.Given(Request.Create().WithUrl("/data").UsingDelete())
.Given(Request.Create().WithPath("/data").UsingDelete())
.RespondWith(Response.Create()
.WithStatusCode(200)
.WithHeader("Content-Type", "application/json")
.WithBody(@"{ ""result"": ""data deleted with 200""}"));
server
.Given(Request.Create().WithUrl("/nobody").UsingGet())
.Given(Request.Create().WithPath("/nobody").UsingGet())
.RespondWith(Response.Create()
.WithStatusCode(200));

View File

@@ -1,11 +1,9 @@
using System.Collections.Generic;
namespace WireMock.Admin.Mappings
namespace WireMock.Admin.Mappings
{
/// <summary>
/// UrlModel
/// PathModel
/// </summary>
public class UrlModel
public class PathModel
{
/// <summary>
/// Gets or sets the matchers.

View File

@@ -8,12 +8,12 @@ namespace WireMock.Admin.Mappings
public class RequestModel
{
/// <summary>
/// Gets or sets the URL. (Can be a string or a UrlModel)
/// Gets or sets the Path. (Can be a string or a PathModel)
/// </summary>
/// <value>
/// The URL.
/// </value>
public object Url { get; set; }
public object Path { get; set; }
/// <summary>
/// The methods

View File

@@ -59,7 +59,7 @@ namespace WireMock.Matchers.Request
public bool IsMatch(RequestMessage requestMessage)
{
if (Matchers != null)
return Matchers.Any(matcher => matcher.IsMatch(requestMessage.Path));
return Matchers.Any(matcher => matcher.IsMatch(requestMessage.Url));
if (_urlFuncs != null)
return _urlFuncs.Any(func => func(requestMessage.Url));

View File

@@ -9,27 +9,6 @@ namespace WireMock.RequestBuilders
/// </summary>
public interface IUrlAndPathRequestBuilder : IMethodRequestBuilder
{
/// <summary>
/// The with url.
/// </summary>
/// <param name="matchers">The matchers.</param>
/// <returns>The <see cref="IRequestBuilder"/>.</returns>
IRequestBuilder WithUrl([NotNull] params IMatcher[] matchers);
/// <summary>
/// The with url.
/// </summary>
/// <param name="urls">The urls.</param>
/// <returns>The <see cref="IRequestBuilder"/>.</returns>
IRequestBuilder WithUrl([NotNull] params string[] urls);
/// <summary>
/// The with url.
/// </summary>
/// <param name="funcs">The url funcs.</param>
/// <returns>The <see cref="IRequestBuilder"/>.</returns>
IRequestBuilder WithUrl([NotNull] params Func<string, bool>[] funcs);
/// <summary>
/// The with path.
/// </summary>
@@ -44,11 +23,32 @@ namespace WireMock.RequestBuilders
/// <returns>The <see cref="IRequestBuilder"/>.</returns>
IRequestBuilder WithPath([NotNull] params string[] paths);
/// <summary>
/// The with path.
/// </summary>
/// <param name="funcs">The path funcs.</param>
/// <returns>The <see cref="IRequestBuilder"/>.</returns>
IRequestBuilder WithPath([NotNull] params Func<string, bool>[] funcs);
/// <summary>
/// The with url.
/// </summary>
/// <param name="matchers">The matchers.</param>
/// <returns>The <see cref="IRequestBuilder"/>.</returns>
IRequestBuilder WithUrl([NotNull] params IMatcher[] matchers);
/// <summary>
/// The with url.
/// </summary>
/// <param name="urls">The urls.</param>
/// <returns>The <see cref="IRequestBuilder"/>.</returns>
IRequestBuilder WithUrl([NotNull] params string[] urls);
/// <summary>
/// The with path.
/// </summary>
/// <param name="func">The path func.</param>
/// <returns>The <see cref="IRequestBuilder"/>.</returns>
IRequestBuilder WithPath([NotNull] params Func<string, bool>[] func);
IRequestBuilder WithUrl([NotNull] params Func<string, bool>[] func);
}
}

View File

@@ -54,13 +54,46 @@ namespace WireMock.RequestBuilders
}
/// <summary>
/// The with url.
/// The with path.
/// </summary>
/// <param name="matchers">The matchers.</param>
/// <returns>The <see cref="IRequestBuilder"/>.</returns>
public IRequestBuilder WithUrl(params IMatcher[] matchers)
public IRequestBuilder WithPath(params IMatcher[] matchers)
{
_requestMatchers.Add(new RequestMessageUrlMatcher(matchers));
_requestMatchers.Add(new RequestMessagePathMatcher(matchers));
return this;
}
/// <summary>
/// The with path.
/// </summary>
/// <param name="paths">The paths.</param>
/// <returns>The <see cref="IRequestBuilder"/>.</returns>
public IRequestBuilder WithPath(params string[] paths)
{
_requestMatchers.Add(new RequestMessagePathMatcher(paths));
return this;
}
/// <summary>
/// The with path.
/// </summary>
/// <param name="funcs">The path func.</param>
/// <returns>The <see cref="IRequestBuilder"/>.</returns>
public IRequestBuilder WithPath(params Func<string, bool>[] funcs)
{
_requestMatchers.Add(new RequestMessagePathMatcher(funcs));
return this;
}
/// <summary>
/// The with url.
/// </summary>
/// <param name="matcher">The matcher.</param>
/// <returns>The <see cref="IRequestBuilder"/>.</returns>
public IRequestBuilder WithUrl(params IMatcher[] matcher)
{
_requestMatchers.Add(new RequestMessageUrlMatcher(matcher));
return this;
}
@@ -86,39 +119,6 @@ namespace WireMock.RequestBuilders
return this;
}
/// <summary>
/// The with url.
/// </summary>
/// <param name="matcher">The matcher.</param>
/// <returns>The <see cref="IRequestBuilder"/>.</returns>
public IRequestBuilder WithPath(params IMatcher[] matcher)
{
_requestMatchers.Add(new RequestMessagePathMatcher(matcher));
return this;
}
/// <summary>
/// The with path.
/// </summary>
/// <param name="paths">The path.</param>
/// <returns>The <see cref="IRequestBuilder"/>.</returns>
public IRequestBuilder WithPath(params string[] paths)
{
_requestMatchers.Add(new RequestMessagePathMatcher(paths));
return this;
}
/// <summary>
/// The with path.
/// </summary>
/// <param name="funcs">The path func.</param>
/// <returns>The <see cref="IRequestBuilder"/>.</returns>
public IRequestBuilder WithPath(params Func<string, bool>[] funcs)
{
_requestMatchers.Add(new RequestMessagePathMatcher(funcs));
return this;
}
/// <summary>
/// The using get.
/// </summary>

View File

@@ -29,8 +29,8 @@ namespace WireMock.Server
private void InitAdmin()
{
// __admin/mappings
Given(Request.Create().WithUrl(AdminMappings).UsingGet()).RespondWith(new DynamicResponseProvider(MappingsGet));
Given(Request.Create().WithUrl(AdminMappings).UsingPost()).RespondWith(new DynamicResponseProvider(MappingsPost));
Given(Request.Create().WithPath(AdminMappings).UsingGet()).RespondWith(new DynamicResponseProvider(MappingsGet));
Given(Request.Create().WithPath(AdminMappings).UsingPost()).RespondWith(new DynamicResponseProvider(MappingsPost));
// __admin/mappings/{guid}
var guidPathMatcher = new RegexMatcher(@"^\/__admin\/mappings\/(\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{0,1})$");
@@ -38,7 +38,7 @@ namespace WireMock.Server
// __admin/requests
Given(Request.Create().WithUrl(AdminRequests).UsingGet()).RespondWith(new DynamicResponseProvider(RequestsGet));
Given(Request.Create().WithPath(AdminRequests).UsingGet()).RespondWith(new DynamicResponseProvider(RequestsGet));
}
private ResponseMessage MappingGet(RequestMessage requestMessage)
@@ -89,14 +89,14 @@ namespace WireMock.Server
private IRequestBuilder InitRequestBuilder(MappingModel mappingModel)
{
IRequestBuilder requestBuilder = Request.Create();
string url = mappingModel.Request.Url as string;
if (url != null)
requestBuilder = requestBuilder.WithUrl(url);
string path = mappingModel.Request.Path as string;
if (path != null)
requestBuilder = requestBuilder.WithPath(path);
else
requestBuilder = requestBuilder.WithUrl("/*");
//UrlModel urlModel = mappingModel.Request.Url as UrlModel;
requestBuilder = requestBuilder.WithPath("/*");
//PathModel urlModel = mappingModel.Request.Path as PathModel;
//if (urlModel?.Matchers != null)
// builder = builder.WithUrl(urlModel.Matchers.Select(Map).ToArray());
// builder = builder.WithPath(urlModel.Matchers.Select(Map).ToArray());
if (mappingModel.Request.Methods != null)
requestBuilder = requestBuilder.UsingVerb(mappingModel.Request.Methods);
@@ -209,7 +209,7 @@ namespace WireMock.Server
Guid = mapping.Guid,
Request = new RequestModel
{
Url = new UrlModel
Path = new PathModel
{
Matchers = urlMatchers != null ? Map(urlMatchers.Where(m => m.Matchers != null).SelectMany(m => m.Matchers)) : null
},

View File

@@ -25,11 +25,11 @@ namespace WireMock.Net.Tests
var guid = Guid.Parse("90356dba-b36c-469a-a17e-669cd84f1f05");
_server = FluentMockServer.Start();
_server.Given(Request.Create().WithUrl("/foo1").UsingGet())
_server.Given(Request.Create().WithPath("/foo1").UsingGet())
.WithGuid(guid)
.RespondWith(Response.Create().WithStatusCode(201).WithBody("1"));
_server.Given(Request.Create().WithUrl("/foo2").UsingGet())
_server.Given(Request.Create().WithPath("/foo2").UsingGet())
.RespondWith(Response.Create().WithStatusCode(202).WithBody("2"));
var mappings = _server.Mappings.ToArray();
@@ -48,7 +48,7 @@ namespace WireMock.Net.Tests
var guid = Guid.Parse("90356dba-b36c-469a-a17e-669cd84f1f05");
_server = FluentMockServer.Start();
_server.Given(Request.Create().WithUrl("/1").UsingGet())
_server.Given(Request.Create().WithPath("/1").UsingGet())
.WithGuid(guid)
.RespondWith(Response.Create().WithStatusCode(500));
@@ -56,7 +56,7 @@ namespace WireMock.Net.Tests
Check.That(mappings).HasSize(1);
Check.That(mappings.First().Guid).Equals(guid);
_server.Given(Request.Create().WithUrl("/2").UsingGet())
_server.Given(Request.Create().WithPath("/2").UsingGet())
.WithGuid(guid)
.RespondWith(Response.Create().WithStatusCode(500));
@@ -88,7 +88,7 @@ namespace WireMock.Net.Tests
_server
.Given(Request.Create()
.WithUrl("/foo")
.WithPath("/foo")
.UsingGet())
.RespondWith(Response.Create()
.WithStatusCode(200)
@@ -107,7 +107,7 @@ namespace WireMock.Net.Tests
// given
_server = FluentMockServer.Start();
_server.Given(Request.Create().WithUrl("/foo").UsingGet()).RespondWith(Response.Create().WithBodyAsBase64("SGVsbG8gV29ybGQ/"));
_server.Given(Request.Create().WithPath("/foo").UsingGet()).RespondWith(Response.Create().WithBodyAsBase64("SGVsbG8gV29ybGQ/"));
// when
var response = await new HttpClient().GetStringAsync("http://localhost:" + _server.Port + "/foo");
@@ -141,7 +141,7 @@ namespace WireMock.Net.Tests
await new HttpClient().GetAsync("http://localhost:" + _server.Port + "/bar");
// then
var result = _server.SearchLogsFor(Request.Create().WithUrl(new RegexMatcher("^/b.*"))).ToList();
var result = _server.SearchLogsFor(Request.Create().WithPath(new RegexMatcher("^/b.*"))).ToList();
Check.That(result).HasSize(1);
var requestLogged = result.First();
@@ -171,7 +171,7 @@ namespace WireMock.Net.Tests
_server
.Given(Request.Create()
.WithUrl("/foo")
.WithPath("/foo")
.UsingGet())
.RespondWith(Response.Create()
.WithBody(@"{ msg: ""Hello world!""}"));
@@ -192,14 +192,14 @@ namespace WireMock.Net.Tests
_server
.Given(Request.Create()
.WithUrl("/foo")
.WithPath("/foo")
.UsingGet())
.RespondWith(Response.Create()
.WithStatusCode(307)
.WithHeader("Location", "/bar"));
_server
.Given(Request.Create()
.WithUrl("/bar")
.WithPath("/bar")
.UsingGet())
.RespondWith(Response.Create()
.WithStatusCode(200)
@@ -220,7 +220,7 @@ namespace WireMock.Net.Tests
_server
.Given(Request.Create()
.WithUrl("/*"))
.WithPath("/*"))
.RespondWith(Response.Create()
.WithBody(@"{ msg: ""Hello world!""}")
.WithDelay(TimeSpan.FromMilliseconds(200)));
@@ -242,7 +242,7 @@ namespace WireMock.Net.Tests
_server = FluentMockServer.Start();
_server.AddRequestProcessingDelay(TimeSpan.FromMilliseconds(200));
_server
.Given(Request.Create().WithUrl("/*"))
.Given(Request.Create().WithPath("/*"))
.RespondWith(Response.Create().WithBody(@"{ msg: ""Hello world!""}"));
// when

View File

@@ -12,39 +12,10 @@ namespace WireMock.Net.Tests
public class RequestTests
{
[Test]
public void Should_specify_requests_matching_given_url()
public void Should_specify_requests_matching_given_path()
{
// given
var spec = Request.Create().WithUrl("/foo");
// when
string bodyAsString = "whatever";
byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo"), "blabla", body, bodyAsString);
// then
Check.That(spec.IsMatch(request)).IsTrue();
}
[Test]
public void Should_specify_requests_matching_given_urls()
{
var requestBuilder = Request.Create().WithUrl("/x1", "/x2");
string bodyAsString = "whatever";
byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
var request1 = new RequestMessage(new Uri("http://localhost/x1"), "blabla", body, bodyAsString);
var request2 = new RequestMessage(new Uri("http://localhost/x2"), "blabla", body, bodyAsString);
Check.That(requestBuilder.IsMatch(request1)).IsTrue();
Check.That(requestBuilder.IsMatch(request2)).IsTrue();
}
[Test]
public void Should_specify_requests_matching_given_urlFuncs()
{
// given
var spec = Request.Create().WithUrl(url => url.EndsWith("/foo"));
var spec = Request.Create().WithPath("/foo");
// when
var request = new RequestMessage(new Uri("http://localhost/foo"), "blabla");
@@ -54,100 +25,113 @@ namespace WireMock.Net.Tests
}
[Test]
public void Should_specify_requests_matching_given_url_prefix()
public void Should_specify_requests_matching_given_paths()
{
var requestBuilder = Request.Create().WithPath("/x1", "/x2");
var request1 = new RequestMessage(new Uri("http://localhost/x1"), "blabla");
var request2 = new RequestMessage(new Uri("http://localhost/x2"), "blabla");
Check.That(requestBuilder.IsMatch(request1)).IsTrue();
Check.That(requestBuilder.IsMatch(request2)).IsTrue();
}
[Test]
public void Should_specify_requests_matching_given_pathFuncs()
{
// given
var spec = Request.Create().WithUrl(new RegexMatcher("^/foo"));
var spec = Request.Create().WithPath(url => url.EndsWith("/foo"));
// when
string bodyAsString = "whatever";
byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo/bar"), "blabla", body, bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo"), "blabla");
// then
Check.That(spec.IsMatch(request)).IsTrue();
}
[Test]
public void Should_exclude_requests_not_matching_given_url()
public void Should_specify_requests_matching_given_path_prefix()
{
// given
var spec = Request.Create().WithUrl("/foo");
var spec = Request.Create().WithPath(new RegexMatcher("^/foo"));
// when
string bodyAsString = "whatever";
byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/bar"), "blabla", body, bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo/bar"), "blabla");
// then
Check.That(spec.IsMatch(request)).IsTrue();
}
[Test]
public void Should_exclude_requests_not_matching_given_path()
{
// given
var spec = Request.Create().WithPath("/foo");
// when
var request = new RequestMessage(new Uri("http://localhost/bar"), "blabla");
// then
Check.That(spec.IsMatch(request)).IsFalse();
}
[Test]
public void Should_specify_requests_matching_given_path()
public void Should_specify_requests_matching_given_url()
{
// given
var spec = Request.Create().WithPath("/foo");
var spec = Request.Create().WithUrl("*/foo");
// when
string bodyAsString = "whatever";
byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo"), "blabla", body, bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo"), "blabla");
// then
Check.That(spec.IsMatch(request)).IsTrue();
}
[Test]
public void Should_specify_requests_matching_given_url_and_method_put()
public void Should_specify_requests_matching_given_path_and_method_put()
{
// given
var spec = Request.Create().WithUrl("/foo").UsingPut();
var spec = Request.Create().WithPath("/foo").UsingPut();
// when
string bodyAsString = "whatever";
byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT");
// then
Check.That(spec.IsMatch(request)).IsTrue();
}
[Test]
public void Should_specify_requests_matching_given_url_and_method_post()
public void Should_specify_requests_matching_given_path_and_method_post()
{
// given
var spec = Request.Create().WithUrl("/foo").UsingPost();
var spec = Request.Create().WithPath("/foo").UsingPost();
// when
string bodyAsString = "whatever";
byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo"), "POST", body, bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo"), "POST");
// then
Check.That(spec.IsMatch(request)).IsTrue();
}
[Test]
public void Should_specify_requests_matching_given_url_and_method_get()
public void Should_specify_requests_matching_given_path_and_method_get()
{
// given
var spec = Request.Create().WithUrl("/foo").UsingGet();
var spec = Request.Create().WithPath("/foo").UsingGet();
// when
string bodyAsString = "whatever";
byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo"), "GET", body, bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo"), "GET");
// then
Check.That(spec.IsMatch(request)).IsTrue();
}
[Test]
public void Should_specify_requests_matching_given_url_and_method_delete()
public void Should_specify_requests_matching_given_path_and_method_delete()
{
// given
var spec = Request.Create().WithUrl("/foo").UsingDelete();
var spec = Request.Create().WithPath("/foo").UsingDelete();
// when
string bodyAsString = "whatever";
@@ -159,30 +143,26 @@ namespace WireMock.Net.Tests
}
[Test]
public void Should_specify_requests_matching_given_url_and_method_head()
public void Should_specify_requests_matching_given_path_and_method_head()
{
// given
var spec = Request.Create().WithUrl("/foo").UsingHead();
var spec = Request.Create().WithPath("/foo").UsingHead();
// when
string bodyAsString = "whatever";
byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo"), "HEAD", body, bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo"), "HEAD");
// then
Check.That(spec.IsMatch(request)).IsTrue();
}
[Test]
public void Should_exclude_requests_matching_given_url_but_not_http_method()
public void Should_exclude_requests_matching_given_path_but_not_http_method()
{
// given
var spec = Request.Create().WithUrl("/foo").UsingPut();
var spec = Request.Create().WithPath("/foo").UsingPut();
// when
string bodyAsString = "whatever";
byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo"), "HEAD", body, bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo"), "HEAD");
// then
Check.That(spec.IsMatch(request)).IsFalse();
@@ -192,22 +172,20 @@ namespace WireMock.Net.Tests
public void Should_exclude_requests_matching_given_http_method_but_not_url()
{
// given
var spec = Request.Create().WithUrl("/bar").UsingPut();
var spec = Request.Create().WithPath("/bar").UsingPut();
// when
string bodyAsString = "whatever";
byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", body, bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT");
// then
Check.That(spec.IsMatch(request)).IsFalse();
}
[Test]
public void Should_specify_requests_matching_given_url_and_headers()
public void Should_specify_requests_matching_given_path_and_headers()
{
// given
var spec = Request.Create().WithUrl("/foo").UsingAnyVerb().WithHeader("X-toto", "tata");
var spec = Request.Create().WithPath("/foo").UsingAnyVerb().WithHeader("X-toto", "tata");
// when
string bodyAsString = "whatever";
@@ -222,7 +200,7 @@ namespace WireMock.Net.Tests
public void Should_exclude_requests_not_matching_given_headers()
{
// given
var spec = Request.Create().WithUrl("/foo").UsingAnyVerb().WithHeader("X-toto", "tatata");
var spec = Request.Create().WithPath("/foo").UsingAnyVerb().WithHeader("X-toto", "tatata");
// when
string bodyAsString = "whatever";
@@ -237,7 +215,7 @@ namespace WireMock.Net.Tests
public void Should_exclude_requests_not_matching_given_headers_ignorecase()
{
// given
var spec = Request.Create().WithUrl("/foo").UsingAnyVerb().WithHeader("X-toto", "abc", false);
var spec = Request.Create().WithPath("/foo").UsingAnyVerb().WithHeader("X-toto", "abc", false);
// when
string bodyAsString = "whatever";
@@ -252,7 +230,7 @@ namespace WireMock.Net.Tests
public void Should_specify_requests_matching_given_header_prefix()
{
// given
var spec = Request.Create().WithUrl("/foo").UsingAnyVerb().WithHeader("X-toto", "tata*");
var spec = Request.Create().WithPath("/foo").UsingAnyVerb().WithHeader("X-toto", "tata*");
// when
string bodyAsString = "whatever";
@@ -267,7 +245,7 @@ namespace WireMock.Net.Tests
public void Should_specify_requests_matching_given_cookies()
{
// given
var spec = Request.Create().WithUrl("/foo").UsingAnyVerb().WithCookie("session", "a*");
var spec = Request.Create().WithPath("/foo").UsingAnyVerb().WithCookie("session", "a*");
// when
var request = new RequestMessage(new Uri("http://localhost/foo"), "PUT", null, null, null, new Dictionary<string, string> { { "session", "abc" } });
@@ -280,7 +258,7 @@ namespace WireMock.Net.Tests
public void Should_specify_requests_matching_given_body()
{
// given
var spec = Request.Create().WithUrl("/foo").UsingAnyVerb().WithBody("Hello world!");
var spec = Request.Create().WithPath("/foo").UsingAnyVerb().WithBody("Hello world!");
// when
string bodyAsString = "Hello world!";
@@ -295,7 +273,7 @@ namespace WireMock.Net.Tests
public void Should_specify_requests_matching_given_body_as_wildcard()
{
// given
var spec = Request.Create().WithUrl("/foo").UsingAnyVerb().WithBody(new WildcardMatcher("H*o*"));
var spec = Request.Create().WithPath("/foo").UsingAnyVerb().WithBody(new WildcardMatcher("H*o*"));
// when
string bodyAsString = "Hello world!";
@@ -310,7 +288,7 @@ namespace WireMock.Net.Tests
public void Should_specify_requests_matching_given_body_as_regexmatcher()
{
// given
var spec = Request.Create().WithUrl("/foo").UsingAnyVerb().WithBody(new RegexMatcher("H.*o"));
var spec = Request.Create().WithPath("/foo").UsingAnyVerb().WithBody(new RegexMatcher("H.*o"));
// when
string bodyAsString = "Hello world!";
@@ -325,7 +303,7 @@ namespace WireMock.Net.Tests
public void Should_specify_requests_matching_given_body_as_xpathmatcher_true()
{
// given
var spec = Request.Create().WithUrl("/foo").UsingAnyVerb().WithBody(new XPathMatcher("/todo-list[count(todo-item) = 3]"));
var spec = Request.Create().WithPath("/foo").UsingAnyVerb().WithBody(new XPathMatcher("/todo-list[count(todo-item) = 3]"));
// when
string xmlBodyAsString = @"
@@ -345,7 +323,7 @@ namespace WireMock.Net.Tests
public void Should_specify_requests_matching_given_body_as_xpathmatcher_false()
{
// given
var spec = Request.Create().WithUrl("/foo").UsingAnyVerb().WithBody(new XPathMatcher("/todo-list[count(todo-item) = 99]"));
var spec = Request.Create().WithPath("/foo").UsingAnyVerb().WithBody(new XPathMatcher("/todo-list[count(todo-item) = 99]"));
// when
string xmlBodyAsString = @"
@@ -365,7 +343,7 @@ namespace WireMock.Net.Tests
public void Should_specify_requests_matching_given_body_as_jsonpathmatcher_true()
{
// given
var spec = Request.Create().WithUrl("/foo").UsingAnyVerb().WithBody(new JsonPathMatcher("$.things[?(@.name == 'RequiredThing')]"));
var spec = Request.Create().WithPath("/foo").UsingAnyVerb().WithBody(new JsonPathMatcher("$.things[?(@.name == 'RequiredThing')]"));
// when
string bodyAsString = "{ \"things\": [ { \"name\": \"RequiredThing\" }, { \"name\": \"Wiremock\" } ] }";
@@ -380,7 +358,7 @@ namespace WireMock.Net.Tests
public void Should_specify_requests_matching_given_body_as_jsonpathmatcher_false()
{
// given
var spec = Request.Create().WithUrl("/foo").UsingAnyVerb().WithBody(new JsonPathMatcher("$.things[?(@.name == 'RequiredThing')]"));
var spec = Request.Create().WithPath("/foo").UsingAnyVerb().WithBody(new JsonPathMatcher("$.things[?(@.name == 'RequiredThing')]"));
// when
string bodyAsString = "{ \"things\": { \"name\": \"Wiremock\" } }";
@@ -395,7 +373,7 @@ namespace WireMock.Net.Tests
public void Should_exclude_requests_not_matching_given_body()
{
// given
var spec = Request.Create().WithUrl("/foo").UsingAnyVerb().WithBody(" Hello world! ");
var spec = Request.Create().WithPath("/foo").UsingAnyVerb().WithBody(" Hello world! ");
// when
string bodyAsString = "xxx";
@@ -413,9 +391,7 @@ namespace WireMock.Net.Tests
var spec = Request.Create().WithPath("/foo").WithParam("bar", "1", "2");
// when
string bodyAsString = "Hello world!";
byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo?bar=1&bar=2"), "PUT", body, bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo?bar=1&bar=2"), "PUT");
// then
Check.That(spec.IsMatch(request)).IsTrue();
@@ -441,9 +417,7 @@ namespace WireMock.Net.Tests
var spec = Request.Create().WithPath("/foo").UsingAnyVerb().WithParam(p => p.ContainsKey("bar"));
// when
string bodyAsString = "Hello world!";
byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo?bar=1&bar=2"), "PUT", body, bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/foo?bar=1&bar=2"), "PUT");
// then
Check.That(spec.IsMatch(request)).IsTrue();
@@ -456,9 +430,7 @@ namespace WireMock.Net.Tests
var spec = Request.Create().WithPath("/foo").WithParam("bar", "1");
// when
string bodyAsString = "Hello world!";
byte[] body = Encoding.UTF8.GetBytes(bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/test=7"), "PUT", body, bodyAsString);
var request = new RequestMessage(new Uri("http://localhost/test=7"), "PUT");
// then
Check.That(spec.IsMatch(request)).IsFalse();