34 lines
1.4 KiB
C#
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 { }
|
|
}
|
|
}
|