diff --git a/Directory.Build.props b/Directory.Build.props
index 8c1cd2321..c63453a76 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -4,7 +4,7 @@
- 1.1.10
+ 1.2.0
diff --git a/examples/WireMock.Net.Console.Net452.Classic/MainApp.cs b/examples/WireMock.Net.Console.Net452.Classic/MainApp.cs
index a18744224..1e2763d66 100644
--- a/examples/WireMock.Net.Console.Net452.Classic/MainApp.cs
+++ b/examples/WireMock.Net.Console.Net452.Classic/MainApp.cs
@@ -61,8 +61,6 @@ public static void Run()
handlebarsContext.RegisterHelper(transformer.Name, transformer.Render);
},
- AllowAnyHttpStatusCodeInResponse = true
-
// Uncomment below if you want to use the CustomFileSystemFileHandler
// FileSystemHandler = new CustomFileSystemFileHandler()
});
diff --git a/src/WireMock.Net/Owin/IWireMockMiddlewareOptions.cs b/src/WireMock.Net/Owin/IWireMockMiddlewareOptions.cs
index 1a89533d5..65acc007c 100644
--- a/src/WireMock.Net/Owin/IWireMockMiddlewareOptions.cs
+++ b/src/WireMock.Net/Owin/IWireMockMiddlewareOptions.cs
@@ -40,7 +40,7 @@ internal interface IWireMockMiddlewareOptions
bool? AllowBodyForAllHttpMethods { get; set; }
- bool? AllowAnyHttpStatusCodeInResponse { get; set; }
+ bool? AllowOnlyDefinedHttpStatusCodeInResponse { get; set; }
bool? DisableJsonBodyParsing { get; set; }
}
diff --git a/src/WireMock.Net/Owin/Mappers/OwinResponseMapper.cs b/src/WireMock.Net/Owin/Mappers/OwinResponseMapper.cs
index e2a89d8b4..365d50bc0 100644
--- a/src/WireMock.Net/Owin/Mappers/OwinResponseMapper.cs
+++ b/src/WireMock.Net/Owin/Mappers/OwinResponseMapper.cs
@@ -104,12 +104,12 @@ public async Task MapAsync(ResponseMessage responseMessage, IResponse response)
private int MapStatusCode(int code)
{
- if (_options.AllowAnyHttpStatusCodeInResponse == true || Enum.IsDefined(typeof(HttpStatusCode), code))
+ if (_options.AllowOnlyDefinedHttpStatusCodeInResponse == true && !Enum.IsDefined(typeof(HttpStatusCode), code))
{
- return code;
+ return (int)HttpStatusCode.OK;
}
- return (int)HttpStatusCode.OK;
+ return code;
}
private bool IsFault(ResponseMessage responseMessage)
diff --git a/src/WireMock.Net/Owin/WireMockMiddlewareOptions.cs b/src/WireMock.Net/Owin/WireMockMiddlewareOptions.cs
index 3599a249b..d0be329f8 100644
--- a/src/WireMock.Net/Owin/WireMockMiddlewareOptions.cs
+++ b/src/WireMock.Net/Owin/WireMockMiddlewareOptions.cs
@@ -43,8 +43,8 @@ internal class WireMockMiddlewareOptions : IWireMockMiddlewareOptions
///
public bool? AllowBodyForAllHttpMethods { get; set; }
- ///
- public bool? AllowAnyHttpStatusCodeInResponse { get; set; }
+ ///
+ public bool? AllowOnlyDefinedHttpStatusCodeInResponse { get; set; }
///
public bool? DisableJsonBodyParsing { get; set; }
diff --git a/src/WireMock.Net/ResponseBuilders/IStatusCodeResponseBuilder.cs b/src/WireMock.Net/ResponseBuilders/IStatusCodeResponseBuilder.cs
index 41777664b..5bcda2e1a 100644
--- a/src/WireMock.Net/ResponseBuilders/IStatusCodeResponseBuilder.cs
+++ b/src/WireMock.Net/ResponseBuilders/IStatusCodeResponseBuilder.cs
@@ -1,4 +1,5 @@
using System.Net;
+using WireMock.Settings;
namespace WireMock.ResponseBuilders
{
@@ -9,6 +10,7 @@ public interface IStatusCodeResponseBuilder : IHeadersResponseBuilder
{
///
/// The with status code.
+ /// By default all status codes are allowed, to change this behaviour, see .
///
/// The code.
/// The .
@@ -16,6 +18,7 @@ public interface IStatusCodeResponseBuilder : IHeadersResponseBuilder
///
/// The with status code.
+ /// By default all status codes are allowed, to change this behaviour, see .
///
/// The code.
/// The .
@@ -23,6 +26,7 @@ public interface IStatusCodeResponseBuilder : IHeadersResponseBuilder
///
/// The with status code.
+ /// By default all status codes are allowed, to change this behaviour, see .
///
/// The code.
/// The .
diff --git a/src/WireMock.Net/Server/WireMockServer.cs b/src/WireMock.Net/Server/WireMockServer.cs
index 9eaaad8fe..328aa14f3 100644
--- a/src/WireMock.Net/Server/WireMockServer.cs
+++ b/src/WireMock.Net/Server/WireMockServer.cs
@@ -269,10 +269,10 @@ protected WireMockServer(IWireMockServerSettings settings)
_settings.Logger.Info("AllowBodyForAllHttpMethods is set to True");
}
- if (settings.AllowAnyHttpStatusCodeInResponse == true)
+ if (settings.AllowOnlyDefinedHttpStatusCodeInResponse == true)
{
- _options.AllowAnyHttpStatusCodeInResponse = _settings.AllowAnyHttpStatusCodeInResponse;
- _settings.Logger.Info("AllowAnyHttpStatusCodeInResponse is set to True");
+ _options.AllowOnlyDefinedHttpStatusCodeInResponse = _settings.AllowOnlyDefinedHttpStatusCodeInResponse;
+ _settings.Logger.Info("AllowOnlyDefinedHttpStatusCodeInResponse is set to True");
}
if (settings.AllowPartialMapping == true)
diff --git a/src/WireMock.Net/Settings/IWireMockServerSettings.cs b/src/WireMock.Net/Settings/IWireMockServerSettings.cs
index d11490b81..fe0e2798f 100644
--- a/src/WireMock.Net/Settings/IWireMockServerSettings.cs
+++ b/src/WireMock.Net/Settings/IWireMockServerSettings.cs
@@ -139,10 +139,12 @@ public interface IWireMockServerSettings
bool? AllowBodyForAllHttpMethods { get; set; }
///
- /// Allow any HttpStatusCode in the response. Also null, 0, empty or invalid. (default set to false).
+ /// Allow only a HttpStatus Code in the response which is defined. (default set to false).
+ /// - false : also null, 0, empty or invalid HttpStatus codes are allowed.
+ /// - true : only codes defined in are allowed.
///
/// [PublicAPI]
- bool? AllowAnyHttpStatusCodeInResponse { get; set; }
+ bool? AllowOnlyDefinedHttpStatusCodeInResponse { get; set; }
///
/// Set to true to disable Json deserialization when processing requests. (default set to false).
diff --git a/src/WireMock.Net/Settings/WireMockServerSettings.cs b/src/WireMock.Net/Settings/WireMockServerSettings.cs
index f05b993d6..5debcf652 100644
--- a/src/WireMock.Net/Settings/WireMockServerSettings.cs
+++ b/src/WireMock.Net/Settings/WireMockServerSettings.cs
@@ -102,8 +102,8 @@ public class WireMockServerSettings : IWireMockServerSettings
[PublicAPI]
public bool? AllowBodyForAllHttpMethods { get; set; }
- ///
- public bool? AllowAnyHttpStatusCodeInResponse { get; set; }
+ ///
+ public bool? AllowOnlyDefinedHttpStatusCodeInResponse { get; set; }
///
[PublicAPI]
diff --git a/src/WireMock.Net/Settings/WireMockServerSettingsParser.cs b/src/WireMock.Net/Settings/WireMockServerSettingsParser.cs
index ed5c0ecf5..62aa48ce3 100644
--- a/src/WireMock.Net/Settings/WireMockServerSettingsParser.cs
+++ b/src/WireMock.Net/Settings/WireMockServerSettingsParser.cs
@@ -35,7 +35,7 @@ public static IWireMockServerSettings ParseArguments([NotNull] string[] args, [C
RequestLogExpirationDuration = parser.GetIntValue("RequestLogExpirationDuration"),
AllowCSharpCodeMatcher = parser.GetBoolValue("AllowCSharpCodeMatcher"),
AllowBodyForAllHttpMethods = parser.GetBoolValue("AllowBodyForAllHttpMethods"),
- AllowAnyHttpStatusCodeInResponse = parser.GetBoolValue("AllowAnyHttpStatusCodeInResponse"),
+ AllowOnlyDefinedHttpStatusCodeInResponse = parser.GetBoolValue("AllowOnlyDefinedHttpStatusCodeInResponse"),
DisableJsonBodyParsing = parser.GetBoolValue("DisableJsonBodyParsing")
};
diff --git a/test/WireMock.Net.Tests/Owin/Mappers/OwinResponseMapperTests.cs b/test/WireMock.Net.Tests/Owin/Mappers/OwinResponseMapperTests.cs
index a542ca77b..caf662c96 100644
--- a/test/WireMock.Net.Tests/Owin/Mappers/OwinResponseMapperTests.cs
+++ b/test/WireMock.Net.Tests/Owin/Mappers/OwinResponseMapperTests.cs
@@ -69,14 +69,33 @@ public async Task OwinResponseMapper_MapAsync_Null()
await _sut.MapAsync(null, _responseMock.Object);
}
+ [Theory]
+ [InlineData(300, 300)]
+ [InlineData(500, 500)]
+ public async Task OwinResponseMapper_MapAsync_Valid_StatusCode(object code, int expected)
+ {
+ // Arrange
+ var responseMessage = new ResponseMessage
+ {
+ StatusCode = code
+ };
+
+ // Act
+ await _sut.MapAsync(responseMessage, _responseMock.Object);
+
+ // Assert
+ _responseMock.VerifySet(r => r.StatusCode = expected, Times.Once);
+ }
+
[Theory]
[InlineData(0, 200)]
[InlineData(-1, 200)]
[InlineData(10000, 200)]
[InlineData(300, 300)]
- public async Task OwinResponseMapper_MapAsync_StatusCode(object code, int expected)
+ public async Task OwinResponseMapper_MapAsync_Invalid_StatusCode_When_AllowOnlyDefinedHttpStatusCodeInResponseSet_Is_True(object code, int expected)
{
// Arrange
+ _optionsMock.SetupGet(o => o.AllowOnlyDefinedHttpStatusCodeInResponse).Returns(true);
var responseMessage = new ResponseMessage
{
StatusCode = code
@@ -90,9 +109,10 @@ public async Task OwinResponseMapper_MapAsync_StatusCode(object code, int expect
}
[Fact]
- public async Task OwinResponseMapper_MapAsync_StatusCodeNull()
+ public async Task OwinResponseMapper_MapAsync_Null_StatusCode_When_AllowOnlyDefinedHttpStatusCodeInResponseSet_Is_True()
{
// Arrange
+ _optionsMock.SetupGet(o => o.AllowOnlyDefinedHttpStatusCodeInResponse).Returns(true);
var responseMessage = new ResponseMessage
{
StatusCode = null
@@ -105,42 +125,40 @@ public async Task OwinResponseMapper_MapAsync_StatusCodeNull()
_responseMock.VerifyNoOtherCalls();
}
- [Theory]
- [InlineData(0, 0)]
- [InlineData(-1, -1)]
- [InlineData(10000, 10000)]
- [InlineData(300, 300)]
- public async Task OwinResponseMapper_MapAsync_StatusCode_WithAllowAll(object code, int expected)
+ [Fact]
+ public async Task OwinResponseMapper_MapAsync_StatusCode_Is_Null()
{
// Arrange
- _optionsMock.SetupGet(o => o.AllowAnyHttpStatusCodeInResponse).Returns(true);
var responseMessage = new ResponseMessage
{
- StatusCode = code
+ StatusCode = null
};
// Act
await _sut.MapAsync(responseMessage, _responseMock.Object);
// Assert
- _responseMock.VerifySet(r => r.StatusCode = expected, Times.Once);
+ _responseMock.VerifyNoOtherCalls();
}
- [Fact]
- public async Task OwinResponseMapper_MapAsync_StatusCode_WithAllowAll_Null()
+ [Theory]
+ [InlineData(0, 0)]
+ [InlineData(-1, -1)]
+ [InlineData(10000, 10000)]
+ [InlineData(300, 300)]
+ public async Task OwinResponseMapper_MapAsync_StatusCode_Is_NotInEnumRange(object code, int expected)
{
// Arrange
- _optionsMock.SetupGet(o => o.AllowAnyHttpStatusCodeInResponse).Returns(true);
var responseMessage = new ResponseMessage
{
- StatusCode = null
+ StatusCode = code
};
// Act
await _sut.MapAsync(responseMessage, _responseMock.Object);
// Assert
- _responseMock.VerifyNoOtherCalls();
+ _responseMock.VerifySet(r => r.StatusCode = expected, Times.Once);
}
[Fact]
diff --git a/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj b/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj
index b0bade621..d788bc427 100644
--- a/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj
+++ b/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj
@@ -19,6 +19,10 @@
../../src/WireMock.Net/WireMock.Net.snk
true
+
+
+ true
+ true
diff --git a/test/WireMock.Net.Tests/WireMockServer.Settings.cs b/test/WireMock.Net.Tests/WireMockServer.Settings.cs
index ecb5c3d92..2a40d43c1 100644
--- a/test/WireMock.Net.Tests/WireMockServer.Settings.cs
+++ b/test/WireMock.Net.Tests/WireMockServer.Settings.cs
@@ -141,21 +141,21 @@ public void WireMockServer_WireMockServerSettings_AllowBodyForAllHttpMethods()
}
[Fact]
- public void WireMockServer_WireMockServerSettings_AllowAnyHttpStatusCodeInResponse()
+ public void WireMockServer_WireMockServerSettings_AllowOnlyDefinedHttpStatusCodeInResponse()
{
// Assign and Act
var server = WireMockServer.Start(new WireMockServerSettings
{
Logger = _loggerMock.Object,
- AllowAnyHttpStatusCodeInResponse = true
+ AllowOnlyDefinedHttpStatusCodeInResponse = true
});
// Assert
var options = server.GetPrivateFieldValue("_options");
- Check.That(options.AllowAnyHttpStatusCodeInResponse).Equals(true);
+ Check.That(options.AllowOnlyDefinedHttpStatusCodeInResponse).Equals(true);
// Verify
- _loggerMock.Verify(l => l.Info(It.Is(s => s.Contains("AllowAnyHttpStatusCodeInResponse") && s.Contains("True"))));
+ _loggerMock.Verify(l => l.Info(It.Is(s => s.Contains("AllowOnlyDefinedHttpStatusCodeInResponse") && s.Contains("True"))));
}
[Fact]