diff --git a/src/WireMock.Net/Server/FluentMockServer.Admin.cs b/src/WireMock.Net/Server/FluentMockServer.Admin.cs
index c4d365f9..d3b2d3b5 100644
--- a/src/WireMock.Net/Server/FluentMockServer.Admin.cs
+++ b/src/WireMock.Net/Server/FluentMockServer.Admin.cs
@@ -49,9 +49,10 @@ namespace WireMock.Server
// __admin/request/{guid}
Given(Request.Create().WithPath(_adminRequestsGuidPathMatcher).UsingGet()).RespondWith(new DynamicResponseProvider(RequestGet));
+ Given(Request.Create().WithPath(_adminRequestsGuidPathMatcher).UsingDelete()).RespondWith(new DynamicResponseProvider(RequestDelete));
}
- #region Mapping
+ #region Mapping/{guid}
private ResponseMessage MappingGet(RequestMessage requestMessage)
{
Guid guid = Guid.Parse(requestMessage.Path.Substring(AdminMappings.Length + 1));
@@ -90,11 +91,12 @@ namespace WireMock.Server
{
Guid guid = Guid.Parse(requestMessage.Path.Substring(AdminMappings.Length + 1));
- DeleteMapping(guid);
+ if (DeleteMapping(guid))
+ return new ResponseMessage { Body = "Mapping removed" };
- return new ResponseMessage { Body = "Mapping removed" };
+ return new ResponseMessage { Body = "Mapping not found" };
}
- #endregion Mapping
+ #endregion Mapping/{guid}
#region Mappings
private ResponseMessage MappingsGet(RequestMessage requestMessage)
@@ -140,7 +142,7 @@ namespace WireMock.Server
}
#endregion Mappings
- #region Request
+ #region Request/{guid}
private ResponseMessage RequestGet(RequestMessage requestMessage)
{
Guid guid = Guid.Parse(requestMessage.Path.Substring(AdminRequests.Length + 1));
@@ -153,7 +155,17 @@ namespace WireMock.Server
return ToJson(model);
}
- #endregion Request
+
+ private ResponseMessage RequestDelete(RequestMessage requestMessage)
+ {
+ Guid guid = Guid.Parse(requestMessage.Path.Substring(AdminRequests.Length + 1));
+
+ if (DeleteLogEntry(guid))
+ return new ResponseMessage { Body = "Request removed" };
+
+ return new ResponseMessage { Body = "Request not found" };
+ }
+ #endregion Request/{guid}
#region Requests
private ResponseMessage RequestsGet(RequestMessage requestMessage)
diff --git a/src/WireMock.Net/Server/FluentMockServer.cs b/src/WireMock.Net/Server/FluentMockServer.cs
index d30ab586..7d2e5db4 100644
--- a/src/WireMock.Net/Server/FluentMockServer.cs
+++ b/src/WireMock.Net/Server/FluentMockServer.cs
@@ -141,6 +141,27 @@ namespace WireMock.Server
}
}
+ ///
+ /// Deletes the mapping.
+ ///
+ /// The unique identifier.
+ [PublicAPI]
+ public bool DeleteLogEntry(Guid guid)
+ {
+ lock (((ICollection)_logEntries).SyncRoot)
+ {
+ // Check a logentry exists with the same GUID, if so, remove it.
+ var existing = _logEntries.FirstOrDefault(m => m.Guid == guid);
+ if (existing != null)
+ {
+ _logEntries.Remove(existing);
+ return true;
+ }
+
+ return false;
+ }
+ }
+
///
/// Resets the mappings.
///
@@ -153,9 +174,11 @@ namespace WireMock.Server
}
///
- /// Resets the mappings.
+ /// Deletes the mapping.
///
- public void DeleteMapping(Guid guid)
+ /// The unique identifier.
+ [PublicAPI]
+ public bool DeleteMapping(Guid guid)
{
lock (((ICollection)_mappings).SyncRoot)
{
@@ -164,7 +187,10 @@ namespace WireMock.Server
if (existingMapping != null)
{
_mappings.Remove(existingMapping);
+ return true;
}
+
+ return false;
}
}