From e87f9700579c5d2aa1a03db50cc59ea59b80f530 Mon Sep 17 00:00:00 2001 From: Stef Heyenrath Date: Thu, 29 Mar 2018 08:51:22 +0200 Subject: [PATCH] PathSegments (#114) --- src/WireMock.Net/RequestMessage.cs | 9 ++++++++ .../ResponseBuilders/IBodyResponseBuilder.cs | 4 +--- .../WireMock.Net.Tests/RequestMessageTests.cs | 21 +++++++++++++++++++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/WireMock.Net/RequestMessage.cs b/src/WireMock.Net/RequestMessage.cs index 990e03ba..875c1974 100644 --- a/src/WireMock.Net/RequestMessage.cs +++ b/src/WireMock.Net/RequestMessage.cs @@ -34,6 +34,11 @@ namespace WireMock /// public string Path { get; } + /// + /// Gets the path segments. + /// + public string[] PathSegments { get; } + /// /// Gets the method. /// @@ -120,6 +125,7 @@ namespace WireMock Port = url.Port; Origin = $"{url.Scheme}://{url.Host}:{url.Port}"; Path = WebUtility.UrlDecode(url.AbsolutePath); + PathSegments = Path.Split('/').Skip(1).ToArray(); Method = method.ToLower(); ClientIP = clientIP; @@ -157,11 +163,14 @@ namespace WireMock Port = url.Port; Origin = $"{url.Scheme}://{url.Host}:{url.Port}"; Path = WebUtility.UrlDecode(url.AbsolutePath); + PathSegments = Path.Split('/').Skip(1).ToArray(); Method = method.ToLower(); ClientIP = clientIP; + BodyAsBytes = bodyAsBytes; Body = body; BodyEncoding = bodyEncoding; + Headers = headers?.ToDictionary(header => header.Key, header => new WireMockList(header.Value)); Cookies = cookies; RawQuery = WebUtility.UrlDecode(url.Query); diff --git a/src/WireMock.Net/ResponseBuilders/IBodyResponseBuilder.cs b/src/WireMock.Net/ResponseBuilders/IBodyResponseBuilder.cs index b8613428..4d4689cf 100644 --- a/src/WireMock.Net/ResponseBuilders/IBodyResponseBuilder.cs +++ b/src/WireMock.Net/ResponseBuilders/IBodyResponseBuilder.cs @@ -18,7 +18,6 @@ namespace WireMock.ResponseBuilders /// A . IResponseBuilder WithBody([NotNull] string body, [CanBeNull] string destination = BodyDestinationFormat.SameAsSource, [CanBeNull] Encoding encoding = null); - /// /// WithBody : Create a ... response based on a callback function. /// @@ -26,8 +25,7 @@ namespace WireMock.ResponseBuilders /// The Body Destination format (SameAsSource, String or Bytes). /// The body encoding. /// A . - IResponseBuilder WithBody([NotNull] Func bodyFactory, [CanBeNull] string destination = BodyDestinationFormat.SameAsSource, [CanBeNull] Encoding encoding = null); - + IResponseBuilder WithBody([NotNull] Func bodyFactory, [CanBeNull] string destination = BodyDestinationFormat.SameAsSource, [CanBeNull] Encoding encoding = null); /// /// WithBody : Create a ... response based on a bytearray. diff --git a/test/WireMock.Net.Tests/RequestMessageTests.cs b/test/WireMock.Net.Tests/RequestMessageTests.cs index 14742b44..1db6b44e 100644 --- a/test/WireMock.Net.Tests/RequestMessageTests.cs +++ b/test/WireMock.Net.Tests/RequestMessageTests.cs @@ -1,5 +1,6 @@ using System; using NFluent; +using WireMock.Util; using Xunit; namespace WireMock.Net.Tests @@ -50,5 +51,25 @@ namespace WireMock.Net.Tests Check.That(request.GetParameter("key")).Contains("2"); Check.That(request.GetParameter("key")).Contains("3"); } + + [Fact] + public void RequestMessage_Constructor1_PathSegments() + { + // Assign + var request = new RequestMessage(new Uri("http://localhost/a/b/c"), "POST", ClientIp); + + // Assert + Check.That(request.PathSegments).ContainsExactly("a", "b", "c"); + } + + [Fact] + public void RequestMessage_Constructor2_PathSegments() + { + // Assign + var request = new RequestMessage(new Uri("http://localhost/a/b/c"), "POST", ClientIp, new BodyData()); + + // Assert + Check.That(request.PathSegments).ContainsExactly("a", "b", "c"); + } } } \ No newline at end of file