public void GenerateEncryptingKey_Returns_Key_Of_Encrypting_Key_Length() { // Arrange // Act var result = JwtF.GenerateEncryptingKey(); // Assert Assert.Equal(JwtSecurity.EncryptingKeyBytes, result.Length); }
public void Expired_Returns_None_With_TokenHasExpiredMsg() { // Arrange var(config, token, _) = GetToken(false, DateTime.UtcNow.AddHours(-1), DateTime.UtcNow.AddMinutes(-30)); // Act var result = JwtF.ValidateToken(config, token); // Assert result.AssertNone().AssertType <TokenHasExpiredMsg>(); }
public void Invalid_Authorization_Header_Returns_None_With_InvalidAuthorisationHeaderMsg() { // Arrange var header = Rnd.Str; // Act var result = JwtF.GetToken(header); // Assert result.AssertNone().AssertType <InvalidAuthorisationHeaderMsg>(); }
public void Not_Valid_Yet_Returns_None_With_TokenIsNotValidYetMsg() { // Arrange var(config, token, _) = GetToken(false, DateTime.UtcNow.AddHours(1), DateTime.UtcNow.AddHours(1)); // Act var result = JwtF.ValidateToken(config, token); // Assert result.AssertNone().AssertType <TokenIsNotValidYetMsg>(); }
public void Missing_Header_Returns_None_With_MissingAuthorisationHeaderMsg() { // Arrange var headers = new Dictionary <string, StringValues>(); // Act var result = JwtF.GetAuthorisationHeader(headers); // Assert result.AssertNone().AssertType <MissingAuthorisationHeaderMsg>(); }
public void GetPrincipal_Calls_Auth_ValidateToken() { // Arrange var auth = Substitute.For <IAuthJwtProvider>(); var value = Rnd.Str; // Act _ = JwtF.GetPrincipal(auth, value); // Assert auth.Received().ValidateToken(value); }
public void Identity_Not_Authenticated_Returns_None_With_IdentityNotAuthenticatedMsg() { // Arrange var config = new JwtConfig(); var principal = Substitute.For <ClaimsPrincipal>(); // Act var result = JwtF.CreateToken(config, principal); // Assert result.AssertNone().AssertType <IdentityNotAuthenticatedMsg>(); }
public void Valid_Token_With_Encryption_Returns_Principal() { // Arrange var(config, token, name) = GetToken(true, DateTime.UtcNow, DateTime.UtcNow.AddHours(1)); // Act var result = JwtF.ValidateToken(config, token); // Assert var some = result.AssertSome(); Assert.Equal(name, some.Identity?.Name); }
public void GenerateEncryptingKey_Returns_Key_With_All_Character_Classes() { // Arrange // Act var result = JwtF.GenerateEncryptingKey(); // Assert Assert.False(result.All(c => Rnd.StringF.LowercaseChars.Contains(c))); Assert.False(result.All(c => Rnd.StringF.UppercaseChars.Contains(c))); Assert.False(result.All(c => Rnd.StringF.NumberChars.Contains(c))); Assert.False(result.All(c => Rnd.StringF.SpecialChars.Contains(c))); Assert.True(result.All(c => Rnd.StringF.AllChars.Contains(c))); }
public void Identity_Null_Returns_None_With_NullIdentityMsg() { // Arrange var config = new JwtConfig(); var principal = Substitute.For <ClaimsPrincipal>(); principal.Identity.Returns(_ => null); // Act var result = JwtF.CreateToken(config, principal); // Assert result.AssertNone().AssertType <NullIdentityMsg>(); }
public void Returns_Token() { // Arrange var value = Rnd.Str; var header = $"Bearer {value}"; // Act var result = JwtF.GetToken(header); // Assert var some = result.AssertSome(); Assert.Equal(value, some); }
public void Invalid_Config_Returns_None_With_JwtConfigInvalidMsg() { // Arrange var config = new JwtConfig(); var identity = Substitute.For <IIdentity>(); identity.IsAuthenticated.Returns(true); var principal = Substitute.For <ClaimsPrincipal>(); principal.Identity.Returns(identity); // Act var result = JwtF.CreateToken(config, principal); // Assert result.AssertNone().AssertType <ConfigInvalidMsg>(); }
public void Returns_Authorization_Header() { // Arrange var value = Rnd.Str; var headers = new Dictionary <string, StringValues> { { "Authorization", value } }; // Act var result = JwtF.GetAuthorisationHeader(headers); // Assert var some = result.AssertSome(); Assert.Equal(value, some); }
private static (JwtConfig config, string token, string user) GetToken(bool encrypt, DateTime notBefore, DateTime expires) { var config = encrypt switch { true => new JwtConfig { SigningKey = Rnd.StringF.Get(32), EncryptingKey = Rnd.StringF.Get(64), Issuer = Rnd.Str, Audience = Rnd.Str }, false => new JwtConfig { SigningKey = Rnd.StringF.Get(32), Issuer = Rnd.Str, Audience = Rnd.Str } }; var name = Rnd.Str; var identity = Substitute.For <IIdentity>(); identity.IsAuthenticated.Returns(true); identity.Name.Returns(name); var principal = Substitute.For <ClaimsPrincipal>(); principal.Identity.Returns(identity); var token = JwtF.CreateToken( config, principal, notBefore, expires ).Unwrap( () => throw new Exception("Error creating token.") ); return(config, token, name); }
public void SigningKey_Not_Long_Enough_Returns_None_With_SigningKeyNotLongEnoughMsg() { // Arrange var config = new JwtConfig { SigningKey = Rnd.Str, Issuer = Rnd.Str, Audience = Rnd.Str }; var identity = Substitute.For <IIdentity>(); identity.IsAuthenticated.Returns(true); var principal = Substitute.For <ClaimsPrincipal>(); principal.Identity.Returns(identity); // Act var result = JwtF.CreateToken(config, principal); // Assert result.AssertNone().AssertType <SigningKeyNotLongEnoughMsg>(); }
public void Valid_Config_Without_Encryption_Returns_Token() { // Arrange var config = new JwtConfig { SigningKey = Rnd.StringF.Get(32), Issuer = Rnd.Str, Audience = Rnd.Str }; var identity = Substitute.For <IIdentity>(); identity.IsAuthenticated.Returns(true); var principal = Substitute.For <ClaimsPrincipal>(); principal.Identity.Returns(identity); // Act var result = JwtF.CreateToken(config, principal); // Assert result.AssertSome(); }