Skip to content

Commit 167cb61

Browse files
committed
Added option to set the error detail policy of the configuration (closes #200)
1 parent 944fa6f commit 167cb61

File tree

4 files changed

+57
-0
lines changed

4 files changed

+57
-0
lines changed

documentation/README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,13 @@ MyWebApi.IsRegisteredWith(WebApiConfig.Register);
6363
// * it is useful if you want to reset the global
6464
// * configuration used in other tests
6565
MyWebApi.IsUsingDefaultHttpConfiguration();
66+
67+
// the three options provide a way to set
68+
// the error detail policy for the testing
69+
// * default is 'Always' for easier debugging
70+
MyWebApi
71+
.IsRegisteredWith(WebApiConfig.Register)
72+
.WithErrorDetailPolicy(IncludeErrorDetailPolicy.LocalOnly);
6673
```
6774

6875
[To top](#table-of-contents)

src/MyWebApi.Tests/BuildersTests/HttpConfigurationBuilderTests.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// Dual-licensed under the Apache License, Version 2.0, and the Microsoft Public License (Ms-PL).
55
namespace MyTested.WebApi.Tests.BuildersTests
66
{
7+
using System.Web.Http;
78
using Common.Servers;
89
using NUnit.Framework;
910
using Setups;
@@ -26,5 +27,25 @@ public void AndStartsServerShouldStartServerCorrectly()
2627
Assert.IsNull(HttpTestServer.GlobalClient);
2728
Assert.IsFalse(HttpTestServer.GlobalIsStarted);
2829
}
30+
31+
[Test]
32+
public void DefaultErrorDetailPolicyShouldBeAlways()
33+
{
34+
MyWebApi.IsUsingDefaultHttpConfiguration();
35+
36+
Assert.AreEqual(IncludeErrorDetailPolicy.Always, MyWebApi.Configuration.IncludeErrorDetailPolicy);
37+
38+
MyWebApi.IsUsing(TestObjectFactory.GetHttpConfigurationWithRoutes());
39+
}
40+
41+
[Test]
42+
public void WithErrorDetailPolicyShouldSetCorrectErrorDetailPolicy()
43+
{
44+
MyWebApi.IsUsingDefaultHttpConfiguration().WithErrorDetailPolicy(IncludeErrorDetailPolicy.LocalOnly);
45+
46+
Assert.AreEqual(IncludeErrorDetailPolicy.LocalOnly, MyWebApi.Configuration.IncludeErrorDetailPolicy);
47+
48+
MyWebApi.IsUsing(TestObjectFactory.GetHttpConfigurationWithRoutes());
49+
}
2950
}
3051
}

src/MyWebApi/Builders/Contracts/IHttpConfigurationBuilder.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
// Dual-licensed under the Apache License, Version 2.0, and the Microsoft Public License (Ms-PL).
55
namespace MyTested.WebApi.Builders.Contracts
66
{
7+
using System.Web.Http;
8+
79
/// <summary>
810
/// HTTP configuration builder.
911
/// </summary>
@@ -14,5 +16,12 @@ public interface IHttpConfigurationBuilder
1416
/// </summary>
1517
/// <returns>Server builder.</returns>
1618
IServerBuilder AndStartsServer();
19+
20+
/// <summary>
21+
/// Sets the error detail policy used in the testing. Default is 'Always'.
22+
/// </summary>
23+
/// <param name="errorDetailPolicy">Error details policy to use.</param>
24+
/// <returns>The same HTTP configuration builder.</returns>
25+
IHttpConfigurationBuilder WithErrorDetailPolicy(IncludeErrorDetailPolicy errorDetailPolicy);
1726
}
1827
}

src/MyWebApi/Builders/HttpConfigurationBuilder.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class HttpConfigurationBuilder : IHttpConfigurationBuilder
2222
public HttpConfigurationBuilder(HttpConfiguration httpConfiguration)
2323
{
2424
this.httpConfiguration = httpConfiguration;
25+
this.SetErrorDetailPolicy(IncludeErrorDetailPolicy.Always);
2526
}
2627

2728
/// <summary>
@@ -32,5 +33,24 @@ public IServerBuilder AndStartsServer()
3233
{
3334
return new Server().Starts(this.httpConfiguration);
3435
}
36+
37+
/// <summary>
38+
/// Sets the error detail policy used in the testing. Default is 'Always'.
39+
/// </summary>
40+
/// <param name="errorDetailPolicy">Error details policy to use.</param>
41+
/// <returns>The same HTTP configuration builder.</returns>
42+
public IHttpConfigurationBuilder WithErrorDetailPolicy(IncludeErrorDetailPolicy errorDetailPolicy)
43+
{
44+
this.SetErrorDetailPolicy(errorDetailPolicy);
45+
return this;
46+
}
47+
48+
private void SetErrorDetailPolicy(IncludeErrorDetailPolicy errorDetailPolicy)
49+
{
50+
if (this.httpConfiguration != null)
51+
{
52+
this.httpConfiguration.IncludeErrorDetailPolicy = errorDetailPolicy;
53+
}
54+
}
3555
}
3656
}

0 commit comments

Comments
 (0)