From 9d1fd8fd516c9a2838825efd7db2b922fd4ee1a2 Mon Sep 17 00:00:00 2001 From: Stef Heyenrath Date: Wed, 18 Jan 2017 08:19:57 +0100 Subject: [PATCH] Solve #10 --- .../Program.cs | 14 +++++ .../RequestBuilders/IVerbRequestBuilder.cs | 8 +++ src/WireMock/RequestBuilders/Request.cs | 12 ++++ .../Http/TinyHttpServerTests.cs | 2 +- test/WireMock.Net.Tests/RequestsTests.cs | 55 ++++++++++++++++++- 5 files changed, 89 insertions(+), 2 deletions(-) diff --git a/examples/WireMock.Net.ConsoleApplication/Program.cs b/examples/WireMock.Net.ConsoleApplication/Program.cs index 0e1be239..d34c5650 100644 --- a/examples/WireMock.Net.ConsoleApplication/Program.cs +++ b/examples/WireMock.Net.ConsoleApplication/Program.cs @@ -30,6 +30,20 @@ namespace WireMock.Net.ConsoleApplication .WithBody(@"{ ""msg"": ""Hello world!""}") ); + server + .Given(Request.WithUrl("/data").UsingPost()) + .RespondWith(Response + .WithStatusCode(201) + .WithHeader("Content-Type", "application/json") + .WithBody(@"{ ""result"": ""data posted with 201""}")); + + server + .Given(Request.WithUrl("/data").UsingDelete()) + .RespondWith(Response + .WithStatusCode(200) + .WithHeader("Content-Type", "application/json") + .WithBody(@"{ ""result"": ""data deleted with 201""}")); + Console.WriteLine("Press any key to stop the server"); Console.ReadKey(); diff --git a/src/WireMock/RequestBuilders/IVerbRequestBuilder.cs b/src/WireMock/RequestBuilders/IVerbRequestBuilder.cs index df8465a0..26a6ddf5 100644 --- a/src/WireMock/RequestBuilders/IVerbRequestBuilder.cs +++ b/src/WireMock/RequestBuilders/IVerbRequestBuilder.cs @@ -21,6 +21,14 @@ /// IHeadersRequestBuilder UsingPost(); + /// + /// The using delete. + /// + /// + /// The . + /// + IHeadersRequestBuilder UsingDelete(); + /// /// The using put. /// diff --git a/src/WireMock/RequestBuilders/Request.cs b/src/WireMock/RequestBuilders/Request.cs index b252cd6a..d0e23098 100644 --- a/src/WireMock/RequestBuilders/Request.cs +++ b/src/WireMock/RequestBuilders/Request.cs @@ -113,6 +113,18 @@ namespace WireMock.RequestBuilders return this; } + /// + /// The using delete. + /// + /// + /// The . + /// + public IHeadersRequestBuilder UsingDelete() + { + _requestSpecs.Add(new RequestVerbSpec("delete")); + return this; + } + /// /// The using head. /// diff --git a/test/WireMock.Net.Tests/Http/TinyHttpServerTests.cs b/test/WireMock.Net.Tests/Http/TinyHttpServerTests.cs index 0286c67b..84880b58 100644 --- a/test/WireMock.Net.Tests/Http/TinyHttpServerTests.cs +++ b/test/WireMock.Net.Tests/Http/TinyHttpServerTests.cs @@ -19,7 +19,7 @@ namespace WireMock.Net.Tests.Http public class TinyHttpServerTests { [Test] - public void Should_Call_Handler_on_Request() + public void Should_call_handler_on_request() { // given var port = Ports.FindFreeTcpPort(); diff --git a/test/WireMock.Net.Tests/RequestsTests.cs b/test/WireMock.Net.Tests/RequestsTests.cs index 91629df6..9d138923 100644 --- a/test/WireMock.Net.Tests/RequestsTests.cs +++ b/test/WireMock.Net.Tests/RequestsTests.cs @@ -71,7 +71,7 @@ namespace WireMock.Net.Tests } [Test] - public void Should_specify_requests_matching_given_url_and_method() + public void Should_specify_requests_matching_given_url_and_method_put() { // given var spec = Request.WithUrl("/foo").UsingPut(); @@ -83,6 +83,58 @@ namespace WireMock.Net.Tests Check.That(spec.IsSatisfiedBy(request)).IsTrue(); } + [Test] + public void Should_specify_requests_matching_given_url_and_method_post() + { + // given + var spec = Request.WithUrl("/foo").UsingPost(); + + // when + var request = new RequestMessage("/foo", string.Empty, "POST", "whatever", new Dictionary()); + + // then + Check.That(spec.IsSatisfiedBy(request)).IsTrue(); + } + + [Test] + public void Should_specify_requests_matching_given_url_and_method_get() + { + // given + var spec = Request.WithUrl("/foo").UsingGet(); + + // when + var request = new RequestMessage("/foo", string.Empty, "GET", "whatever", new Dictionary()); + + // then + Check.That(spec.IsSatisfiedBy(request)).IsTrue(); + } + + [Test] + public void Should_specify_requests_matching_given_url_and_method_delete() + { + // given + var spec = Request.WithUrl("/foo").UsingDelete(); + + // when + var request = new RequestMessage("/foo", string.Empty, "DELETE", "whatever", new Dictionary()); + + // then + Check.That(spec.IsSatisfiedBy(request)).IsTrue(); + } + + [Test] + public void Should_specify_requests_matching_given_url_and_method_head() + { + // given + var spec = Request.WithUrl("/foo").UsingHead(); + + // when + var request = new RequestMessage("/foo", string.Empty, "HEAD", "whatever", new Dictionary()); + + // then + Check.That(spec.IsSatisfiedBy(request)).IsTrue(); + } + [Test] public void Should_exclude_requests_matching_given_url_but_not_http_method() { @@ -227,3 +279,4 @@ namespace WireMock.Net.Tests } } } +