Я написал атрибут, который работает, когда стек работает на сервере kestrel.
Но когда я пытаюсь добавить тест для этого, атрибут никогда не вызывается.
Атрибут:
public class AuthenticatedAttribute : Attribute, IAlwaysRunResultFilter
{
public void OnResultExecuting(ResultExecutingContext context)
{
if (context.HttpContext.User.Identity.IsAuthenticated)
{
context.Result = new RedirectToPageResult("/Index");
}
}
public void OnResultExecuted(ResultExecutedContext context)
{
}
}
Тест:
[Fact]
public async Task Get_SignInFromAuthenticated_ShouldRedirectToIndex()
{
var response = await GetPageByPath("/users/sigin");
Assert.NotEqual("/users/sigin", response.RequestMessage.RequestUri.AbsolutePath);
}
Тестовая конфигурация:
_client = CreateClient(new WebApplicationFactoryClientOptions
{
AllowAutoRedirect = false,
});
protected async Task<HttpResponseMessage> GetPageByPath(string path)
{
return await _client.GetAsync(path);
}
Было бы здорово, если бы эту функцию можно было проверить, чтобы узнать, правильно ли перенаправляет мой фильтр на страницу, которая содержит фильтр.