< Summary

Information
Class: KT.Modules.Security.Core.Application.RefreshTokenService
Assembly: KT.Modules.Security
File(s): G:\NetProjects\KeepTrack\src\Modules\KT.Modules.Security\Core\Application\RefreshTokenService.cs
Line coverage
96%
Covered lines: 29
Uncovered lines: 1
Coverable lines: 30
Total lines: 44
Line coverage: 96.6%
Branch coverage
83%
Covered branches: 10
Total branches: 12
Branch coverage: 83.3%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
RefreshTokenAsync()100%88100%
RevokeRefreshTokenAsync()50%4487.5%

File(s)

G:\NetProjects\KeepTrack\src\Modules\KT.Modules.Security\Core\Application\RefreshTokenService.cs

#LineLine coverage
 1using KT.Domain.Ports;
 2using KT.Modules.Security.Core.Application.Contracts;
 3using KT.Modules.Security.Core.Domain.Ports;
 4using KT.Modules.Security.Presentation.Contracts;
 5using KT.Modules.Security.Presentation.Dto;
 6
 7namespace KT.Modules.Security.Core.Application
 8{
 189    internal class RefreshTokenService(
 1810        IRefreshTokenRespository refreshTokenRespository,
 1811        IUserRepository userRepository,
 1812        IAccessTokenService accessTokenService
 1813        ) : IRefreshTokenService
 14    {
 15        public async Task<TokenResponseDto> RefreshTokenAsync(string refreshToken)
 416        {
 417            var token = await refreshTokenRespository.GetRefreshToken(refreshToken);
 418            if (token == null || token.IsRevoked || token.Expires < DateTime.UtcNow)
 219                throw new UnauthorizedAccessException("Invalid refresh token");
 220            var user = await userRepository.GetAsyncById(token.UserId);
 221            if (user == null)
 122                throw new UnauthorizedAccessException("Invalid refresh token");
 123            var newAccessToken = accessTokenService.GenerateAccessToken(user);
 124            token.Revoke();
 125            await refreshTokenRespository.SaveRefreshToken(token);
 126            var newRefreshToken = await accessTokenService.GenerateRefreshTokenAsync(user);
 127            return new TokenResponseDto
 128            {
 129                AccessToken = newAccessToken,
 130                RefreshToken = newRefreshToken.Token,
 131            };
 132        }
 33
 34        public async Task<bool> RevokeRefreshTokenAsync(string refreshToken)
 135        {
 136            var token = await refreshTokenRespository.GetRefreshToken(refreshToken);
 137            if (token == null || token.IsRevoked)
 038                throw new UnauthorizedAccessException("Invalid refresh token");
 139            token.Revoke();
 140            await refreshTokenRespository.SaveRefreshToken(token);
 141            return true;
 142        }
 43    }
 44}