mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-04-10 11:24:05 +02:00
Fix parsing Guid (#326)
This commit is contained in:
@@ -366,7 +366,7 @@ namespace WireMock.Server
|
|||||||
#region Mapping/{guid}
|
#region Mapping/{guid}
|
||||||
private ResponseMessage MappingGet(RequestMessage requestMessage)
|
private ResponseMessage MappingGet(RequestMessage requestMessage)
|
||||||
{
|
{
|
||||||
Guid guid = Guid.Parse(requestMessage.Path.Substring(AdminMappings.Length + 1));
|
Guid guid = ParseGuidFromRequestMessage(requestMessage);
|
||||||
var mapping = Mappings.FirstOrDefault(m => !m.IsAdminInterface && m.Guid == guid);
|
var mapping = Mappings.FirstOrDefault(m => !m.IsAdminInterface && m.Guid == guid);
|
||||||
|
|
||||||
if (mapping == null)
|
if (mapping == null)
|
||||||
@@ -382,7 +382,7 @@ namespace WireMock.Server
|
|||||||
|
|
||||||
private ResponseMessage MappingPut(RequestMessage requestMessage)
|
private ResponseMessage MappingPut(RequestMessage requestMessage)
|
||||||
{
|
{
|
||||||
Guid guid = Guid.Parse(requestMessage.Path.TrimStart(AdminMappings.ToCharArray()));
|
Guid guid = ParseGuidFromRequestMessage(requestMessage);
|
||||||
|
|
||||||
var mappingModel = DeserializeObject<MappingModel>(requestMessage);
|
var mappingModel = DeserializeObject<MappingModel>(requestMessage);
|
||||||
Guid? guidFromPut = DeserializeAndAddOrUpdateMapping(mappingModel, guid);
|
Guid? guidFromPut = DeserializeAndAddOrUpdateMapping(mappingModel, guid);
|
||||||
@@ -392,7 +392,7 @@ namespace WireMock.Server
|
|||||||
|
|
||||||
private ResponseMessage MappingDelete(RequestMessage requestMessage)
|
private ResponseMessage MappingDelete(RequestMessage requestMessage)
|
||||||
{
|
{
|
||||||
Guid guid = Guid.Parse(requestMessage.Path.Substring(AdminMappings.Length + 1));
|
Guid guid = ParseGuidFromRequestMessage(requestMessage);
|
||||||
|
|
||||||
if (DeleteMapping(guid))
|
if (DeleteMapping(guid))
|
||||||
{
|
{
|
||||||
@@ -401,6 +401,11 @@ namespace WireMock.Server
|
|||||||
|
|
||||||
return ResponseMessageBuilder.Create("Mapping not found", 404);
|
return ResponseMessageBuilder.Create("Mapping not found", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Guid ParseGuidFromRequestMessage(RequestMessage requestMessage)
|
||||||
|
{
|
||||||
|
return Guid.Parse(requestMessage.Path.Substring(AdminMappings.Length + 1));
|
||||||
|
}
|
||||||
#endregion Mapping/{guid}
|
#endregion Mapping/{guid}
|
||||||
|
|
||||||
#region Mappings
|
#region Mappings
|
||||||
@@ -543,7 +548,7 @@ namespace WireMock.Server
|
|||||||
#region Request/{guid}
|
#region Request/{guid}
|
||||||
private ResponseMessage RequestGet(RequestMessage requestMessage)
|
private ResponseMessage RequestGet(RequestMessage requestMessage)
|
||||||
{
|
{
|
||||||
Guid guid = Guid.Parse(requestMessage.Path.Substring(AdminRequests.Length + 1));
|
Guid guid = ParseGuidFromRequestMessage(requestMessage);
|
||||||
var entry = LogEntries.FirstOrDefault(r => !r.RequestMessage.Path.StartsWith("/__admin/") && r.Guid == guid);
|
var entry = LogEntries.FirstOrDefault(r => !r.RequestMessage.Path.StartsWith("/__admin/") && r.Guid == guid);
|
||||||
|
|
||||||
if (entry == null)
|
if (entry == null)
|
||||||
@@ -559,7 +564,7 @@ namespace WireMock.Server
|
|||||||
|
|
||||||
private ResponseMessage RequestDelete(RequestMessage requestMessage)
|
private ResponseMessage RequestDelete(RequestMessage requestMessage)
|
||||||
{
|
{
|
||||||
Guid guid = Guid.Parse(requestMessage.Path.Substring(AdminRequests.Length + 1));
|
Guid guid = ParseGuidFromRequestMessage(requestMessage);
|
||||||
|
|
||||||
if (DeleteLogEntry(guid))
|
if (DeleteLogEntry(guid))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
using Moq;
|
using System;
|
||||||
using NFluent;
|
|
||||||
using RestEase;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Net.Http.Headers;
|
using System.Net.Http.Headers;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Moq;
|
||||||
|
using NFluent;
|
||||||
|
using RestEase;
|
||||||
using WireMock.Admin.Mappings;
|
using WireMock.Admin.Mappings;
|
||||||
using WireMock.Admin.Settings;
|
using WireMock.Admin.Settings;
|
||||||
using WireMock.Client;
|
using WireMock.Client;
|
||||||
@@ -57,6 +58,36 @@ namespace WireMock.Net.Tests
|
|||||||
Check.That(status.Status).Equals("Settings updated");
|
Check.That(status.Status).Equals("Settings updated");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://github.com/WireMock-Net/WireMock.Net/issues/325
|
||||||
|
[Fact]
|
||||||
|
public async Task IFluentMockServerAdmin_PutMappingAsync()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var server = FluentMockServer.StartWithAdminInterface();
|
||||||
|
var api = RestClient.For<IFluentMockServerAdmin>(server.Urls[0]);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var model = new MappingModel
|
||||||
|
{
|
||||||
|
Request = new RequestModel { Path = "/1" },
|
||||||
|
Response = new ResponseModel { Body = "txt", StatusCode = 200 },
|
||||||
|
Priority = 500,
|
||||||
|
Title = "test"
|
||||||
|
};
|
||||||
|
var result = await api.PutMappingAsync(new Guid("a0000000-0000-0000-0000-000000000000"), model);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Check.That(result).IsNotNull();
|
||||||
|
Check.That(result.Status).Equals("Mapping added or updated");
|
||||||
|
Check.That(result.Guid).IsNotNull();
|
||||||
|
|
||||||
|
var mapping = server.Mappings.Single(m => m.Priority == 500);
|
||||||
|
Check.That(mapping).IsNotNull();
|
||||||
|
Check.That(mapping.Title).Equals("test");
|
||||||
|
|
||||||
|
server.Stop();
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task IFluentMockServerAdmin_PostMappingAsync()
|
public async Task IFluentMockServerAdmin_PostMappingAsync()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user