Тестирование метода контроллера с помощью токена JWT bearer token
Мне нужна помощь с издевательствами над модульными тестами.
Я пытаюсь вызвать метод в контроллере WebApi, который имеет атрибут авторизации на нем, например
[Authorize] [HttpGet] [ActionName("FineOutcome")] [ProducesResponseType(typeof(Response), 200)] [ProducesResponseType(401)] public async Task<IActionResult> FineOutcome(string PCN, int ia) { //Code Action here }
Авторизация осуществляется с помощью токена на предъявителя JWT. Теперь я пытаюсь протестировать этот метод и не могу / не знаю, как издеваться или передавать токен носителя JWT.
Что я уже пробовал:
var userMock = new Mock<IPrincipal>(); userMock.Setup(p => p.IsInRole("admin")).Returns(true); var contextMock = new Mock<HttpContext>(); contextMock.Setup(x => x.User ).Returns(new ClaimsPrincipal()); controller.ControllerContext.HttpContext = contextMock.Object; var outcome = controller.FineOutcome("513073/372796", 467);
но когда я пытаюсь получить execute the test, метод контроллера жалуется, что пользователь пуст. Может ли кто-нибудь указать мне правильное направление?
Ссылки, которые я пробовал
c# - как издеваться над контроллером.Пользователь, использующий moq - Stack Overflow[^]
c# - модульное тестирование токена JWT с помощью Web API - переполнение стека[^]