public async Task <ActionResult> RefreshToken([FromBody] string refreshToken) { if (string.IsNullOrEmpty(refreshToken)) { AddErrors("Invalid refresh token"); return(CustomResponse()); } var command = new TokenRefreshCommand(Guid.Parse(refreshToken)); var result = await _mediator.SendCommand <TokenRefreshCommand, UserLoginResponse>(command).ConfigureAwait(false); return(CustomResponse(result)); }
public async Task <CommandResult <UserLoginResponse> > Handle(TokenRefreshCommand command, CancellationToken cancellationToken) { var token = await _userLoginProvider.GetRefreshToken(command.TokenId).ConfigureAwait(false); if (token == null) { var @event = new TokenRefreshInvalidEvent(); await _mediatorHandler.PublishEvent(@event).ConfigureAwait(false); return(new CommandResult <UserLoginResponse>(@event.ValidationResult)); } var jsonToken = await _userLoginProvider.TokenGenerator(token.Username, _userProvider.Issuer, _userProvider.RefreshTokenExpiration).ConfigureAwait(false); return(new CommandResult <UserLoginResponse>(jsonToken)); }
public async Task RefreshUserToken_ValidUser(RefreshToken expectedResult, UserLoginResponse expectedUserLoginResponse) { //Arrange _userLoginProviderMock.Setup(s => s.GetRefreshToken(It.IsAny <Guid>())).ReturnsAsync(expectedResult); _userLoginProviderMock.Setup(s => s.TokenGenerator(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <double>())).ReturnsAsync(expectedUserLoginResponse); var refreshToken = Guid.NewGuid(); var command = new TokenRefreshCommand(refreshToken); _sut = new TokenRefreshCommandHandler(_userLoginProviderMock.Object, _mediatorHandlerMock.Object, _userProviderMock.Object); //Act var response = await _sut.Handle(command, CancellationToken.None); //Assert response.Payload.Should().NotBeNull(); response.ValidationResult.Should().BeNull(); // response.Payload.RefreshToken.Should().BeEquivalentTo(expectedResult.Token); }
public async Task RefreshUserToken_InvalidRefrehToken() { //Arrange var validationResult = new ValidationResult(); validationResult.Errors.Add(CreateValidationFailure(null, "Invalid token refresh")); var refreshToken = Guid.NewGuid(); _mediatorHandlerMock.Setup(s => s.PublishEvent(It.IsAny <TokenRefreshInvalidEvent>())) .Verifiable("Notification was sent"); var command = new TokenRefreshCommand(refreshToken); _sut = new TokenRefreshCommandHandler(_userLoginProviderMock.Object, _mediatorHandlerMock.Object, _userProviderMock.Object); //Act var response = await _sut.Handle(command, CancellationToken.None); //Assert response.Payload.Should().BeNull(); response.ValidationResult.Errors.Should().HaveCount(1); response.ValidationResult.Errors.Select(s => s.ErrorMessage).Should().Contain(validationResult.Errors.Select(s => s.ErrorMessage)); }