public async Task <IActionResult> GenerateTokenAsync([FromBody] GenerateJwtModel generateJwtModel) { var generateJwtInfo = new GenerateJwtInfo { Audience = generateJwtOptions.Audience, Issuer = generateJwtOptions.Issuer, Secret = generateJwtOptions.Secret, Scopes = new[] { Policies.TodoItems.CreateTodoItem, Policies.TodoItems.DeleteTodoItem, Policies.TodoItems.GetTodoItems, Policies.TodoItems.UpdateTodoItem }, UserName = generateJwtModel.UserName, Password = generateJwtModel.Password }; JwtInfo jwtInfo = await generateJwtFlow.ExecuteAsync(generateJwtInfo, User); var jwtModel = new JwtModel { AccessToken = jwtInfo.AccessToken }; return(Ok(jwtModel)); }
public async Task ExecuteAsync_WhenGenerateJwtInfoIsValid_ReturnsExpectedData() { // Arrange var expectedJwtInfo = new JwtInfo(); var jwtService = new Mock <IJwtService>(); jwtService.Setup(x => x.GenerateJwtAsync(It.IsAny <GenerateJwtInfo>())).ReturnsAsync(expectedJwtInfo); var logger = new Mock <ILogger <GenerateJwtFlow> >(); var generateJwtInfo = new GenerateJwtInfo(); var principal = new Mock <IPrincipal>(); principal.SetupGet(x => x.Identity).Returns(new GenericIdentity("test")); var generateJwtFlow = new GenerateJwtFlow(jwtService.Object, logger.Object); // Act var actualJwtInfo = await generateJwtFlow.ExecuteAsync(generateJwtInfo, principal.Object); // Assert actualJwtInfo.Should().BeEquivalentTo(expectedJwtInfo, $"because {nameof(GenerateJwtFlow)} works"); }
public Task <JwtInfo> ExecuteAsync(GenerateJwtInfo input, IPrincipal flowInitiator) { throw new InvalidOperationException("This method must fail for testing purposes"); }