Implemented #82

This commit is contained in:
Stef Heyenrath
2018-02-02 11:17:37 +01:00
parent 40ff8514ac
commit 66b2ff16de
15 changed files with 464 additions and 349 deletions

View File

@@ -67,7 +67,8 @@ namespace WireMock.Net.StandAlone
Url = proxyURL,
SaveMapping = parser.GetBoolValue("SaveMapping"),
SaveMappingToFile = parser.GetBoolValue("SaveMappingToFile"),
X509Certificate2ThumbprintOrSubjectName = parser.GetStringValue("X509Certificate2ThumbprintOrSubjectName")
X509Certificate2ThumbprintOrSubjectName = parser.GetStringValue("X509Certificate2ThumbprintOrSubjectName"),
BlackListedHeaders = parser.GetValues("BlackListedHeaders")
};
}
@@ -75,7 +76,7 @@ namespace WireMock.Net.StandAlone
FluentMockServer server = Start(settings);
Console.WriteLine("WireMock.Net server listening at {0}", string.Join(" and ", server.Urls));
Console.WriteLine("WireMock.Net server listening at {0}", string.Join(",", server.Urls));
return server;
}

View File

@@ -149,7 +149,7 @@ namespace WireMock.Server
if (settings.SaveMapping)
{
var mapping = ToMapping(requestMessage, responseMessage);
var mapping = ToMapping(requestMessage, responseMessage, settings.BlackListedHeaders ?? new string[] { });
_options.Mappings.Add(mapping);
if (settings.SaveMappingToFile)
@@ -161,16 +161,23 @@ namespace WireMock.Server
return responseMessage;
}
private Mapping ToMapping(RequestMessage requestMessage, ResponseMessage responseMessage)
private Mapping ToMapping(RequestMessage requestMessage, ResponseMessage responseMessage, string[] blacklistedHeaders)
{
var request = Request.Create();
request.WithPath(requestMessage.Path);
request.UsingVerb(requestMessage.Method);
requestMessage.Query.Loop((key, value) => request.WithParam(key, value.ToArray()));
requestMessage.Headers.Loop((key, value) => request.WithHeader(key, value.ToArray()));
requestMessage.Cookies.Loop((key, value) => request.WithCookie(key, value));
requestMessage.Headers.Loop((key, value) =>
{
if (!blacklistedHeaders.Any(b => string.Equals(key, b, StringComparison.OrdinalIgnoreCase)))
{
request.WithHeader(key, value.ToArray());
}
});
if (requestMessage.Body != null)
{
request.WithBody(new ExactMatcher(requestMessage.Body));

View File

@@ -1,7 +1,7 @@
namespace WireMock.Settings
{
/// <summary>
/// IRecordAndSaveSettings
/// IProxyAndRecordSettings
/// </summary>
public interface IProxyAndRecordSettings
{
@@ -24,5 +24,10 @@
/// The clientCertificate thumbprint or subject name fragment to use. Example thumbprint : "D2DBF135A8D06ACCD0E1FAD9BFB28678DF7A9818". Example subject name: "www.google.com""
/// </summary>
string X509Certificate2ThumbprintOrSubjectName { get; set; }
/// <summary>
/// Defines a list from headers which will excluded from the saved mappings.
/// </summary>
string[] BlackListedHeaders { get; set; }
}
}

View File

@@ -3,7 +3,7 @@
namespace WireMock.Settings
{
/// <summary>
/// RecordAndSaveSettings
/// ProxyAndRecordSettings
/// </summary>
public class ProxyAndRecordSettings : IProxyAndRecordSettings
{
@@ -22,5 +22,9 @@ namespace WireMock.Settings
/// <inheritdoc cref="IProxyAndRecordSettings.X509Certificate2ThumbprintOrSubjectName"/>
[PublicAPI]
public string X509Certificate2ThumbprintOrSubjectName { get; set; }
/// <inheritdoc cref="IProxyAndRecordSettings.BlackListedHeaders"/>
[PublicAPI]
public string[] BlackListedHeaders { get; set; }
}
}