From 60e06f0710bda3fc80e20c0a61070cc81418f8ee Mon Sep 17 00:00:00 2001 From: Noah Lerner Date: Sun, 2 Feb 2020 14:53:23 +0200 Subject: [PATCH 01/13] Fix new Delete with body missing from IWireMockAdminApi interface --- src/WireMock.Net.RestClient/IWireMockAdminApi.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/WireMock.Net.RestClient/IWireMockAdminApi.cs b/src/WireMock.Net.RestClient/IWireMockAdminApi.cs index 17c67f413..bf9b2d757 100644 --- a/src/WireMock.Net.RestClient/IWireMockAdminApi.cs +++ b/src/WireMock.Net.RestClient/IWireMockAdminApi.cs @@ -74,6 +74,14 @@ public interface IWireMockAdminApi [Delete("mappings")] Task DeleteMappingsAsync(); + /// + /// Delete mappings according to GUIDs + /// + /// MappingModels + [Delete("mappings")] + [Header("Content-Type", "application/json")] + Task DeleteMappingsAsync([Body] IList mappings); + /// /// Delete (reset) all mappings. /// From c98878c3cb2f471b37168359ce2784304538635f Mon Sep 17 00:00:00 2001 From: Noah Lerner Date: Sun, 2 Feb 2020 15:54:17 +0200 Subject: [PATCH 02/13] Admin Delete with mappings in body (#409) --- .../Server/WireMockServer.Admin.cs | 60 +++++++++++++++++-- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/src/WireMock.Net/Server/WireMockServer.Admin.cs b/src/WireMock.Net/Server/WireMockServer.Admin.cs index e0b6a0d19..9755e0234 100644 --- a/src/WireMock.Net/Server/WireMockServer.Admin.cs +++ b/src/WireMock.Net/Server/WireMockServer.Admin.cs @@ -555,11 +555,63 @@ private ResponseMessage MappingsPost(RequestMessage requestMessage) private ResponseMessage MappingsDelete(RequestMessage requestMessage) { - ResetMappings(); + if (!string.IsNullOrEmpty(requestMessage.Body)) + { + var deletedGuids = MappingsDeleteMappingFromBody(requestMessage); + if (deletedGuids != null) + { + return ResponseMessageBuilder.Create($"Mappings deleted. Affected GUIDs: [{string.Join(", ", deletedGuids.ToArray())}]"); + } + else + { + // return bad request + return ResponseMessageBuilder.Create("Poorly formed mapping JSON.", 400); + } + } + else + { + ResetMappings(); - ResetScenarios(); + ResetScenarios(); + + return ResponseMessageBuilder.Create("Mappings deleted"); + } + } + + private IEnumerable MappingsDeleteMappingFromBody(RequestMessage requestMessage) + { + var deletedGuids = new List(); + + try + { + var mappingModels = DeserializeRequestMessageToArray(requestMessage); + foreach (var mappingModel in mappingModels) + { + if (mappingModel.Guid.HasValue) + { + if (DeleteMapping(mappingModel.Guid.Value)) + { + deletedGuids.Add(mappingModel.Guid.Value); + } + else + { + _settings.Logger.Debug($"Did not find/delete mapping with GUID: {mappingModel.Guid.Value}."); + } + } + } + } + catch (ArgumentException a) + { + _settings.Logger.Error("ArgumentException: {0}", a); + return null; + } + catch (Exception e) + { + _settings.Logger.Error("Exception: {0}", e); + return null; + } - return ResponseMessageBuilder.Create("Mappings deleted"); + return deletedGuids; } private ResponseMessage MappingsReset(RequestMessage requestMessage) @@ -873,7 +925,7 @@ private ResponseMessage ToJson(T result, bool keepNullValues = false) DetectedBodyType = BodyType.String, BodyAsString = JsonConvert.SerializeObject(result, keepNullValues ? _settingsIncludeNullValues : _jsonSerializerSettings) }, - StatusCode = (int) HttpStatusCode.OK, + StatusCode = (int)HttpStatusCode.OK, Headers = new Dictionary> { { HttpKnownHeaderNames.ContentType, new WireMockList(ContentTypeJson) } } }; } From 2bff1821f8816379303fe6c75244a8506870c4bc Mon Sep 17 00:00:00 2001 From: Noah Lerner Date: Sun, 2 Feb 2020 18:54:11 +0200 Subject: [PATCH 03/13] Add unit test for delete with body --- .../WireMock.Net.Tests.csproj | 6 +++ .../WireMockServer.Admin.cs | 50 +++++++++++++++++++ .../00000002-ee28-4f29-ae63-1ac9b0802d86.json | 50 +++++++++++++++++++ .../00000002-ee28-4f29-ae63-1ac9b0802d87.json | 24 +++++++++ 4 files changed, 130 insertions(+) create mode 100644 test/WireMock.Net.Tests/__admin/mappings/delete_mappings/00000002-ee28-4f29-ae63-1ac9b0802d86.json create mode 100644 test/WireMock.Net.Tests/__admin/mappings/delete_mappings/00000002-ee28-4f29-ae63-1ac9b0802d87.json diff --git a/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj b/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj index 4f341c22f..93a04aecb 100644 --- a/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj +++ b/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj @@ -77,6 +77,12 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + PreserveNewest diff --git a/test/WireMock.Net.Tests/WireMockServer.Admin.cs b/test/WireMock.Net.Tests/WireMockServer.Admin.cs index a745399ec..3acb8d1f1 100644 --- a/test/WireMock.Net.Tests/WireMockServer.Admin.cs +++ b/test/WireMock.Net.Tests/WireMockServer.Admin.cs @@ -1,7 +1,9 @@ using System; using System.IO; using System.Linq; +using System.Net; using System.Net.Http; +using System.Text; using System.Threading.Tasks; using Moq; using Newtonsoft.Json; @@ -404,5 +406,53 @@ public void WireMockServer_Admin_AddMappingsAndSaveToFile() staticMappingHandlerMock.Verify(m => m.FolderExists("folder"), Times.Once); staticMappingHandlerMock.Verify(m => m.WriteMappingFile(Path.Combine("folder", guid + ".json"), It.IsAny()), Times.Once); } + + [Fact] + public async void WireMockServer_Admin_DeleteMappings() + { + // Arrange + var server = WireMockServer.Start(new WireMockServerSettings + { + AllowBodyForAllHttpMethods = true, + StartAdminInterface = true, + ReadStaticMappings = false, + WatchStaticMappings = false, + WatchStaticMappingsInSubdirectories = false + }); + string folder = Path.Combine(GetCurrentFolder(), "__admin", "mappings", "delete_mappings"); + server.ReadStaticMappings(folder); + + Check.That(server.MappingModels).HasSize(2); + + string deleteBody = GetRequestBodyFromJsonsInFolder(folder); + + // Act + var request = new HttpRequestMessage() + { + Method = HttpMethod.Delete, + RequestUri = new Uri($"http://localhost:{server.Ports[0]}/__admin/mappings"), + Content = new StringContent(deleteBody, Encoding.UTF8, "application/json") + }; + + var response = await new HttpClient().SendAsync(request); + + // Assert + Check.That(await response.Content.ReadAsStringAsync()).Equals("{\"Status\":\"Mappings deleted. Affected GUIDs: [00000002-ee28-4f29-ae63-1ac9b0802d86, 00000002-ee28-4f29-ae63-1ac9b0802d87]\"}"); + Check.That(response.StatusCode).Equals(HttpStatusCode.OK); + Check.That(server.MappingModels).HasSize(0); + } + + private string GetRequestBodyFromJsonsInFolder(string folder) + { + string[] mappingFiles = Directory.GetFiles(folder, "*.json"); + string requestBody = "["; + foreach (string file in mappingFiles) + { + requestBody += $"{File.ReadAllText(file)},"; + } + requestBody = $"{requestBody.TrimEnd(',')}]"; + + return requestBody; + } } } \ No newline at end of file diff --git a/test/WireMock.Net.Tests/__admin/mappings/delete_mappings/00000002-ee28-4f29-ae63-1ac9b0802d86.json b/test/WireMock.Net.Tests/__admin/mappings/delete_mappings/00000002-ee28-4f29-ae63-1ac9b0802d86.json new file mode 100644 index 000000000..9f0cb7e32 --- /dev/null +++ b/test/WireMock.Net.Tests/__admin/mappings/delete_mappings/00000002-ee28-4f29-ae63-1ac9b0802d86.json @@ -0,0 +1,50 @@ +{ + "Guid": "00000002-ee28-4f29-ae63-1ac9b0802d86", + "Priority": 0, + "Request": { + "Path": { + "Matchers": [ + { + "Name": "ExactMatcher", + "Pattern": "/dbs" + } + ] + }, + "Methods": [ + "post" + ], + "Body": { + "Matcher": { + "Name": "WildcardMatcher", + "Pattern": "*db-abc*" + } + } + }, + "Response": { + "StatusCode": 200, + "Body": "{\"_rid\":\"\",\"Databases\":[{\"id\":\"db-abc\",\"_rid\":\"hBYWAA==\",\"_self\":\"dbs/hBYWAA==/\",\"_etag\":\"\\\"00008e00-0000-0000-0000-58b94f910000\\\"\",\"_colls\":\"colls/\",\"_users\":\"users/\",\"_ts\":1488539514}],\"_count\":1}", + "BodyEncoding": { + "CodePage": 65001, + "EncodingName": "Unicode (UTF-8)", + "WebName": "utf-8" + }, + "UseTransformer": false, + "Headers": { + "x-ms-schemaversion": "1.3", + "Date": "Mon, 06 Mar 2017 10:56:43 GMT", + "x-ms-activity-id": "5e39429d-7fcc-4b75-93d6-519b7c582772", + "x-ms-item-count": "1", + "x-ms-resource-usage": "databases=1;", + "x-ms-gatewayversion": "version=1.11.164.3", + "x-ms-xp-role": "2", + "x-ms-session-token": "0:25908", + "x-ms-serviceversion": "version=1.11.150.2", + "Strict-Transport-Security": "max-age=31536000", + "Server": "Microsoft-HTTPAPI/2.0", + "x-ms-last-state-change-utc": "Fri, 24 Feb 2017 11:35:16.053 GMT", + "Content-Type": "application/json", + "x-ms-request-charge": "4.68", + "x-ms-resource-quota": "databases=100;" + } + } +} \ No newline at end of file diff --git a/test/WireMock.Net.Tests/__admin/mappings/delete_mappings/00000002-ee28-4f29-ae63-1ac9b0802d87.json b/test/WireMock.Net.Tests/__admin/mappings/delete_mappings/00000002-ee28-4f29-ae63-1ac9b0802d87.json new file mode 100644 index 000000000..20c4b9497 --- /dev/null +++ b/test/WireMock.Net.Tests/__admin/mappings/delete_mappings/00000002-ee28-4f29-ae63-1ac9b0802d87.json @@ -0,0 +1,24 @@ +{ + "Guid": "00000002-ee28-4f29-ae63-1ac9b0802d87", + "Priority": 0, + "Request": { + "Path": { + "Matchers": [ + { + "Name": "ExactMatcher", + "Pattern": "/response/staticfile" + } + ] + }, + "Methods": [ + "get" + ] + }, + "Response": { + "StatusCode": 200, + "BodyAsFile": "MyXmlResponse.xml", + "Headers": { + "Content-Type": "application/xml" + } + } +} \ No newline at end of file From d6dbd6ec6bab197e1eab7ab790b671c9f87a1020 Mon Sep 17 00:00:00 2001 From: Noah Lerner Date: Sun, 2 Feb 2020 18:57:44 +0200 Subject: [PATCH 04/13] change order of checks for readability. looks nicer. --- test/WireMock.Net.Tests/WireMockServer.Admin.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/WireMock.Net.Tests/WireMockServer.Admin.cs b/test/WireMock.Net.Tests/WireMockServer.Admin.cs index 3acb8d1f1..445900824 100644 --- a/test/WireMock.Net.Tests/WireMockServer.Admin.cs +++ b/test/WireMock.Net.Tests/WireMockServer.Admin.cs @@ -437,9 +437,9 @@ public async void WireMockServer_Admin_DeleteMappings() var response = await new HttpClient().SendAsync(request); // Assert - Check.That(await response.Content.ReadAsStringAsync()).Equals("{\"Status\":\"Mappings deleted. Affected GUIDs: [00000002-ee28-4f29-ae63-1ac9b0802d86, 00000002-ee28-4f29-ae63-1ac9b0802d87]\"}"); - Check.That(response.StatusCode).Equals(HttpStatusCode.OK); Check.That(server.MappingModels).HasSize(0); + Check.That(response.StatusCode).Equals(HttpStatusCode.OK); + Check.That(await response.Content.ReadAsStringAsync()).Equals("{\"Status\":\"Mappings deleted. Affected GUIDs: [00000002-ee28-4f29-ae63-1ac9b0802d86, 00000002-ee28-4f29-ae63-1ac9b0802d87]\"}"); } private string GetRequestBodyFromJsonsInFolder(string folder) From e4148e08ff11edc3ec5a3f39324a63b8c3a83b9e Mon Sep 17 00:00:00 2001 From: Noah Lerner Date: Tue, 4 Feb 2020 16:04:28 +0200 Subject: [PATCH 05/13] Allow body in DELETE requests --- src/WireMock.Net/Util/BodyParser.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/WireMock.Net/Util/BodyParser.cs b/src/WireMock.Net/Util/BodyParser.cs index 19ff326f3..6a6ff102e 100644 --- a/src/WireMock.Net/Util/BodyParser.cs +++ b/src/WireMock.Net/Util/BodyParser.cs @@ -34,7 +34,7 @@ internal static class BodyParser { "GET", false }, { "PUT", true }, { "POST", true }, - { "DELETE", false }, + { "DELETE", true }, { "TRACE", false }, { "OPTIONS", true }, { "CONNECT", false }, From b60b54421ec7798e5ce124a431d666221774f722 Mon Sep 17 00:00:00 2001 From: Noah Lerner Date: Tue, 4 Feb 2020 20:39:30 +0200 Subject: [PATCH 06/13] Fix unit tests according to DELETE supporting body --- test/WireMock.Net.Tests/Util/BodyParserTests.cs | 2 +- test/WireMock.Net.Tests/WireMockServerTests.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/WireMock.Net.Tests/Util/BodyParserTests.cs b/test/WireMock.Net.Tests/Util/BodyParserTests.cs index b64401654..63b715000 100644 --- a/test/WireMock.Net.Tests/Util/BodyParserTests.cs +++ b/test/WireMock.Net.Tests/Util/BodyParserTests.cs @@ -148,7 +148,7 @@ public async Task BodyParser_Parse_ContentTypeIsNull(string contentType, string [InlineData("GET", false)] [InlineData("PUT", true)] [InlineData("POST", true)] - [InlineData("DELETE", false)] + [InlineData("DELETE", true)] [InlineData("TRACE", false)] [InlineData("OPTIONS", true)] [InlineData("CONNECT", false)] diff --git a/test/WireMock.Net.Tests/WireMockServerTests.cs b/test/WireMock.Net.Tests/WireMockServerTests.cs index b236f71a8..2e13c28b5 100644 --- a/test/WireMock.Net.Tests/WireMockServerTests.cs +++ b/test/WireMock.Net.Tests/WireMockServerTests.cs @@ -161,7 +161,6 @@ public async Task WireMockServer_Should_exclude_restrictedResponseHeader() } [Theory] - [InlineData("DELETE")] #if !NET452 [InlineData("TRACE")] [InlineData("GET")] @@ -195,6 +194,7 @@ public async Task WireMockServer_Should_exclude_body_for_methods_where_body_is_d [InlineData("PUT")] [InlineData("OPTIONS")] [InlineData("REPORT")] + [InlineData("DELETE")] [InlineData("SOME-UNKNOWN-METHOD")] // default behavior for unknown methods is to allow a body (see BodyParser.ShouldParseBody) public async Task WireMockServer_Should_not_exclude_body_for_supported_methods(string method) { From fdbfe34ef9c0194da42e34ec6711686c28edfccc Mon Sep 17 00:00:00 2001 From: Noah Lerner Date: Tue, 4 Feb 2020 21:07:01 +0200 Subject: [PATCH 07/13] Re-run CI --- test/WireMock.Net.Tests/WireMockServer.Admin.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/test/WireMock.Net.Tests/WireMockServer.Admin.cs b/test/WireMock.Net.Tests/WireMockServer.Admin.cs index 445900824..26368c7d3 100644 --- a/test/WireMock.Net.Tests/WireMockServer.Admin.cs +++ b/test/WireMock.Net.Tests/WireMockServer.Admin.cs @@ -44,7 +44,6 @@ public void WireMockServer_Admin_StartStop() public void WireMockServer_Admin_ResetMappings() { var server = WireMockServer.Start(); - string folder = Path.Combine(GetCurrentFolder(), "__admin", "mappings"); server.ReadStaticMappings(folder); From 4869b30c3fa9c9ec5703ee9a32ddfee7f9f9a3ae Mon Sep 17 00:00:00 2001 From: Noah Lerner Date: Wed, 5 Feb 2020 11:01:16 +0200 Subject: [PATCH 08/13] Fix DELETE with body unit test --- .../WireMock.Net.Tests.csproj | 6 --- .../WireMockServer.Admin.cs | 47 +++++++++-------- .../00000002-ee28-4f29-ae63-1ac9b0802d86.json | 50 ------------------- .../00000002-ee28-4f29-ae63-1ac9b0802d87.json | 24 --------- 4 files changed, 26 insertions(+), 101 deletions(-) delete mode 100644 test/WireMock.Net.Tests/__admin/mappings/delete_mappings/00000002-ee28-4f29-ae63-1ac9b0802d86.json delete mode 100644 test/WireMock.Net.Tests/__admin/mappings/delete_mappings/00000002-ee28-4f29-ae63-1ac9b0802d87.json diff --git a/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj b/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj index 93a04aecb..4f341c22f 100644 --- a/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj +++ b/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj @@ -77,12 +77,6 @@ PreserveNewest - - PreserveNewest - - - PreserveNewest - PreserveNewest diff --git a/test/WireMock.Net.Tests/WireMockServer.Admin.cs b/test/WireMock.Net.Tests/WireMockServer.Admin.cs index 26368c7d3..a85d92c47 100644 --- a/test/WireMock.Net.Tests/WireMockServer.Admin.cs +++ b/test/WireMock.Net.Tests/WireMockServer.Admin.cs @@ -412,46 +412,51 @@ public async void WireMockServer_Admin_DeleteMappings() // Arrange var server = WireMockServer.Start(new WireMockServerSettings { - AllowBodyForAllHttpMethods = true, StartAdminInterface = true, ReadStaticMappings = false, WatchStaticMappings = false, WatchStaticMappingsInSubdirectories = false }); - string folder = Path.Combine(GetCurrentFolder(), "__admin", "mappings", "delete_mappings"); - server.ReadStaticMappings(folder); - Check.That(server.MappingModels).HasSize(2); + server + .Given(Request.Create().WithPath("/path1")) + .AtPriority(0) + .RespondWith(Response.Create().WithStatusCode(200)); + server + .Given(Request.Create().WithPath("/path2")) + .AtPriority(1) + .RespondWith(Response.Create().WithStatusCode(200)); + server + .Given(Request.Create().WithPath("/path3")) + .AtPriority(2) + .RespondWith(Response.Create().WithStatusCode(200)); - string deleteBody = GetRequestBodyFromJsonsInFolder(folder); + Check.That(server.MappingModels.Count()).Equals(3); + + string guid1 = server.MappingModels.ElementAt(1).Guid.ToString(); + string guid2 = server.MappingModels.ElementAt(2).Guid.ToString(); + string guid3 = server.MappingModels.ElementAt(3).Guid.ToString(); + + string guidsJsonBody = $"[" + + $"{guid1}," + + $"{guid2}" + + $"]"; // Act var request = new HttpRequestMessage() { Method = HttpMethod.Delete, RequestUri = new Uri($"http://localhost:{server.Ports[0]}/__admin/mappings"), - Content = new StringContent(deleteBody, Encoding.UTF8, "application/json") + Content = new StringContent(guidsJsonBody, Encoding.UTF8, "application/json") }; var response = await new HttpClient().SendAsync(request); // Assert - Check.That(server.MappingModels).HasSize(0); + Check.That(server.MappingModels).HasSize(1); + Check.That(server.MappingModels.First().Guid.ToString()).Equals(guid3); Check.That(response.StatusCode).Equals(HttpStatusCode.OK); - Check.That(await response.Content.ReadAsStringAsync()).Equals("{\"Status\":\"Mappings deleted. Affected GUIDs: [00000002-ee28-4f29-ae63-1ac9b0802d86, 00000002-ee28-4f29-ae63-1ac9b0802d87]\"}"); - } - - private string GetRequestBodyFromJsonsInFolder(string folder) - { - string[] mappingFiles = Directory.GetFiles(folder, "*.json"); - string requestBody = "["; - foreach (string file in mappingFiles) - { - requestBody += $"{File.ReadAllText(file)},"; - } - requestBody = $"{requestBody.TrimEnd(',')}]"; - - return requestBody; + Check.That(await response.Content.ReadAsStringAsync()).Equals($"{{\"Status\":\"Mappings deleted. Affected GUIDs: [{guid1}, {guid2}]\"}}"); } } } \ No newline at end of file diff --git a/test/WireMock.Net.Tests/__admin/mappings/delete_mappings/00000002-ee28-4f29-ae63-1ac9b0802d86.json b/test/WireMock.Net.Tests/__admin/mappings/delete_mappings/00000002-ee28-4f29-ae63-1ac9b0802d86.json deleted file mode 100644 index 9f0cb7e32..000000000 --- a/test/WireMock.Net.Tests/__admin/mappings/delete_mappings/00000002-ee28-4f29-ae63-1ac9b0802d86.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "Guid": "00000002-ee28-4f29-ae63-1ac9b0802d86", - "Priority": 0, - "Request": { - "Path": { - "Matchers": [ - { - "Name": "ExactMatcher", - "Pattern": "/dbs" - } - ] - }, - "Methods": [ - "post" - ], - "Body": { - "Matcher": { - "Name": "WildcardMatcher", - "Pattern": "*db-abc*" - } - } - }, - "Response": { - "StatusCode": 200, - "Body": "{\"_rid\":\"\",\"Databases\":[{\"id\":\"db-abc\",\"_rid\":\"hBYWAA==\",\"_self\":\"dbs/hBYWAA==/\",\"_etag\":\"\\\"00008e00-0000-0000-0000-58b94f910000\\\"\",\"_colls\":\"colls/\",\"_users\":\"users/\",\"_ts\":1488539514}],\"_count\":1}", - "BodyEncoding": { - "CodePage": 65001, - "EncodingName": "Unicode (UTF-8)", - "WebName": "utf-8" - }, - "UseTransformer": false, - "Headers": { - "x-ms-schemaversion": "1.3", - "Date": "Mon, 06 Mar 2017 10:56:43 GMT", - "x-ms-activity-id": "5e39429d-7fcc-4b75-93d6-519b7c582772", - "x-ms-item-count": "1", - "x-ms-resource-usage": "databases=1;", - "x-ms-gatewayversion": "version=1.11.164.3", - "x-ms-xp-role": "2", - "x-ms-session-token": "0:25908", - "x-ms-serviceversion": "version=1.11.150.2", - "Strict-Transport-Security": "max-age=31536000", - "Server": "Microsoft-HTTPAPI/2.0", - "x-ms-last-state-change-utc": "Fri, 24 Feb 2017 11:35:16.053 GMT", - "Content-Type": "application/json", - "x-ms-request-charge": "4.68", - "x-ms-resource-quota": "databases=100;" - } - } -} \ No newline at end of file diff --git a/test/WireMock.Net.Tests/__admin/mappings/delete_mappings/00000002-ee28-4f29-ae63-1ac9b0802d87.json b/test/WireMock.Net.Tests/__admin/mappings/delete_mappings/00000002-ee28-4f29-ae63-1ac9b0802d87.json deleted file mode 100644 index 20c4b9497..000000000 --- a/test/WireMock.Net.Tests/__admin/mappings/delete_mappings/00000002-ee28-4f29-ae63-1ac9b0802d87.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "Guid": "00000002-ee28-4f29-ae63-1ac9b0802d87", - "Priority": 0, - "Request": { - "Path": { - "Matchers": [ - { - "Name": "ExactMatcher", - "Pattern": "/response/staticfile" - } - ] - }, - "Methods": [ - "get" - ] - }, - "Response": { - "StatusCode": 200, - "BodyAsFile": "MyXmlResponse.xml", - "Headers": { - "Content-Type": "application/xml" - } - } -} \ No newline at end of file From 15eb6a79e8714061450f38f62a1ea39fd947843c Mon Sep 17 00:00:00 2001 From: Noah Lerner Date: Wed, 5 Feb 2020 11:08:06 +0200 Subject: [PATCH 09/13] Fix ElementAt index in mappings list --- test/WireMock.Net.Tests/WireMockServer.Admin.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/WireMock.Net.Tests/WireMockServer.Admin.cs b/test/WireMock.Net.Tests/WireMockServer.Admin.cs index a85d92c47..f5d0a6a1f 100644 --- a/test/WireMock.Net.Tests/WireMockServer.Admin.cs +++ b/test/WireMock.Net.Tests/WireMockServer.Admin.cs @@ -433,9 +433,9 @@ public async void WireMockServer_Admin_DeleteMappings() Check.That(server.MappingModels.Count()).Equals(3); - string guid1 = server.MappingModels.ElementAt(1).Guid.ToString(); - string guid2 = server.MappingModels.ElementAt(2).Guid.ToString(); - string guid3 = server.MappingModels.ElementAt(3).Guid.ToString(); + string guid1 = server.MappingModels.ElementAt(0).Guid.ToString(); + string guid2 = server.MappingModels.ElementAt(1).Guid.ToString(); + string guid3 = server.MappingModels.ElementAt(2).Guid.ToString(); string guidsJsonBody = $"[" + $"{guid1}," + From 479c9c938f16bce77733d5aa89a3e27b802fd923 Mon Sep 17 00:00:00 2001 From: Noah Lerner Date: Wed, 5 Feb 2020 12:13:05 +0200 Subject: [PATCH 10/13] Fix DELETE with body unit test --- .../WireMockServer.Admin.cs | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/test/WireMock.Net.Tests/WireMockServer.Admin.cs b/test/WireMock.Net.Tests/WireMockServer.Admin.cs index f5d0a6a1f..22c6a12a7 100644 --- a/test/WireMock.Net.Tests/WireMockServer.Admin.cs +++ b/test/WireMock.Net.Tests/WireMockServer.Admin.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; @@ -433,13 +434,17 @@ public async void WireMockServer_Admin_DeleteMappings() Check.That(server.MappingModels.Count()).Equals(3); - string guid1 = server.MappingModels.ElementAt(0).Guid.ToString(); - string guid2 = server.MappingModels.ElementAt(1).Guid.ToString(); - string guid3 = server.MappingModels.ElementAt(2).Guid.ToString(); + Guid? guid1 = server.MappingModels.ElementAt(0).Guid; + Guid? guid2 = server.MappingModels.ElementAt(1).Guid; + Guid? guid3 = server.MappingModels.ElementAt(2).Guid; + + Check.That(guid1).IsNotNull(); + Check.That(guid2).IsNotNull(); + Check.That(guid3).IsNotNull(); string guidsJsonBody = $"[" + - $"{guid1}," + - $"{guid2}" + + $"{{\"Guid\": \"{guid1}\"}}," + + $"{{\"Guid\": \"{guid2}\"}}" + $"]"; // Act @@ -453,8 +458,10 @@ public async void WireMockServer_Admin_DeleteMappings() var response = await new HttpClient().SendAsync(request); // Assert - Check.That(server.MappingModels).HasSize(1); - Check.That(server.MappingModels.First().Guid.ToString()).Equals(guid3); + IEnumerable guids = server.MappingModels.Select(mapping => mapping.Guid.Value); + Check.That(!guids.Contains(guid1.Value)); + Check.That(!guids.Contains(guid2.Value)); + Check.That(guids.Contains(guid3.Value)); Check.That(response.StatusCode).Equals(HttpStatusCode.OK); Check.That(await response.Content.ReadAsStringAsync()).Equals($"{{\"Status\":\"Mappings deleted. Affected GUIDs: [{guid1}, {guid2}]\"}}"); } From bd0748e575a95836eab00edd4c745d7bc17e8977 Mon Sep 17 00:00:00 2001 From: Noah Lerner Date: Wed, 5 Feb 2020 12:13:53 +0200 Subject: [PATCH 11/13] Fix theory tag must be accompanied by some InlineData or Member --- test/WireMock.Net.Tests/WireMockServerTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/WireMock.Net.Tests/WireMockServerTests.cs b/test/WireMock.Net.Tests/WireMockServerTests.cs index 2e13c28b5..6cf0bedf5 100644 --- a/test/WireMock.Net.Tests/WireMockServerTests.cs +++ b/test/WireMock.Net.Tests/WireMockServerTests.cs @@ -160,8 +160,8 @@ public async Task WireMockServer_Should_exclude_restrictedResponseHeader() Check.That(response.Headers.Contains("Transfer-Encoding")).IsFalse(); } - [Theory] #if !NET452 + [Theory] [InlineData("TRACE")] [InlineData("GET")] #endif From c092b37ba9d1138ec74d9527c74e0da29ff998a2 Mon Sep 17 00:00:00 2001 From: Noah Lerner Date: Wed, 5 Feb 2020 14:14:59 +0200 Subject: [PATCH 12/13] Fix didn't use correct checking syntax --- test/WireMock.Net.Tests/WireMockServer.Admin.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/WireMock.Net.Tests/WireMockServer.Admin.cs b/test/WireMock.Net.Tests/WireMockServer.Admin.cs index 22c6a12a7..38b8f8879 100644 --- a/test/WireMock.Net.Tests/WireMockServer.Admin.cs +++ b/test/WireMock.Net.Tests/WireMockServer.Admin.cs @@ -459,9 +459,9 @@ public async void WireMockServer_Admin_DeleteMappings() // Assert IEnumerable guids = server.MappingModels.Select(mapping => mapping.Guid.Value); - Check.That(!guids.Contains(guid1.Value)); - Check.That(!guids.Contains(guid2.Value)); - Check.That(guids.Contains(guid3.Value)); + Check.That(guids.Contains(guid1.Value)).IsFalse(); + Check.That(guids.Contains(guid2.Value)).IsFalse(); + Check.That(guids.Contains(guid3.Value)).IsTrue(); Check.That(response.StatusCode).Equals(HttpStatusCode.OK); Check.That(await response.Content.ReadAsStringAsync()).Equals($"{{\"Status\":\"Mappings deleted. Affected GUIDs: [{guid1}, {guid2}]\"}}"); } From 227c4b3493ad7072306252c7c8e2cc6e5bb6dd73 Mon Sep 17 00:00:00 2001 From: Noah Lerner Date: Wed, 5 Feb 2020 19:00:12 +0200 Subject: [PATCH 13/13] Fix wrap entire unit test in if region --- test/WireMock.Net.Tests/WireMockServerTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/WireMock.Net.Tests/WireMockServerTests.cs b/test/WireMock.Net.Tests/WireMockServerTests.cs index 6cf0bedf5..86ed5f585 100644 --- a/test/WireMock.Net.Tests/WireMockServerTests.cs +++ b/test/WireMock.Net.Tests/WireMockServerTests.cs @@ -164,7 +164,6 @@ public async Task WireMockServer_Should_exclude_restrictedResponseHeader() [Theory] [InlineData("TRACE")] [InlineData("GET")] -#endif public async Task WireMockServer_Should_exclude_body_for_methods_where_body_is_definitely_disallowed(string method) { // Assign @@ -188,6 +187,7 @@ public async Task WireMockServer_Should_exclude_body_for_methods_where_body_is_d // Assert Check.That(response.StatusCode).Equals(HttpStatusCode.OK); } +#endif [Theory] [InlineData("POST")]