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

This commit is contained in:
Alexandre Brandizzi 2026-09-25 17:51:26 -03:00
parent f0dcba63fd
commit 5eb1323419
2 changed files with 13 additions and 13 deletions

View file

@ -123,7 +123,7 @@ public sealed class PasswordResetAbuseLimitsTests
[Fact]
public void Concurrent_checks_can_never_exceed_the_account_budget()
{
var throttle = new InMemoryPasswordResetThrottle(new ManualTimeProvider());
var throttle = new InMemoryPasswordResetThrottle(new ResetTestClock());
var reserved = 0;
Parallel.For(0, 64, _ =>
@ -138,7 +138,7 @@ public sealed class PasswordResetAbuseLimitsTests
[Fact]
public void A_matching_check_gives_its_reservation_back()
{
var throttle = new InMemoryPasswordResetThrottle(new ManualTimeProvider());
var throttle = new InMemoryPasswordResetThrottle(new ResetTestClock());
for (var check = 0; check < 50; check++)
{

View file

@ -46,9 +46,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)
@ -56,9 +56,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");
@ -258,7 +258,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);
@ -267,7 +267,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);
@ -286,7 +286,7 @@ internal sealed class CapturingEmailSender : IEmailSender
}
}
internal sealed class CapturingLoggerProvider : ILoggerProvider
internal sealed class ResetLogCapture : ILoggerProvider
{
public ConcurrentQueue<string> Lines { get; } = new();
@ -298,10 +298,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;