public async Task <AuthenticationResult> GenerateToken(AuthenticationData authenticationData) { return(await Task.Run(() => { if (!pinGenerator.PINIsValid(authenticationData.PINData)) { return new AuthenticationResult( string.Empty, false, "PIN invalid", authenticationData ); } else { var tokenExpires = int.Parse(configuration.GetSection("Parameters:TimeTokenExpires").Value); var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(Settings.Secret); var claims = new List <Claim>() { new Claim(ClaimTypes.Name, authenticationData.UserName) }; authenticationData.Roles.ToList().ForEach(role => claims.Add(new Claim(ClaimTypes.Role, role))); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.UtcNow.AddHours(tokenExpires), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); return new AuthenticationResult( tokenHandler.WriteToken(token), true, string.Empty, authenticationData ); } })); }
[InlineData("SNzidQ9g1M7ROWbviSIEkfMOBRd/VQ91sC125Xz0Bbg=")] // PIN Digit Verificator invalid public void TestPINIsInvalid(string pin) { var pinResult = pinGenerator.PINIsValid(pin); Assert.False(pinResult); }