Files

34 lines
1.4 KiB
C#

using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc.Testing;
using Xunit;
// Disable test parallelization across the assembly. Multiple WebFactory instances
// share the same process, and pre-Bind config wiring reads process-wide state;
// serial execution avoids interleaving flakes for a small suite like ours.
[assembly: CollectionBehavior(DisableTestParallelization = true)]
namespace VolcanicCore.Tests;
public class WebFactory : WebApplicationFactory<Program>
{
public string DataDir { get; } = Path.Combine(Path.GetTempPath(), $"vc-{Guid.NewGuid():N}");
public string AdminPassword { get; } = "hunter2";
public string WebhookTimeoutSeconds { get; } = "2";
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
builder.UseEnvironment("Testing");
// UseSetting writes into the configuration chain synchronously so
// Program.cs's Configuration.Bind picks these up without env vars.
builder.UseSetting(nameof(VolcanicCore.Api.AppSettings.DataDirectory), DataDir);
builder.UseSetting(nameof(VolcanicCore.Api.AppSettings.AdminPassword), AdminPassword);
builder.UseSetting(nameof(VolcanicCore.Api.AppSettings.WebhookDefaultTimeoutSeconds), WebhookTimeoutSeconds);
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
try { Directory.Delete(DataDir, recursive: true); } catch { }
}
}