DELETE /__admin/mappings/{guid}

This commit is contained in:
Stef Heyenrath
2017-01-29 18:07:16 +01:00
parent 5db727549c
commit dee7c1bd18
2 changed files with 27 additions and 5 deletions

View File

@@ -37,6 +37,7 @@ namespace WireMock.Server
// __admin/mappings/{guid} // __admin/mappings/{guid}
Given(Request.Create().WithPath(_guidPathMatcher).UsingGet()).RespondWith(new DynamicResponseProvider(MappingGet)); 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).UsingPut().WithHeader("Content-Type", "application/json")).RespondWith(new DynamicResponseProvider(MappingPut));
Given(Request.Create().WithPath(_guidPathMatcher).UsingDelete()).RespondWith(new DynamicResponseProvider(MappingDelete));
// __admin/requests // __admin/requests
@@ -77,6 +78,15 @@ namespace WireMock.Server
return new ResponseMessage { Body = "Mapping updated" }; 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) private ResponseMessage MappingsGet(RequestMessage requestMessage)
{ {
var result = new List<MappingModel>(); var result = new List<MappingModel>();

View File

@@ -144,6 +144,22 @@ namespace WireMock.Server
} }
} }
/// <summary>
/// Resets the mappings.
/// </summary>
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);
}
}
}
/// <summary> /// <summary>
/// The search logs for. /// The search logs for.
/// </summary> /// </summary>
@@ -192,11 +208,7 @@ namespace WireMock.Server
lock (((ICollection)_mappings).SyncRoot) lock (((ICollection)_mappings).SyncRoot)
{ {
// Check a mapping exists with the same GUID, if so, remove it first. // Check a mapping exists with the same GUID, if so, remove it first.
var existingMapping = _mappings.FirstOrDefault(m => m.Guid == mapping.Guid); DeleteMapping(mapping.Guid);
if (existingMapping != null)
{
_mappings.Remove(existingMapping);
}
_mappings.Add(mapping); _mappings.Add(mapping);
} }