예제 #1
0
        public async void UpdateRefreshTokenThrowsExceptionWhenClaimsPrincipalIsInvalidAsync()
        {
            JwtTokenBl jwtService = new JwtTokenBl(_mockRefreshRepository.Object, _mockUserBl.Object, _mockAccountBl.Object, _mockConfigurations.Object);

            await Assert.ThrowsAsync <SecurityTokenException>(() => jwtService.UpdateRefreshTokenAsync("token", _mockClaimsPrincipal.Object));

            _mockRefreshRepository.Verify(refreshRepository => refreshRepository.UpdateAsync(It.IsAny <UserRefreshToken>()), Times.Never);
        }
예제 #2
0
        public async void LoginByRefreshTokenMustCreateRefreshTokenWhenUserNotHaveYetAsync()
        {
            _mockRefreshRepository.Setup(refreshRepository => refreshRepository.GetByUserIdAsync(It.IsAny <string>())).ReturnsAsync((UserRefreshToken)null);

            JwtTokenBl jwtService = new JwtTokenBl(_mockRefreshRepository.Object, _mockUserBl.Object, _mockAccountBl.Object, _mockConfigurations.Object);
            await jwtService.LoginByRefreshTokenAsync("id", "token");

            _mockRefreshRepository.Verify(refreshRepository => refreshRepository.UpdateAsync(It.IsAny <UserRefreshToken>()), Times.Never);
            _mockRefreshRepository.Verify(refreshRepository => refreshRepository.CreateAsync(It.IsAny <UserRefreshToken>()), Times.Once);
        }
예제 #3
0
        public async void DeleteRefreshTokenMustDeleteRefreshTokenByUserEmailAsync()
        {
            var mockClaim = new Mock <Claim>("uid", "id");

            _mockClaimsPrincipal.Setup(claimsPrincipal => claimsPrincipal.HasClaim(It.IsAny <Predicate <Claim> >())).Returns(true);
            _mockClaimsPrincipal.Setup(claimsPrincipal => claimsPrincipal.FindFirst(It.IsAny <Predicate <Claim> >())).Returns(mockClaim.Object);
            _mockRefreshRepository.Setup(refreshRepository => refreshRepository.GetByUserIdAsync(It.IsAny <string>())).ReturnsAsync(_mockUserRefreshToken.Object);

            JwtTokenBl jwtService = new JwtTokenBl(_mockRefreshRepository.Object, _mockUserBl.Object, _mockAccountBl.Object, _mockConfigurations.Object);
            await jwtService.DeleteRefreshTokenAsync(_mockClaimsPrincipal.Object);

            _mockRefreshRepository.Verify(refreshRepository => refreshRepository.DeleteAsync(_mockUserRefreshToken.Object.Id), Times.Once);
        }
예제 #4
0
        public async void UpdateRefreshTokenThrowsExceptionWhenRefreshTokensIsNotEqualAsync()
        {
            var mockClaim = new Mock <Claim>("uid", "id");

            _mockClaimsPrincipal.Setup(claimsPrincipal => claimsPrincipal.HasClaim(It.IsAny <Predicate <Claim> >())).Returns(true);
            _mockClaimsPrincipal.Setup(claimsPrincipal => claimsPrincipal.FindFirst(It.IsAny <Predicate <Claim> >())).Returns(mockClaim.Object);
            _mockRefreshRepository.Setup(refreshRepository => refreshRepository.GetByUserIdAsync(It.IsAny <string>())).ReturnsAsync(_mockUserRefreshToken.Object);

            JwtTokenBl jwtService = new JwtTokenBl(_mockRefreshRepository.Object, _mockUserBl.Object, _mockAccountBl.Object, _mockConfigurations.Object);

            await Assert.ThrowsAsync <SecurityTokenException>(() => jwtService.UpdateRefreshTokenAsync("token", _mockClaimsPrincipal.Object));

            _mockRefreshRepository.Verify(refreshRepository => refreshRepository.UpdateAsync(It.IsAny <UserRefreshToken>()), Times.Never);
        }
예제 #5
0
        public async void UpdateRefreshTokenMustUpdateRefreshTokenAndReturnNewRefreshTokenAsync()
        {
            var userRefreshToken = new UserRefreshToken {
                RefreshToken = "token"
            };
            var mockClaim = new Mock <Claim>("uid", "id");

            _mockClaimsPrincipal.Setup(claimsPrincipal => claimsPrincipal.HasClaim(It.IsAny <Predicate <Claim> >())).Returns(true);
            _mockClaimsPrincipal.Setup(claimsPrincipal => claimsPrincipal.FindFirst(It.IsAny <Predicate <Claim> >())).Returns(mockClaim.Object);
            _mockRefreshRepository.Setup(refreshRepository => refreshRepository.GetByUserIdAsync(It.IsAny <string>())).ReturnsAsync(userRefreshToken);

            JwtTokenBl jwtService         = new JwtTokenBl(_mockRefreshRepository.Object, _mockUserBl.Object, _mockAccountBl.Object, _mockConfigurations.Object);
            var        actualRefreshToken = await jwtService.UpdateRefreshTokenAsync("token", _mockClaimsPrincipal.Object);

            _mockRefreshRepository.Verify(refreshRepository => refreshRepository.UpdateAsync(userRefreshToken), Times.Once);
        }
예제 #6
0
        public async void GetClaimsMustWriteUserNameInClaims()
        {
            var roles = new List <string> {
                "somerole"
            };

            _mockAccountBl.Setup(userService => userService.GetUserRoles(_mockUser.Object)).ReturnsAsync(roles);
            _mockUser.SetupGet(user => user.UserName).Returns("userName");
            _mockUser.SetupGet(user => user.Email).Returns("email");
            _mockUser.SetupGet(user => user.Id).Returns("id");

            JwtTokenBl jwtService   = new JwtTokenBl(_mockRefreshRepository.Object, _mockUserBl.Object, _mockAccountBl.Object, _mockConfigurations.Object);
            var        actualClaims = await jwtService.GetClaimsAsync(_mockUser.Object);

            var existsUserName = new List <Claim>(actualClaims)
                                 .Exists(claim => claim.Type == JwtRegisteredClaimNames.Sub && claim.Value == "userName");

            _mockAccountBl.Verify();
            _mockUser.Verify();
            Assert.True(existsUserName);
        }