mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-01-11 22:30:41 +01:00
60 lines
1.8 KiB
C#
60 lines
1.8 KiB
C#
// Copyright © WireMock.Net
|
|
|
|
#if !NET451 && !NET452
|
|
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Security.Cryptography.X509Certificates;
|
|
using System.Threading.Tasks;
|
|
using FluentAssertions;
|
|
using WireMock.Net.Tests.Facts;
|
|
using WireMock.RequestBuilders;
|
|
using WireMock.ResponseBuilders;
|
|
using WireMock.Server;
|
|
using WireMock.Settings;
|
|
using WireMock.Types;
|
|
|
|
namespace WireMock.Net.Tests;
|
|
|
|
public partial class WireMockServerTests
|
|
{
|
|
[IgnoreOnContinuousIntegrationFact]
|
|
public async Task WireMockServer_WithRequiredClientCertificates_Should_Work_Correct()
|
|
{
|
|
// Arrange
|
|
var settings = new WireMockServerSettings
|
|
{
|
|
ClientCertificateMode = ClientCertificateMode.RequireCertificate,
|
|
AcceptAnyClientCertificate = true,
|
|
UseSSL = true,
|
|
};
|
|
|
|
using var server = WireMockServer.Start(settings);
|
|
|
|
server.Given(Request.Create().WithPath("/*"))
|
|
.RespondWith(Response.Create().WithCallback(message => new ResponseMessage
|
|
{
|
|
StatusCode = message.ClientCertificate?.Thumbprint == "2E32E3528C87046A95B8B0BA172A1597C3AF3A9D"
|
|
? 200
|
|
: 403
|
|
}));
|
|
|
|
var certificates = new X509Certificate2Collection();
|
|
certificates.Import("client_cert.pfx", "1234", X509KeyStorageFlags.Exportable);
|
|
|
|
var httpMessageHandler = new HttpClientHandler
|
|
{
|
|
ServerCertificateCustomValidationCallback = (_, _, _, _) => true,
|
|
};
|
|
httpMessageHandler.ClientCertificates.AddRange(certificates);
|
|
|
|
// Act
|
|
var response = await new HttpClient(httpMessageHandler)
|
|
.GetAsync("https://localhost:" + server.Ports[0] + "/foo")
|
|
.ConfigureAwait(false);
|
|
|
|
// Assert
|
|
response.StatusCode.Should().Be(HttpStatusCode.OK);
|
|
}
|
|
}
|
|
#endif |