From e9db520cc3bcac206bb93fa064b631bedd8832a9 Mon Sep 17 00:00:00 2001 From: Stef Heyenrath Date: Wed, 27 Oct 2021 18:57:13 +0200 Subject: [PATCH] Add TimeSettings (Start, End and TTL) (#661) * time * . * UT * using JetBrains.Annotations; --- .../Admin/Mappings/MappingModel.cs | 8 +++- .../Admin/Mappings/TimeSettingsModel.cs | 26 +++++++++++ .../Models/ITimeSettings.cs | 25 +++++++++++ .../Extensions/AnyOfExtensions.cs | 7 +-- .../Extensions/TimeSettingsExtensions.cs | 35 +++++++++++++++ src/WireMock.Net/IMapping.cs | 7 ++- src/WireMock.Net/Mapping.cs | 40 +++++++++-------- src/WireMock.Net/Models/TimeSettings.cs | 19 ++++++++ src/WireMock.Net/Owin/MappingMatcher.cs | 6 ++- src/WireMock.Net/Proxy/ProxyHelper.cs | 7 ++- .../Serialization/MappingConverter.cs | 2 + .../Serialization/TimeSettingsMapper.cs | 27 ++++++++++++ .../Server/IRespondWithAProvider.cs | 9 +++- .../Server/RespondWithAProvider.cs | 18 ++++++-- .../Server/WireMockServer.Admin.cs | 5 +++ src/WireMock.Net/Server/WireMockServer.cs | 2 - src/WireMock.Net/WireMock.Net.csproj | 3 ++ .../Owin/WireMockMiddlewareTests.cs | 6 +-- .../Serialization/MappingConverterTests.cs | 43 +++++++++++++++---- .../WireMock.Net.Tests.csproj | 4 +- 20 files changed, 253 insertions(+), 46 deletions(-) create mode 100644 src/WireMock.Net.Abstractions/Admin/Mappings/TimeSettingsModel.cs create mode 100644 src/WireMock.Net.Abstractions/Models/ITimeSettings.cs create mode 100644 src/WireMock.Net/Extensions/TimeSettingsExtensions.cs create mode 100644 src/WireMock.Net/Models/TimeSettings.cs create mode 100644 src/WireMock.Net/Serialization/TimeSettingsMapper.cs diff --git a/src/WireMock.Net.Abstractions/Admin/Mappings/MappingModel.cs b/src/WireMock.Net.Abstractions/Admin/Mappings/MappingModel.cs index 49ab60c6..58ee7343 100644 --- a/src/WireMock.Net.Abstractions/Admin/Mappings/MappingModel.cs +++ b/src/WireMock.Net.Abstractions/Admin/Mappings/MappingModel.cs @@ -1,4 +1,5 @@ -using System; +using System; +using WireMock.Models; namespace WireMock.Admin.Mappings { @@ -13,6 +14,11 @@ namespace WireMock.Admin.Mappings /// public Guid? Guid { get; set; } + /// + /// Gets or sets the TimeSettings when which this mapping should be used. + /// + public TimeSettingsModel TimeSettings { get; set; } + /// /// The unique title. /// diff --git a/src/WireMock.Net.Abstractions/Admin/Mappings/TimeSettingsModel.cs b/src/WireMock.Net.Abstractions/Admin/Mappings/TimeSettingsModel.cs new file mode 100644 index 00000000..bd63b74e --- /dev/null +++ b/src/WireMock.Net.Abstractions/Admin/Mappings/TimeSettingsModel.cs @@ -0,0 +1,26 @@ +using System; + +namespace WireMock.Models +{ + /// + /// TimeSettingsModel: Start, End and TTL + /// + [FluentBuilder.AutoGenerateBuilder] + public class TimeSettingsModel + { + /// + /// Gets or sets the DateTime from which this mapping should be used. In case this is not defined, it's used (default behavior). + /// + public DateTime? Start { get; set; } + + /// + /// Gets or sets the DateTime from until this mapping should be used. In case this is not defined, it's used forever (default behavior). + /// + public DateTime? End { get; set; } + + /// + /// Gets or sets the TTL (Time To Live) in seconds for this mapping. In case this is not defined, it's used (default behavior). + /// + public int? TTL { get; set; } + } +} \ No newline at end of file diff --git a/src/WireMock.Net.Abstractions/Models/ITimeSettings.cs b/src/WireMock.Net.Abstractions/Models/ITimeSettings.cs new file mode 100644 index 00000000..f9c8dc12 --- /dev/null +++ b/src/WireMock.Net.Abstractions/Models/ITimeSettings.cs @@ -0,0 +1,25 @@ +using System; + +namespace WireMock.Models +{ + /// + /// TimeSettings: Start, End and TTL + /// + public interface ITimeSettings + { + /// + /// Gets or sets the DateTime from which this mapping should be used. In case this is not defined, it's used (default behavior). + /// + DateTime? Start { get; set; } + + /// + /// Gets or sets the DateTime from until this mapping should be used. In case this is not defined, it's used forever (default behavior). + /// + DateTime? End { get; set; } + + /// + /// Gets or sets the TTL (Time To Live) in seconds for this mapping. In case this is not defined, it's used (default behavior). + /// + int? TTL { get; set; } + } +} \ No newline at end of file diff --git a/src/WireMock.Net/Extensions/AnyOfExtensions.cs b/src/WireMock.Net/Extensions/AnyOfExtensions.cs index 015690e2..fe4c4dff 100644 --- a/src/WireMock.Net/Extensions/AnyOfExtensions.cs +++ b/src/WireMock.Net/Extensions/AnyOfExtensions.cs @@ -1,23 +1,24 @@ using System.Collections.Generic; using System.Linq; using AnyOfTypes; +using JetBrains.Annotations; using WireMock.Models; namespace WireMock.Extensions { internal static class AnyOfExtensions { - public static string GetPattern(this AnyOf value) + public static string GetPattern([NotNull] this AnyOf value) { return value.IsFirst ? value.First : value.Second.Pattern; } - public static AnyOf[] ToAnyOfPatterns(this IEnumerable patterns) + public static AnyOf[] ToAnyOfPatterns([NotNull] this IEnumerable patterns) { return patterns.Select(p => p.ToAnyOfPattern()).ToArray(); } - public static AnyOf ToAnyOfPattern(this string pattern) + public static AnyOf ToAnyOfPattern([CanBeNull] this string pattern) { return new AnyOf(pattern); } diff --git a/src/WireMock.Net/Extensions/TimeSettingsExtensions.cs b/src/WireMock.Net/Extensions/TimeSettingsExtensions.cs new file mode 100644 index 00000000..138ffe1d --- /dev/null +++ b/src/WireMock.Net/Extensions/TimeSettingsExtensions.cs @@ -0,0 +1,35 @@ +using System; +using JetBrains.Annotations; +using WireMock.Models; + +namespace WireMock.Extensions +{ + internal static class TimeSettingsExtensions + { + public static bool IsValid([CanBeNull] this ITimeSettings settings) + { + if (settings == null) + { + return true; + } + + var now = DateTime.Now; + var start = settings.Start != null ? settings.Start.Value : now; + DateTime end; + if (settings.End != null) + { + end = settings.End.Value; + } + else if (settings.TTL != null) + { + end = start.AddSeconds(settings.TTL.Value); + } + else + { + end = DateTime.MaxValue; + } + + return now >= start && now <= end; + } + } +} \ No newline at end of file diff --git a/src/WireMock.Net/IMapping.cs b/src/WireMock.Net/IMapping.cs index 9d17844b..510c3111 100644 --- a/src/WireMock.Net/IMapping.cs +++ b/src/WireMock.Net/IMapping.cs @@ -1,4 +1,4 @@ -using JetBrains.Annotations; +using JetBrains.Annotations; using System; using System.Threading.Tasks; using WireMock.Matchers.Request; @@ -18,6 +18,11 @@ namespace WireMock /// Guid Guid { get; } + /// + /// Gets the TimeSettings (Start, End and TTL). + /// + ITimeSettings TimeSettings { get; } + /// /// Gets the unique title. /// diff --git a/src/WireMock.Net/Mapping.cs b/src/WireMock.Net/Mapping.cs index d9e15942..42c87a9e 100644 --- a/src/WireMock.Net/Mapping.cs +++ b/src/WireMock.Net/Mapping.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading.Tasks; using JetBrains.Annotations; using WireMock.Matchers.Request; @@ -13,51 +13,54 @@ namespace WireMock /// public class Mapping : IMapping { - /// + /// public Guid Guid { get; } - /// + /// public string Title { get; } - /// + /// public string Path { get; set; } - /// + /// public int Priority { get; } - /// + /// public string Scenario { get; } - /// + /// public string ExecutionConditionState { get; } - /// + /// public string NextState { get; } - /// + /// public int? StateTimes { get; } - /// + /// public IRequestMatcher RequestMatcher { get; } - /// + /// public IResponseProvider Provider { get; } - /// + /// public IWireMockServerSettings Settings { get; } - /// + /// public bool IsStartState => Scenario == null || Scenario != null && NextState != null && ExecutionConditionState == null; - /// + /// public bool IsAdminInterface => Provider is DynamicResponseProvider || Provider is DynamicAsyncResponseProvider || Provider is ProxyAsyncResponseProvider; - /// + /// public bool LogMapping => !(Provider is DynamicResponseProvider || Provider is DynamicAsyncResponseProvider); - /// + /// public IWebhook[] Webhooks { get; } + /// + public ITimeSettings TimeSettings { get; } + /// /// Initializes a new instance of the class. /// @@ -73,6 +76,7 @@ namespace WireMock /// The next state which will occur after the current mapping execution. [Optional] /// Only when the current state is executed this number, the next state which will occur. [Optional] /// The Webhooks. [Optional] + /// The TimeSettings. [Optional] public Mapping( Guid guid, [CanBeNull] string title, @@ -85,7 +89,8 @@ namespace WireMock [CanBeNull] string executionConditionState, [CanBeNull] string nextState, [CanBeNull] int? stateTimes, - [CanBeNull] IWebhook[] webhooks) + [CanBeNull] IWebhook[] webhooks, + [CanBeNull] ITimeSettings timeSettings) { Guid = guid; Title = title; @@ -99,6 +104,7 @@ namespace WireMock NextState = nextState; StateTimes = stateTimes; Webhooks = webhooks; + TimeSettings = timeSettings; } /// diff --git a/src/WireMock.Net/Models/TimeSettings.cs b/src/WireMock.Net/Models/TimeSettings.cs new file mode 100644 index 00000000..23f13666 --- /dev/null +++ b/src/WireMock.Net/Models/TimeSettings.cs @@ -0,0 +1,19 @@ +using System; + +namespace WireMock.Models +{ + /// + /// TimeSettingsModel: Start, End and TTL + /// + public class TimeSettings : ITimeSettings + { + /// + public DateTime? Start { get; set; } + + /// + public DateTime? End { get; set; } + + /// + public int? TTL { get; set; } + } +} \ No newline at end of file diff --git a/src/WireMock.Net/Owin/MappingMatcher.cs b/src/WireMock.Net/Owin/MappingMatcher.cs index 71b4d814..ae156966 100644 --- a/src/WireMock.Net/Owin/MappingMatcher.cs +++ b/src/WireMock.Net/Owin/MappingMatcher.cs @@ -1,6 +1,7 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; +using WireMock.Extensions; using WireMock.Validation; namespace WireMock.Owin @@ -19,7 +20,8 @@ namespace WireMock.Owin public (MappingMatcherResult Match, MappingMatcherResult Partial) FindBestMatch(RequestMessage request) { var mappings = new List(); - foreach (var mapping in _options.Mappings.Values) + + foreach (var mapping in _options.Mappings.Values.Where(m => m.TimeSettings.IsValid())) { try { diff --git a/src/WireMock.Net/Proxy/ProxyHelper.cs b/src/WireMock.Net/Proxy/ProxyHelper.cs index d778a355..fc4b3033 100644 --- a/src/WireMock.Net/Proxy/ProxyHelper.cs +++ b/src/WireMock.Net/Proxy/ProxyHelper.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; @@ -21,8 +21,7 @@ namespace WireMock.Proxy public ProxyHelper([NotNull] IWireMockServerSettings settings) { - Check.NotNull(settings, nameof(settings)); - _settings = settings; + _settings = Check.NotNull(settings, nameof(settings)); } public async Task<(ResponseMessage Message, IMapping Mapping)> SendAsync( @@ -105,7 +104,7 @@ namespace WireMock.Proxy var response = Response.Create(responseMessage); - return new Mapping(Guid.NewGuid(), string.Empty, null, _settings, request, response, 0, null, null, null, null, null); + return new Mapping(Guid.NewGuid(), string.Empty, null, _settings, request, response, 0, null, null, null, null, null, null); } } } \ No newline at end of file diff --git a/src/WireMock.Net/Serialization/MappingConverter.cs b/src/WireMock.Net/Serialization/MappingConverter.cs index d74fe17d..2fe82695 100644 --- a/src/WireMock.Net/Serialization/MappingConverter.cs +++ b/src/WireMock.Net/Serialization/MappingConverter.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using WireMock.Admin.Mappings; using WireMock.Matchers.Request; +using WireMock.Models; using WireMock.RequestBuilders; using WireMock.ResponseBuilders; using WireMock.Settings; @@ -36,6 +37,7 @@ namespace WireMock.Serialization var mappingModel = new MappingModel { Guid = mapping.Guid, + TimeSettings = TimeSettingsMapper.Map(mapping.TimeSettings), Title = mapping.Title, Priority = mapping.Priority != 0 ? mapping.Priority : (int?)null, Scenario = mapping.Scenario, diff --git a/src/WireMock.Net/Serialization/TimeSettingsMapper.cs b/src/WireMock.Net/Serialization/TimeSettingsMapper.cs new file mode 100644 index 00000000..6528a78b --- /dev/null +++ b/src/WireMock.Net/Serialization/TimeSettingsMapper.cs @@ -0,0 +1,27 @@ +using WireMock.Models; + +namespace WireMock.Serialization +{ + internal static class TimeSettingsMapper + { + public static TimeSettingsModel Map(ITimeSettings settings) + { + return settings != null ? new TimeSettingsModel + { + Start = settings.Start, + End = settings.End, + TTL = settings.TTL + } : null; + } + + public static ITimeSettings Map(TimeSettingsModel settings) + { + return settings != null ? new TimeSettings + { + Start = settings.Start, + End = settings.End, + TTL = settings.TTL + } : null; + } + } +} \ No newline at end of file diff --git a/src/WireMock.Net/Server/IRespondWithAProvider.cs b/src/WireMock.Net/Server/IRespondWithAProvider.cs index f58d063f..a75068e3 100644 --- a/src/WireMock.Net/Server/IRespondWithAProvider.cs +++ b/src/WireMock.Net/Server/IRespondWithAProvider.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using JetBrains.Annotations; using WireMock.Models; @@ -24,6 +24,13 @@ namespace WireMock.Server /// The . IRespondWithAProvider WithGuid(Guid guid); + /// + /// Define the TimeSettings for this mapping. + /// + /// The TimeSettings. + /// The . + IRespondWithAProvider WithTimeSettings(ITimeSettings timeSettings); + /// /// Define a unique title for this mapping. /// diff --git a/src/WireMock.Net/Server/RespondWithAProvider.cs b/src/WireMock.Net/Server/RespondWithAProvider.cs index ca39634c..80ba6626 100644 --- a/src/WireMock.Net/Server/RespondWithAProvider.cs +++ b/src/WireMock.Net/Server/RespondWithAProvider.cs @@ -1,4 +1,4 @@ -// This source file is based on mock4net by Alexandre Victoor which is licensed under the Apache 2.0 License. +// This source file is based on mock4net by Alexandre Victoor which is licensed under the Apache 2.0 License. // For more details see 'mock4net/LICENSE.txt' and 'mock4net/readme.md' in this project root. using System; using System.Collections.Generic; @@ -34,6 +34,8 @@ namespace WireMock.Server public IWebhook[] Webhooks { get; private set; } + public ITimeSettings TimeSettings { get; private set; } + /// /// Initializes a new instance of the class. /// @@ -55,7 +57,7 @@ namespace WireMock.Server /// The provider. public void RespondWith(IResponseProvider provider) { - _registrationCallback(new Mapping(Guid, _title, _path, _settings, _requestMatcher, provider, _priority, _scenario, _executionConditionState, _nextState, _timesInSameState, Webhooks), _saveToFile); + _registrationCallback(new Mapping(Guid, _title, _path, _settings, _requestMatcher, provider, _priority, _scenario, _executionConditionState, _nextState, _timesInSameState, Webhooks, TimeSettings), _saveToFile); } /// @@ -149,6 +151,16 @@ namespace WireMock.Server return WillSetStateTo(state.ToString(), times); } + /// + public IRespondWithAProvider WithTimeSettings(ITimeSettings timeSettings) + { + Check.NotNull(timeSettings, nameof(timeSettings)); + + TimeSettings = timeSettings; + + return this; + } + /// public IRespondWithAProvider WithWebhook(params IWebhook[] webhooks) { @@ -207,7 +219,7 @@ namespace WireMock.Server return this; } - private IWebhook InitWebhook( + private static IWebhook InitWebhook( string url, string method, IDictionary> headers, diff --git a/src/WireMock.Net/Server/WireMockServer.Admin.cs b/src/WireMock.Net/Server/WireMockServer.Admin.cs index 0c6034ec..ed306bb7 100644 --- a/src/WireMock.Net/Server/WireMockServer.Admin.cs +++ b/src/WireMock.Net/Server/WireMockServer.Admin.cs @@ -450,6 +450,11 @@ namespace WireMock.Server respondProvider = respondProvider.WithGuid(mappingModel.Guid.Value); } + if (mappingModel.TimeSettings != null) + { + respondProvider = respondProvider.WithTimeSettings(TimeSettingsMapper.Map(mappingModel.TimeSettings)); + } + if (path != null) { respondProvider = respondProvider.WithPath(path); diff --git a/src/WireMock.Net/Server/WireMockServer.cs b/src/WireMock.Net/Server/WireMockServer.cs index 6a721537..5146f3e1 100644 --- a/src/WireMock.Net/Server/WireMockServer.cs +++ b/src/WireMock.Net/Server/WireMockServer.cs @@ -4,7 +4,6 @@ using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; -using System.Text; using System.Threading; using JetBrains.Annotations; using Newtonsoft.Json; @@ -13,7 +12,6 @@ using WireMock.Authentication; using WireMock.Exceptions; using WireMock.Handlers; using WireMock.Logging; -using WireMock.Matchers; using WireMock.Matchers.Request; using WireMock.Owin; using WireMock.RequestBuilders; diff --git a/src/WireMock.Net/WireMock.Net.csproj b/src/WireMock.Net/WireMock.Net.csproj index 48c02ef2..7dc4a970 100644 --- a/src/WireMock.Net/WireMock.Net.csproj +++ b/src/WireMock.Net/WireMock.Net.csproj @@ -60,6 +60,8 @@ + + @@ -81,6 +83,7 @@ + diff --git a/test/WireMock.Net.Tests/Owin/WireMockMiddlewareTests.cs b/test/WireMock.Net.Tests/Owin/WireMockMiddlewareTests.cs index 353b890e..93d1d766 100644 --- a/test/WireMock.Net.Tests/Owin/WireMockMiddlewareTests.cs +++ b/test/WireMock.Net.Tests/Owin/WireMockMiddlewareTests.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Concurrent; using System.Linq.Expressions; using System.Threading.Tasks; @@ -176,7 +176,7 @@ namespace WireMock.Net.Tests.Owin _mappingMock.SetupGet(m => m.Provider).Returns(responseBuilder); _mappingMock.SetupGet(m => m.Settings).Returns(settings); - var newMappingFromProxy = new Mapping(Guid.NewGuid(), "", null, settings, Request.Create(), Response.Create(), 0, null, null, null, null, null); + var newMappingFromProxy = new Mapping(Guid.NewGuid(), "", null, settings, Request.Create(), Response.Create(), 0, null, null, null, null, null, null); _mappingMock.Setup(m => m.ProvideResponseAsync(It.IsAny())).ReturnsAsync((new ResponseMessage(), newMappingFromProxy)); var requestBuilder = Request.Create().UsingAnyMethod(); @@ -230,7 +230,7 @@ namespace WireMock.Net.Tests.Owin _mappingMock.SetupGet(m => m.Provider).Returns(responseBuilder); _mappingMock.SetupGet(m => m.Settings).Returns(settings); - var newMappingFromProxy = new Mapping(Guid.NewGuid(), "", null, settings, Request.Create(), Response.Create(), 0, null, null, null, null, null); + var newMappingFromProxy = new Mapping(Guid.NewGuid(), "", null, settings, Request.Create(), Response.Create(), 0, null, null, null, null, null, null); _mappingMock.Setup(m => m.ProvideResponseAsync(It.IsAny())).ReturnsAsync((new ResponseMessage(), newMappingFromProxy)); var requestBuilder = Request.Create().UsingAnyMethod(); diff --git a/test/WireMock.Net.Tests/Serialization/MappingConverterTests.cs b/test/WireMock.Net.Tests/Serialization/MappingConverterTests.cs index c820a41a..2ecd797e 100644 --- a/test/WireMock.Net.Tests/Serialization/MappingConverterTests.cs +++ b/test/WireMock.Net.Tests/Serialization/MappingConverterTests.cs @@ -51,7 +51,7 @@ namespace WireMock.Net.Tests.Serialization } } }; - var mapping = new Mapping(Guid.NewGuid(), "", null, _settings, request, response, 0, null, null, null, null, webhooks); + var mapping = new Mapping(Guid.NewGuid(), "", null, _settings, request, response, 0, null, null, null, null, webhooks, null); // Act var model = _sut.ToMappingModel(mapping); @@ -120,8 +120,7 @@ namespace WireMock.Net.Tests.Serialization } } }; - var mapping = new Mapping(Guid.NewGuid(), "", null, _settings, request, response, 0, null, null, null, null, webhooks -); + var mapping = new Mapping(Guid.NewGuid(), "", null, _settings, request, response, 0, null, null, null, null, webhooks, null); // Act var model = _sut.ToMappingModel(mapping); @@ -153,7 +152,7 @@ namespace WireMock.Net.Tests.Serialization // Assign var request = Request.Create(); var response = Response.Create().WithBodyAsJson(new { x = "x" }).WithTransformer(); - var mapping = new Mapping(Guid.NewGuid(), "", null, _settings, request, response, 42, null, null, null, null, null); + var mapping = new Mapping(Guid.NewGuid(), "", null, _settings, request, response, 42, null, null, null, null, null, null); // Act var model = _sut.ToMappingModel(mapping); @@ -164,6 +163,34 @@ namespace WireMock.Net.Tests.Serialization model.Response.UseTransformer.Should().BeTrue(); } + [Fact] + public void ToMappingModel_WithTimeSetrtings_ReturnsCorrectTimeSettings() + { + // Assign + var start = DateTime.Now; + var ttl = 100; + var end = start.AddSeconds(ttl); + var request = Request.Create(); + var response = Response.Create(); + var timeSettings = new TimeSettings + { + Start = start, + End = end, + TTL = ttl + }; + var mapping = new Mapping(Guid.NewGuid(), "", null, _settings, request, response, 42, null, null, null, null, null, timeSettings); + + // Act + var model = _sut.ToMappingModel(mapping); + + // Assert + model.Should().NotBeNull(); + model.TimeSettings.Should().NotBeNull(); + model.TimeSettings.Start.Should().Be(start); + model.TimeSettings.End.Should().Be(end); + model.TimeSettings.TTL.Should().Be(ttl); + } + [Fact] public void ToMappingModel_WithDelay_ReturnsCorrectModel() { @@ -171,7 +198,7 @@ namespace WireMock.Net.Tests.Serialization int delay = 1000; var request = Request.Create(); var response = Response.Create().WithDelay(delay); - var mapping = new Mapping(Guid.NewGuid(), "", null, _settings, request, response, 42, null, null, null, null, null); + var mapping = new Mapping(Guid.NewGuid(), "", null, _settings, request, response, 42, null, null, null, null, null, null); // Act var model = _sut.ToMappingModel(mapping); @@ -182,13 +209,13 @@ namespace WireMock.Net.Tests.Serialization } [Fact] - public void ToMappingModel_WithRandomMininumDelay_ReturnsCorrectModel() + public void ToMappingModel_WithRandomMinimumDelay_ReturnsCorrectModel() { // Assign int minimumDelay = 1000; var request = Request.Create(); var response = Response.Create().WithRandomDelay(minimumDelay); - var mapping = new Mapping(Guid.NewGuid(), "", null, _settings, request, response, 42, null, null, null, null, null); + var mapping = new Mapping(Guid.NewGuid(), "", null, _settings, request, response, 42, null, null, null, null, null, null); // Act var model = _sut.ToMappingModel(mapping); @@ -208,7 +235,7 @@ namespace WireMock.Net.Tests.Serialization int maximumDelay = 2000; var request = Request.Create(); var response = Response.Create().WithRandomDelay(minimumDelay, maximumDelay); - var mapping = new Mapping(Guid.NewGuid(), "", null, _settings, request, response, 42, null, null, null, null, null); + var mapping = new Mapping(Guid.NewGuid(), "", null, _settings, request, response, 42, null, null, null, null, null, null); // Act var model = _sut.ToMappingModel(mapping); diff --git a/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj b/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj index 7e8b9ca9..74a7663d 100644 --- a/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj +++ b/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj @@ -37,6 +37,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive + @@ -59,8 +60,9 @@ - + +