public void ValidateAsync_GarbageJwt_Throws() { var publicKeyProvider = new Mock<IPublicKeyProvider>( MockBehavior.Strict ).Object; IAccessTokenValidator accessTokenValidator = new AccessTokenValidator( publicKeyProvider ); Assert.Throws<ValidationException>( () => accessTokenValidator.ValidateAsync( "garbage" ).SafeAsync().GetAwaiter().GetResult() ); }
private async Task RunTest( bool signJwt, DateTime jwtExpiry, Type expectedExceptionType = null ) { Guid keyId = Guid.NewGuid(); D2LSecurityToken signingToken = D2LSecurityTokenUtility.CreateActiveToken( id: keyId ); SigningCredentials signingCredentials = null; if( signJwt ) { signingCredentials = signingToken.GetSigningCredentials(); } var jwtToken = new JwtSecurityToken( issuer: "someissuer", signingCredentials: signingCredentials, expires: jwtExpiry ); var tokenHandler = new JwtSecurityTokenHandler(); string serializedJwt = tokenHandler.WriteToken( jwtToken ); IPublicKeyProvider publicKeyProvider = PublicKeyProviderMock.Create( m_jwksEndpoint, keyId, signingToken ).Object; IAccessTokenValidator tokenValidator = new AccessTokenValidator( publicKeyProvider ); IAccessToken accessToken = null; Exception exception = null; try { accessToken = await tokenValidator.ValidateAsync( accessToken: serializedJwt ).SafeAsync(); } catch( Exception e ) { exception = e; } if( expectedExceptionType != null ) { Assert.IsNull( accessToken, "Unexpected access token returned from validation" ); Assert.IsNotNull( exception, "Expected an exception but got null" ); Assert.AreEqual( expectedExceptionType, exception.GetType(), "Wrong exception type" ); } else { Assert.IsNotNull( accessToken, "Expected an access token but got none" ); } }