// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.AspNetCore.Server.IIS.FunctionalTests; using Microsoft.AspNetCore.Server.IntegrationTesting.IIS; using Microsoft.AspNetCore.InternalTesting; using Xunit.Abstractions; namespace Microsoft.AspNetCore.Server.IntegrationTesting; public class FunctionalTestsBase : LoggedTest { private const string DebugEnvironmentVariable = "ASPNETCORE_MODULE_DEBUG"; public FunctionalTestsBase(ITestOutputHelper output = null) : base(output) { } protected IISDeployerBase _deployer; protected IISDeploymentResult _deploymentResult; protected ApplicationDeployer CreateDeployer(IISDeploymentParameters parameters) { if (parameters.ServerType == ServerType.IISExpress && !parameters.EnvironmentVariables.ContainsKey(DebugEnvironmentVariable)) { parameters.EnvironmentVariables[DebugEnvironmentVariable] = "console"; } return IISApplicationDeployerFactory.Create(parameters, LoggerFactory); } protected virtual async Task<IISDeploymentResult> DeployAsync(IISDeploymentParameters parameters) { _deployer = (IISDeployerBase)CreateDeployer(parameters); return _deploymentResult = (IISDeploymentResult)await _deployer.DeployAsync(); } protected virtual async Task<IISDeploymentResult> StartAsync(IISDeploymentParameters parameters) { var result = await DeployAsync(parameters); await result.AssertStarts(); return result; } protected virtual async Task<string> GetStringAsync(IISDeploymentParameters parameters, string path) { var result = await DeployAsync(parameters); return await result.HttpClient.GetStringAsync(path); } public override void Dispose() { StopServer(false); } public void StopServer(bool gracefulShutdown = true) { _deploymentResult?.Dispose(); _deployer?.Dispose(gracefulShutdown); _deployer = null; } } |