Пример #1
0
        public async void GeneratedAccessTokenContainsCorrectContentAndValidatesAgainstSignature(int tokenOffset1,
                                                                                                 string user)
        {
            IdentityModelEventSource.ShowPII = true;
            var service = new JwtService(
                _refreshTokenRepository,
                _testSecret1,
                tokenOffset1,
                _testSecret2,
                -1)
            {
                Clock = _fromUnixStartOneMinuteInterval
            };

            var token = service.GenerateAccessToken(await _userService.GetClaimsForUser(user));

            var handler = new JwtSecurityTokenHandler();

            handler.ValidateToken(token, _accessTokenValidationParameters, out var validToken);
            var jwt = validToken as JwtSecurityToken;

            Assert.NotNull(jwt);
            Assert.True(Instant.FromDateTimeUtc(jwt.ValidTo)
                        .Equals(_unixStart.Plus(Duration.FromMinutes(tokenOffset1))));

            Assert.Equal(user, jwt.Subject);

            Assert.Equal("testrole", jwt.Claims
                         .Where(c => c.Type == "role")
                         .Select(c => c.Value).FirstOrDefault());
        }