public async Task <Token> GenerateToken(string issuer, string[] audiences, string userId, string username, double accessTokenExpirationInMinutes, double refreshTokenExpirationInMinutes, IDictionary <string, object> customClaims = null, bool generateRefreshToken = false) { DateTimeOffset now = DateTime.UtcNow; DateTime refreshTokenExpirationDate = now.DateTime.AddMinutes(refreshTokenExpirationInMinutes); JwtPayload tokenPayload = SetPayload(issuer, audiences, userId, username, accessTokenExpirationInMinutes, now, customClaims); Token token = new Token(); token.AccessToken = await WriteToken(tokenPayload); if (generateRefreshToken) { token.RefreshToken = Guid.NewGuid().ToString(); RefreshToken refreshToken = new RefreshToken { Token = token.RefreshToken, UserId = long.Parse(userId), ExpirationDate = refreshTokenExpirationDate, AccessToken = token.AccessToken }; IdentityResult identityResult = await _tokenStore.CreateRefreshTokenAsync(refreshToken, CancellationToken.None); if (!identityResult.Succeeded) { return(null); } } return(token); }
public async Task CreateRefreshTokenAsync_ShouldCreateANewRefreshToken() { // Arrange ITokenStore tokenStore = _serviceProvider.GetService <ITokenStore>(); RefreshToken refreshToken = new RefreshToken { UserId = 3, Token = Guid.NewGuid().ToString(), ExpirationDate = DateTime.Now.AddMinutes(10), AccessToken = "" }; // Act IdentityResult identityResult = await tokenStore.CreateRefreshTokenAsync(refreshToken, CancellationToken.None); // Assert Assert.True(identityResult.Succeeded); }