Exemplo n.º 1
0
        public async Task Should_RefreshToken()
        {
            var request      = FakeRequest();
            var refreshToken = new RefreshTokenFake().Builder.Generate();

            var uowGeneralMock = new Mock <IUowGeneral>();

            uowGeneralMock.Setup(x => x.RefreshTokenRepository.FindByToken(request.Token))
            .ReturnsAsync(refreshToken);
            var accessTokenService  = new Mock <IAccessTokenService>();
            var refreshTokenService = new RefreshTokenService(uowGeneralMock.Object);

            var handler = new RefreshTokenCommandHandler(
                uowGeneralMock.Object, accessTokenService.Object, refreshTokenService);

            var response = await handler.Handle(request, default);

            Assert.NotNull(response);
            accessTokenService.Verify(x => x.GetAccessToken(refreshToken.User), Times.Once);
            uowGeneralMock.Verify(x =>
                                  x.RefreshTokenRepository.Create(It.IsNotIn(refreshToken)), Times.Once);
            uowGeneralMock.Verify(x =>
                                  x.RefreshTokenRepository.Delete(refreshToken), Times.Once);
            uowGeneralMock.Verify(x => x.SaveChanges(), Times.Once);
        }
Exemplo n.º 2
0
        public async Task Should_RefreshToken()
        {
            var client = _factory.CreateClient();

            var user = await _factory.Util.GetUser();

            var refreshToken = new RefreshTokenFake(user).Builder.Generate();
            await _factory.Util.SaveEntity(refreshToken);

            var request = new RefreshTokenCommand()
            {
                Token = refreshToken.Token
            };
            var json     = _factory.Util.AsJsonContent(request);
            var response = await client.PostAsync("api/refresh_token", json);

            response.EnsureSuccessStatusCode();
            var responseMessage = await response.Content.ReadAsStringAsync();

            var refreshTokenResponse = _factory.Util.Deserialize <RefreshTokenResponse>(responseMessage);

            Assert.NotNull(refreshTokenResponse);
            Assert.NotNull(refreshTokenResponse.AccessToken);
            Assert.NotEmpty(refreshTokenResponse.AccessToken.Token);
            Assert.NotNull(refreshTokenResponse.RefreshToken);
            Assert.NotEmpty(refreshTokenResponse.AccessToken.Token);
        }
Exemplo n.º 3
0
        public async Task ShouldThrow_InvalidRefreshTokenException_OnExpiredRefreshToken()
        {
            var request = FakeRequest();
            var refreshTokenFakeBuilder = new RefreshTokenFake().Builder;

            refreshTokenFakeBuilder.RuleFor(x => x.ExpiresAt, f => f.Date.Past());
            var refreshToken = refreshTokenFakeBuilder.Generate();

            var uowGeneralMock = new Mock <IUowGeneral>();

            uowGeneralMock.Setup(x => x.RefreshTokenRepository.FindByToken(request.Token))
            .ReturnsAsync(refreshToken);
            var accessTokenService  = new Mock <IAccessTokenService>();
            var refreshTokenService = new RefreshTokenService(uowGeneralMock.Object);

            var handler = new RefreshTokenCommandHandler(
                uowGeneralMock.Object, accessTokenService.Object, refreshTokenService);

            await Assert.ThrowsAsync <InvalidRefreshTokenException>(() =>
                                                                    handler.Handle(request, default));
        }