From c41989c0f333643651c6c1fb7c803fb5d5770ae3 Mon Sep 17 00:00:00 2001 From: Stef Heyenrath Date: Sun, 24 Jan 2021 12:30:59 +0100 Subject: [PATCH] Do not save Mappings when SaveMappingForStatusCodePattern does not match (#566) --- .../Server/WireMockServer.Admin.cs | 15 ++++---- .../WireMockServer.Proxy.cs | 36 +++++++++++++++++++ 2 files changed, 45 insertions(+), 6 deletions(-) diff --git a/src/WireMock.Net/Server/WireMockServer.Admin.cs b/src/WireMock.Net/Server/WireMockServer.Admin.cs index e5f9b403..3c9a82b5 100644 --- a/src/WireMock.Net/Server/WireMockServer.Admin.cs +++ b/src/WireMock.Net/Server/WireMockServer.Admin.cs @@ -261,14 +261,17 @@ namespace WireMock.Server proxyUriWithRequestPathAndQuery.AbsoluteUri ); - if (settings.ProxyAndRecordSettings.SaveMapping) + if (mapping != null) { - _options.Mappings.TryAdd(mapping.Guid, mapping); - } + if (settings.ProxyAndRecordSettings.SaveMapping) + { + _options.Mappings.TryAdd(mapping.Guid, mapping); + } - if (settings.ProxyAndRecordSettings.SaveMappingToFile) - { - _mappingToFileSaver.SaveMappingToFile(mapping); + if (settings.ProxyAndRecordSettings.SaveMappingToFile) + { + _mappingToFileSaver.SaveMappingToFile(mapping); + } } return responseMessage; diff --git a/test/WireMock.Net.Tests/WireMockServer.Proxy.cs b/test/WireMock.Net.Tests/WireMockServer.Proxy.cs index a0bc937e..d1d1a8f2 100644 --- a/test/WireMock.Net.Tests/WireMockServer.Proxy.cs +++ b/test/WireMock.Net.Tests/WireMockServer.Proxy.cs @@ -116,6 +116,42 @@ namespace WireMock.Net.Tests fileSystemHandlerMock.Verify(f => f.WriteMappingFile(It.IsAny(), It.IsAny()), Times.Once); } + [Fact] + public async Task WireMockServer_Proxy_With_SaveMappingForStatusCodePattern_Is_False_Should_Not_SaveMapping() + { + // Assign + var fileSystemHandlerMock = new Mock(); + fileSystemHandlerMock.Setup(f => f.GetMappingFolder()).Returns("m"); + + var settings = new WireMockServerSettings + { + ProxyAndRecordSettings = new ProxyAndRecordSettings + { + Url = "http://www.google.com", + SaveMapping = true, + SaveMappingToFile = true, + SaveMappingForStatusCodePattern = "999" // Just make sure that we don't want this mapping + }, + FileSystemHandler = fileSystemHandlerMock.Object + }; + var server = WireMockServer.Start(settings); + + // Act + var requestMessage = new HttpRequestMessage + { + Method = HttpMethod.Get, + RequestUri = new Uri(server.Urls[0]) + }; + var httpClientHandler = new HttpClientHandler { AllowAutoRedirect = false }; + await new HttpClient(httpClientHandler).SendAsync(requestMessage); + + // Assert + server.Mappings.Should().HaveCount(1); + + // Verify + fileSystemHandlerMock.Verify(f => f.WriteMappingFile(It.IsAny(), It.IsAny()), Times.Never); + } + [Fact] public async Task WireMockServer_Proxy_Should_log_proxied_requests() {