Ejemplo n.º 1
0
        public async Task <IActionResult> RefreshToken([FromBody] RefreshTokenRequest request)
        {
            ClaimsPrincipal validatedToken = _tokenService.IsTokenAuthentic(request.Token);

            if (validatedToken == null)
            {
                return(BadRequest(new ErrorResponse {
                    Message = "This token has been tampered with."
                }));
            }

            RefreshToken refreshToken = await _tokenService.CanTokenBeRefreshedAsync(validatedToken, request.RefreshToken);

            if (refreshToken == null)
            {
                return(BadRequest(new ErrorResponse {
                    Message = "Invalid Token, cannot refresh."
                }));
            }

            string organisationID = ClaimHelper.GetNamedClaim(validatedToken, "OrganisationID");

            var transaction = _unitOfWork.RefreshTokenRepository.BeginTransaction();

            RefreshTokenResponse refreshTokenResponse = await _tokenService.RefreshTokenAsync(validatedToken, refreshToken, organisationID);

            transaction.Commit();

            return(Ok(new Response <RefreshTokenResponse>(refreshTokenResponse)));
        }
Ejemplo n.º 2
0
        public async Task CanTokenBeRefreshedAsync_SuccessScenario_Test()
        {
            //arrange
            var claimsPrincipal = new ClaimsPrincipal();

            ClaimHelper.GetJTI            = (claimsPrincipal) => DataFixtures.GUID;
            ClaimHelper.GetUnixExpiryDate = (claimsPrincipal) => DateTimeOffset.Now.ToUnixTimeSeconds();

            var refreshToken = MockConfigurator.MockRefreshToken();
            var repository   = new Mock <IRefreshTokenRepository>();


            repository.Setup(repository => repository.GetRefreshToken(It.IsAny <string>()))
            .ReturnsAsync(refreshToken);
            _unitOfWork.Setup(uOfWork => uOfWork.RefreshTokenRepository).Returns(repository.Object);

            //assert
            Assert.NotNull(await _tokenService.CanTokenBeRefreshedAsync(claimsPrincipal, DataFixtures.RefreshToken));
        }