Use pfx file instead of cert from the store

This commit is contained in:
Javier Calvarro Nelson 2020-04-03 02:36:47 -07:00 committed by Doug Bunting
parent 11f80434db
commit 39a24220cf
1 changed files with 18 additions and 4 deletions

View File

@ -4,6 +4,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.IO;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http; using System.Net.Http;
@ -30,6 +31,9 @@ namespace Templates.Test.Helpers
private readonly HttpClient _httpClient; private readonly HttpClient _httpClient;
private readonly ITestOutputHelper _output; private readonly ITestOutputHelper _output;
private string _certificatePath;
private string _certificatePassword = Guid.NewGuid().ToString();
internal readonly Uri ListeningUri; internal readonly Uri ListeningUri;
internal ProcessEx Process { get; } internal ProcessEx Process { get; }
@ -48,12 +52,14 @@ namespace Templates.Test.Helpers
AllowAutoRedirect = true, AllowAutoRedirect = true,
UseCookies = true, UseCookies = true,
CookieContainer = new CookieContainer(), CookieContainer = new CookieContainer(),
ServerCertificateCustomValidationCallback = (m, c, ch, p) => true, ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator,
}) })
{ {
Timeout = TimeSpan.FromMinutes(2) Timeout = TimeSpan.FromMinutes(2)
}; };
_certificatePath = Path.Combine(workingDirectory, $"{Guid.NewGuid()}.pfx");
EnsureDevelopmentCertificates(); EnsureDevelopmentCertificates();
output.WriteLine("Running ASP.NET application..."); output.WriteLine("Running ASP.NET application...");
@ -62,7 +68,13 @@ namespace Templates.Test.Helpers
logger?.LogInformation($"AspNetProcess - process: {DotNetMuxer.MuxerPathOrDefault()} arguments: {arguments}"); logger?.LogInformation($"AspNetProcess - process: {DotNetMuxer.MuxerPathOrDefault()} arguments: {arguments}");
Process = ProcessEx.Run(output, workingDirectory, DotNetMuxer.MuxerPathOrDefault(), arguments, envVars: environmentVariables); var finalEnvironmentVariables = new Dictionary<string, string>(environmentVariables)
{
["ASPNETCORE_KESTREL__CERTIFICATES__DEFAULT__PATH"] = _certificatePath,
["ASPNETCORE_KESTREL__CERTIFICATES__DEFAULT__PASSWORD"] = _certificatePassword
};
Process = ProcessEx.Run(output, workingDirectory, DotNetMuxer.MuxerPathOrDefault(), arguments, envVars: finalEnvironmentVariables);
logger?.LogInformation("AspNetProcess - process started"); logger?.LogInformation("AspNetProcess - process started");
@ -74,10 +86,12 @@ namespace Templates.Test.Helpers
} }
} }
internal static void EnsureDevelopmentCertificates() internal void EnsureDevelopmentCertificates()
{ {
var now = DateTimeOffset.Now; var now = DateTimeOffset.Now;
new CertificateManager().EnsureAspNetCoreHttpsDevelopmentCertificate(now, now.AddYears(1)); var manager = new CertificateManager();
var certificate = manager.CreateAspNetCoreHttpsDevelopmentCertificate(now, now.AddYears(1), "CN=localhost");
manager.ExportCertificate(certificate, path: _certificatePath, includePrivateKey: true, _certificatePassword);
} }
public void VisitInBrowser(IWebDriver driver) public void VisitInBrowser(IWebDriver driver)