From dee7c1bd187d3abe00981fe4b70e5cdc4ff45733 Mon Sep 17 00:00:00 2001 From: Stef Heyenrath Date: Sun, 29 Jan 2017 18:07:16 +0100 Subject: [PATCH] DELETE /__admin/mappings/{guid} --- .../Server/FluentMockServer.Admin.cs | 10 +++++++++ src/WireMock.Net/Server/FluentMockServer.cs | 22 ++++++++++++++----- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/WireMock.Net/Server/FluentMockServer.Admin.cs b/src/WireMock.Net/Server/FluentMockServer.Admin.cs index 161b4c6c..a00e470d 100644 --- a/src/WireMock.Net/Server/FluentMockServer.Admin.cs +++ b/src/WireMock.Net/Server/FluentMockServer.Admin.cs @@ -37,6 +37,7 @@ namespace WireMock.Server // __admin/mappings/{guid} Given(Request.Create().WithPath(_guidPathMatcher).UsingGet()).RespondWith(new DynamicResponseProvider(MappingGet)); Given(Request.Create().WithPath(_guidPathMatcher).UsingPut().WithHeader("Content-Type", "application/json")).RespondWith(new DynamicResponseProvider(MappingPut)); + Given(Request.Create().WithPath(_guidPathMatcher).UsingDelete()).RespondWith(new DynamicResponseProvider(MappingDelete)); // __admin/requests @@ -77,6 +78,15 @@ namespace WireMock.Server return new ResponseMessage { Body = "Mapping updated" }; } + private ResponseMessage MappingDelete(RequestMessage requestMessage) + { + Guid guid = Guid.Parse(requestMessage.Path.TrimStart(AdminMappings.ToCharArray())); + + DeleteMapping(guid); + + return new ResponseMessage { Body = "Mapping removed" }; + } + private ResponseMessage MappingsGet(RequestMessage requestMessage) { var result = new List(); diff --git a/src/WireMock.Net/Server/FluentMockServer.cs b/src/WireMock.Net/Server/FluentMockServer.cs index 3cd5585f..b7c94ac1 100644 --- a/src/WireMock.Net/Server/FluentMockServer.cs +++ b/src/WireMock.Net/Server/FluentMockServer.cs @@ -144,6 +144,22 @@ namespace WireMock.Server } } + /// + /// Resets the mappings. + /// + public void DeleteMapping(Guid guid) + { + lock (((ICollection)_mappings).SyncRoot) + { + // Check a mapping exists with the same GUID, if so, remove it. + var existingMapping = _mappings.FirstOrDefault(m => m.Guid == guid); + if (existingMapping != null) + { + _mappings.Remove(existingMapping); + } + } + } + /// /// The search logs for. /// @@ -192,11 +208,7 @@ namespace WireMock.Server lock (((ICollection)_mappings).SyncRoot) { // Check a mapping exists with the same GUID, if so, remove it first. - var existingMapping = _mappings.FirstOrDefault(m => m.Guid == mapping.Guid); - if (existingMapping != null) - { - _mappings.Remove(existingMapping); - } + DeleteMapping(mapping.Guid); _mappings.Add(mapping); }