From f4ce2dbeb317ddda26541402a641da28e27effc4 Mon Sep 17 00:00:00 2001 From: Stef Heyenrath Date: Fri, 20 Jan 2017 21:25:18 +0100 Subject: [PATCH] get_routes (#12) --- WireMock.Net-Logo.png | Bin 0 -> 13131 bytes .../Request/RequestMessageCompositeMatcher.cs | 14 +++-- ...thRequestBuilder.cs => IRequestBuilder.cs} | 0 src/WireMock/Route.cs | 57 +++++------------- src/WireMock/Server/FluentMockServer.cs | 45 ++++++-------- .../FluentMockServerTests.cs | 37 ++++++------ .../WireMock.Net.Tests/RequestMessageTests.cs | 11 ---- 7 files changed, 61 insertions(+), 103 deletions(-) create mode 100644 WireMock.Net-Logo.png rename src/WireMock/RequestBuilders/{IAndPathRequestBuilder.cs => IRequestBuilder.cs} (100%) diff --git a/WireMock.Net-Logo.png b/WireMock.Net-Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7325bd1305f8cece886390e6682c72f87e8640e9 GIT binary patch literal 13131 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 literal 0 HcmV?d00001 diff --git a/src/WireMock/Matchers/Request/RequestMessageCompositeMatcher.cs b/src/WireMock/Matchers/Request/RequestMessageCompositeMatcher.cs index 54682b5f..25cffda2 100644 --- a/src/WireMock/Matchers/Request/RequestMessageCompositeMatcher.cs +++ b/src/WireMock/Matchers/Request/RequestMessageCompositeMatcher.cs @@ -8,7 +8,13 @@ namespace WireMock.Matchers.Request /// public abstract class RequestMessageCompositeMatcher : IRequestMatcher { - private readonly IEnumerable _requestMatchers; + /// + /// Gets the request matchers. + /// + /// + /// The request matchers. + /// + public IEnumerable RequestMatchers { get; } /// /// Initializes a new instance of the class. @@ -17,9 +23,9 @@ namespace WireMock.Matchers.Request /// /// The request matchers. /// - public RequestMessageCompositeMatcher(IEnumerable requestMatchers) + protected RequestMessageCompositeMatcher(IEnumerable requestMatchers) { - _requestMatchers = requestMatchers; + RequestMatchers = requestMatchers; } /// @@ -31,7 +37,7 @@ namespace WireMock.Matchers.Request /// public bool IsMatch(RequestMessage requestMessage) { - return _requestMatchers.All(spec => spec.IsMatch(requestMessage)); + return RequestMatchers.All(spec => spec.IsMatch(requestMessage)); } } } \ No newline at end of file diff --git a/src/WireMock/RequestBuilders/IAndPathRequestBuilder.cs b/src/WireMock/RequestBuilders/IRequestBuilder.cs similarity index 100% rename from src/WireMock/RequestBuilders/IAndPathRequestBuilder.cs rename to src/WireMock/RequestBuilders/IRequestBuilder.cs diff --git a/src/WireMock/Route.cs b/src/WireMock/Route.cs index a830d995..474b2fab 100644 --- a/src/WireMock/Route.cs +++ b/src/WireMock/Route.cs @@ -1,21 +1,6 @@ -using System.Diagnostics.CodeAnalysis; -using System.Threading.Tasks; +using System.Threading.Tasks; using WireMock.Matchers.Request; -[module: - SuppressMessage("StyleCop.CSharp.ReadabilityRules", - "SA1101:PrefixLocalCallsWithThis", - Justification = "Reviewed. Suppression is OK here, as it conflicts with internal naming rules.")] -[module: - SuppressMessage("StyleCop.CSharp.NamingRules", - "SA1309:FieldNamesMustNotBeginWithUnderscore", - Justification = "Reviewed. Suppression is OK here, as it conflicts with internal naming rules.")] -[module: - SuppressMessage("StyleCop.CSharp.DocumentationRules", - "SA1633:FileMustHaveHeader", - Justification = "Reviewed. Suppression is OK here, as unknown copyright and company.")] -// ReSharper disable ArrangeThisQualifier -// ReSharper disable InconsistentNaming namespace WireMock { /// @@ -26,54 +11,44 @@ namespace WireMock /// /// The _request matcher. /// - private readonly IRequestMatcher _requestSpec; + public IRequestMatcher RequestMatcher { get; } /// /// The _provider. /// - private readonly IProvideResponses _provider; + public IProvideResponses Provider { get; } /// /// Initializes a new instance of the class. /// - /// - /// The request matcher. - /// - /// - /// The provider. - /// - public Route(IRequestMatcher requestSpec, IProvideResponses provider) + /// The request matcher. + /// The provider. + public Route(IRequestMatcher requestMatcher, IProvideResponses provider) { - _requestSpec = requestSpec; - _provider = provider; + RequestMatcher = requestMatcher; + Provider = provider; } /// /// The response to. /// - /// - /// The request. - /// - /// - /// The . - /// - public Task ResponseTo(RequestMessage requestMessage) + /// The request message. + /// The . + public async Task ResponseTo(RequestMessage requestMessage) { - return _provider.ProvideResponse(requestMessage); + return await Provider.ProvideResponse(requestMessage); } /// - /// The is request handled. + /// Determines whether the RequestMessage is handled. /// - /// - /// The request. - /// + /// The request message. /// - /// The . + /// true if RequestMessage is handled; otherwise, false. /// public bool IsRequestHandled(RequestMessage requestMessage) { - return _requestSpec.IsMatch(requestMessage); + return RequestMatcher.IsMatch(requestMessage); } } } \ No newline at end of file diff --git a/src/WireMock/Server/FluentMockServer.cs b/src/WireMock/Server/FluentMockServer.cs index 12dce9ed..bb4a379e 100644 --- a/src/WireMock/Server/FluentMockServer.cs +++ b/src/WireMock/Server/FluentMockServer.cs @@ -72,6 +72,20 @@ namespace WireMock.Server } } + /// + /// Gets the routes. + /// + public IEnumerable Routes + { + get + { + lock (((ICollection)_routes).SyncRoot) + { + return new ReadOnlyCollection(_routes); + } + } + } + /// /// Start this FluentMockServer. /// @@ -95,31 +109,6 @@ namespace WireMock.Server return new FluentMockServer(port, ssl); } - /// - /// Create this FluentMockServer. - /// - /// - /// The port. - /// - /// - /// The SSL support. - /// - /// - /// The . - /// - [PublicAPI] - public static FluentMockServer Create(int port = 0, bool ssl = false) - { - Check.Condition(port, p => p > 0, nameof(port)); - - if (port == 0) - { - port = Ports.FindFreeTcpPort(); - } - - return new FluentMockServer(port, ssl); - } - /// /// Initializes a new instance of the class, and starts the server. /// @@ -195,15 +184,15 @@ namespace WireMock.Server /// /// The given. /// - /// + /// /// The request matcher. /// /// /// The . /// - public IRespondWithAProvider Given(IRequestMatcher requestSpec) + public IRespondWithAProvider Given(IRequestMatcher requestMatcher) { - return new RespondWithAProvider(RegisterRoute, requestSpec); + return new RespondWithAProvider(RegisterRoute, requestMatcher); } /// diff --git a/test/WireMock.Net.Tests/FluentMockServerTests.cs b/test/WireMock.Net.Tests/FluentMockServerTests.cs index d70336d4..8d2559ce 100644 --- a/test/WireMock.Net.Tests/FluentMockServerTests.cs +++ b/test/WireMock.Net.Tests/FluentMockServerTests.cs @@ -1,6 +1,5 @@ using System; using System.Diagnostics; -using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Net; using System.Net.Http; @@ -11,24 +10,6 @@ using WireMock.RequestBuilders; using WireMock.ResponseBuilders; using WireMock.Server; -[module: - SuppressMessage("StyleCop.CSharp.ReadabilityRules", - "SA1101:PrefixLocalCallsWithThis", - Justification = "Reviewed. Suppression is OK here, as it conflicts with internal naming rules.")] -[module: - SuppressMessage("StyleCop.CSharp.NamingRules", - "SA1309:FieldNamesMustNotBeginWithUnderscore", - Justification = "Reviewed. Suppression is OK here, as it conflicts with internal naming rules.")] -[module: - SuppressMessage("StyleCop.CSharp.DocumentationRules", - "SA1600:ElementsMustBeDocumented", - Justification = "Reviewed. Suppression is OK here, as it's a tests class.")] -[module: - SuppressMessage("StyleCop.CSharp.DocumentationRules", - "SA1633:FileMustHaveHeader", - Justification = "Reviewed. Suppression is OK here, as unknown copyright and company.")] -// ReSharper disable ArrangeThisQualifier -// ReSharper disable InconsistentNaming namespace WireMock.Net.Tests { [TestFixture] @@ -37,6 +18,24 @@ namespace WireMock.Net.Tests { private FluentMockServer _server; + [Test] + public void FluentMockServer_get_routes() + { + _server = FluentMockServer.Start(); + + _server.Given(Request.Create().WithUrl("/foo1").UsingGet()) + .RespondWith(Response.Create().WithStatusCode(201).WithBody("1")); + + _server.Given(Request.Create().WithUrl("/foo2").UsingGet()) + .RespondWith(Response.Create().WithStatusCode(202).WithBody("2")); + + var routes = _server.Routes; + + Check.That(routes).HasSize(2); + Check.That(routes.First().RequestMatcher).IsNotNull(); + Check.That(routes.First().Provider).IsNotNull(); + } + [Test] public async Task Should_respond_to_request() { diff --git a/test/WireMock.Net.Tests/RequestMessageTests.cs b/test/WireMock.Net.Tests/RequestMessageTests.cs index 3322eedc..9d8e0547 100644 --- a/test/WireMock.Net.Tests/RequestMessageTests.cs +++ b/test/WireMock.Net.Tests/RequestMessageTests.cs @@ -1,19 +1,8 @@ using System; -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; using System.Text; using NFluent; using NUnit.Framework; -[module: - SuppressMessage("StyleCop.CSharp.DocumentationRules", - "SA1600:ElementsMustBeDocumented", - Justification = "Reviewed. Suppression is OK here, as it's a tests class.")] -[module: - SuppressMessage("StyleCop.CSharp.DocumentationRules", - "SA1633:FileMustHaveHeader", - Justification = "Reviewed. Suppression is OK here, as unknown copyright and company.")] -// ReSharper disable InconsistentNaming namespace WireMock.Net.Tests { [TestFixture]