Fix MappingMatcher in case of an exception in LinqMatcher. (#322)

* Fix MappingMatcher in case of an exception in LinqMatcher.

* update unit-tests
This commit is contained in:
Stef Heyenrath
2019-08-17 16:24:14 +00:00
committed by GitHub
parent 0a5c9880bd
commit 94f179ba17
8 changed files with 118 additions and 52 deletions

View File

@@ -1,7 +1,6 @@
using System;
using System.Threading.Tasks;
using WireMock.Logging;
using WireMock.Matchers.Request;
using System.Linq;
using WireMock.Matchers;
using WireMock.Util;
@@ -74,7 +73,7 @@ namespace WireMock.Owin
bool logRequest = false;
ResponseMessage response = null;
(IMapping TargetMapping, RequestMatchResult RequestMatchResult) result = (null, null);
MappingMatcherResult result = null;
try
{
foreach (var mapping in _options.Mappings.Values.Where(m => m?.Scenario != null))
@@ -89,9 +88,9 @@ namespace WireMock.Owin
}
}
result = _mappingMatcher.Match(request);
var targetMapping = result.TargetMapping;
result = _mappingMatcher.FindBestMatch(request);
var targetMapping = result?.Mapping;
if (targetMapping == null)
{
logRequest = true;
@@ -129,7 +128,7 @@ namespace WireMock.Owin
}
catch (Exception ex)
{
_options.Logger.Error($"Providing a Response for Mapping '{result.TargetMapping.Guid}' failed. HttpStatusCode set to 500. Exception: {ex}");
_options.Logger.Error($"Providing a Response for Mapping '{result?.Mapping?.Guid}' failed. HttpStatusCode set to 500. Exception: {ex}");
response = ResponseMessageBuilder.Create(JsonConvert.SerializeObject(ex), 500);
}
finally
@@ -139,9 +138,9 @@ namespace WireMock.Owin
Guid = Guid.NewGuid(),
RequestMessage = request,
ResponseMessage = response,
MappingGuid = result.TargetMapping?.Guid,
MappingTitle = result.TargetMapping?.Title,
RequestMatchResult = result.RequestMatchResult
MappingGuid = result?.Mapping?.Guid,
MappingTitle = result?.Mapping?.Title,
RequestMatchResult = result?.RequestMatchResult
};
LogRequest(log, logRequest);