Я пытаюсь сделать TDD во время разработки, но я борюсь. В моем первом тесте я могу успешно получить параметры, установленные в services.AddAuthentication (...), но я не могу получить параметры из .AddCook ie (..), добавленного к предыдущему вызову. Во время отладки я вижу, что для CookieAuthenticationOptions добавлен IPostConfigureOptions, и я подозреваю, что он каким-то образом изменяет значения параметров по умолчанию, но я не знаю, как его получить.
Код для проверки:
public static void AddOpenIdConnect(this IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options => { options.MinimumSameSitePolicy = SameSiteMode.None; });
services.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie(
CookieAuthenticationDefaults.AuthenticationScheme,
options =>
{
options.ExpireTimeSpan = TimeSpan.FromHours(2);
options.SlidingExpiration = true;
options.AccessDeniedPath = new PathString("/Error/403");
}
);
}
Мой первый тест проверил, что AuthenticationOptions были установлены, и он проходит:
[TestMethod]
public void AddOpenIdConnect_Should_AddAuthenticationOptions()
{
// arrange
var services = new ServiceCollection();
// act
services.AddOpenIdConnect();
// assert
var provider = services.BuildServiceProvider();
var authOptions = provider.GetRequiredService<IOptions<AuthenticationOptions>>();
authOptions.Value.DefaultScheme.Should().Be(CookieAuthenticationDefaults.AuthenticationScheme);
authOptions.Value.DefaultChallengeScheme.Should().Be(OpenIdConnectDefaults.AuthenticationScheme);
}
Этот метод завершается ошибкой, так как AccessDeniedPath возвращает настройку по умолчанию, а не настройку, которую устанавливает проверяемый код ( Вы можете видеть, что я прокомментировал проверку ExpireTimeSpan, поскольку он также не работает.)
[TestMethod]
public void AddOpenIdConnect_Should_AddCookieAuthenticationOptions()
{
// arrange
var services = new ServiceCollection();
// act
services.AddOpenIdConnect();
// assert
var provider = services.BuildServiceProvider();
var authCookieOptions = provider.GetRequiredService<IOptions<CookieAuthenticationOptions>>();
//authCookieOptions.Value.ExpireTimeSpan.Should().Be(TimeSpan.FromHours(2));
authCookieOptions.Value.SlidingExpiration.Should().BeTrue();
authCookieOptions.Value.AccessDeniedPath.Should().Be("/Error/403");
}
Любая помощь будет принята с благодарностью, так как мне все еще нужно добавить ".AddOpenIdConnect (options =>") после этого.
Спасибо!