public void GetAuthTokenWithNullRequest_ExceptionThrown() { DTO.Request.PKCETokenRequest tokenRequest = null; Func <Task> act = async() => await sut.GetPKCEAuthToken(tokenRequest); act.Should().Throw <Exception>().WithMessage("Token request is null."); }
public async Task <DTO.PKCETokenResponse> GetPKCEAuthToken([FromQuery] DTO.Request.PKCETokenRequest request) { if (request == null) { throw new System.Exception("Token request is null."); } RandomNumberGenerator rng = new RNGCryptoServiceProvider(); byte[] buffer0 = new byte[100]; byte[] buffer1 = new byte[100]; rng.GetBytes(buffer0); string accessToken = Convert.ToBase64String(buffer0); rng.GetBytes(buffer1); string refreshToken = Convert.ToBase64String(buffer1); var TokenResponse = new DTO.PKCETokenResponse { AccessToken = accessToken, CreatedAt = DateTime.UtcNow, ExpiresIn = 3600, RefreshToken = refreshToken, Scope = "UserReadPrivate, UserReadRecentlyPlayed", TokenType = "Bearer" }; await Task.Delay(0); return(TokenResponse); }
public void GetAuthToken_AuthTokenIsValid() { var(verifier, challenge) = PKCEUtil.GenerateCodes(); var tokenRequest = new DTO.Request.PKCETokenRequest { ClientId = ClientId, Code = "0", CodeVerifier = verifier, RedirectUri = new Uri("localhost:5000/callback") }; var retrievedToken = sut.GetPKCEAuthToken(tokenRequest); retrievedToken.Result.AccessToken.Should().NotBeNullOrEmpty(); retrievedToken.Result.RefreshToken.Should().NotBeNullOrEmpty(); retrievedToken.Result.AccessToken.Should().NotBeSameAs(retrievedToken.Result.RefreshToken); retrievedToken.Result.TokenType.Should().Be("Bearer"); retrievedToken.Result.IsExpired.Should().Be(false); retrievedToken.Result.Scope.Should().Contain("UserReadRecentlyPlayed"); retrievedToken.Result.ExpiresIn.Should().Be(3600); retrievedToken.Result.CreatedAt.Should().BeBefore(DateTime.Now); }