test(auth): give the reset test host's helpers names of their own

This commit is contained in:
Alexandre Brandizzi 2026-09-25 17:52:14 -03:00
parent 9198c5cd5d
commit c860936d07

View file

@ -43,9 +43,9 @@ internal sealed class PasswordResetTestHost : IAsyncDisposable
}
public HttpClient Client { get; }
public CapturingEmailSender Sent { get; private init; } = null!;
public ManualTimeProvider Time { get; private init; } = null!;
public CapturingLoggerProvider Logged { get; private init; } = null!;
public ResetEmailOutbox Sent { get; private init; } = null!;
public ResetTestClock Time { get; private init; } = null!;
public ResetLogCapture Logged { get; private init; } = null!;
public IServiceProvider Services => _app.Services;
public static async Task<PasswordResetTestHost> StartAsync(IEmailSender? emailSender = null, Action<IServiceCollection>? configureServices = null)
@ -53,9 +53,9 @@ internal sealed class PasswordResetTestHost : IAsyncDisposable
var databasePath = Path.Combine(Path.GetTempPath(), $"password-reset-{Guid.NewGuid():N}.db");
var connectionString = new SqliteConnectionStringBuilder { DataSource = databasePath, DefaultTimeout = 30 }.ToString();
var sent = new CapturingEmailSender();
var time = new ManualTimeProvider();
var logged = new CapturingLoggerProvider();
var sent = new ResetEmailOutbox();
var time = new ResetTestClock();
var logged = new ResetLogCapture();
var builder = WebApplication.CreateBuilder(new WebApplicationOptions { EnvironmentName = "Testing" });
builder.WebHost.UseUrls("http://127.0.0.1:0");
@ -234,7 +234,7 @@ internal sealed class PasswordResetTestHost : IAsyncDisposable
}
}
internal sealed class ManualTimeProvider : TimeProvider
internal sealed class ResetTestClock : TimeProvider
{
private DateTimeOffset _now = new(2026, 9, 25, 12, 0, 0, TimeSpan.Zero);
@ -243,7 +243,7 @@ internal sealed class ManualTimeProvider : TimeProvider
public void Advance(TimeSpan by) => _now = _now.Add(by);
}
internal sealed class CapturingEmailSender : IEmailSender
internal sealed class ResetEmailOutbox : IEmailSender
{
private static readonly Regex CodePattern = new(@"Your Password Reset Code is: (\d{6})", RegexOptions.CultureInvariant);
@ -262,7 +262,7 @@ internal sealed class CapturingEmailSender : IEmailSender
}
}
internal sealed class CapturingLoggerProvider : ILoggerProvider
internal sealed class ResetLogCapture : ILoggerProvider
{
public ConcurrentQueue<string> Lines { get; } = new();
@ -274,10 +274,10 @@ internal sealed class CapturingLoggerProvider : ILoggerProvider
private sealed class CapturingLogger : ILogger
{
private readonly CapturingLoggerProvider _owner;
private readonly ResetLogCapture _owner;
private readonly string _category;
public CapturingLogger(CapturingLoggerProvider owner, string category)
public CapturingLogger(ResetLogCapture owner, string category)
{
_owner = owner;
_category = category;