Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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));
        }