我正在查看Microsoft源代码中的Microsoft.AspNetCore.TestHost.TestServer
。在那里,我看到CreateClient()
属性为HttpClient
个对象。
那么如何在xUnit Test中附加数字签名的客户端证书?
HttpClient
就是这个例子。
var x509Certificate2 = new X509Certificate(); // Pretend it contains certificate data already.
var httpClientHandler = new HttpClientHandler() {
ClientCertificateOptions = ClientCertificateOption.Manual
};
httpClientHandler.ClientCertificates.Add(x509Certificate2);
using (var httpClient = new HttpClient(httpClientHandler))
{
}
现在使用TestServer
var testServer = new TestServer();
testServer.CreateClient(); // How do I attached client certificate here?
那么,我们如何在这里附上客户证书?对于CreateClient()
此外,我可以尝试执行HttpRequestMessage
,但它也不支持该证书选项。
答案 0 :(得分:0)
您可以尝试使用testServer.SendAsync(...)方法,然后从那里构造HttpContext。
var result = await server.SendAsync(context =>
{
context.Connection.ClientCertificate = myClientCertificate;
context.Request.Method = "POST";
});
只需确保根据需要指定路径和主体。