public async Task OnGeneratingClaims_AddsGrantedTokensForAuthorizationCode(
            string scopes,
            string tokens)
        {
            // Arrange
            var context = new TokenGeneratingContext(
                new ClaimsPrincipal(),
                new ClaimsPrincipal(),
                new OpenIdConnectMessage(),
                new RequestGrants()
            {
                Scopes = scopes.Split(' ').Select(CreateScope).ToList()
            });

            var expectedTokens = tokens.Split(' ').OrderBy(t => t).ToArray();

            var claimsProvider = new GrantedTokensTokenClaimsProvider();

            context.InitializeForToken(TokenTypes.AuthorizationCode);

            // Act
            await claimsProvider.OnGeneratingClaims(context);

            var granted = context.CurrentClaims
                          .Where(c => c.Type.Equals(IdentityServiceClaimTypes.GrantedToken))
                          .OrderBy(c => c.Value)
                          .Select(c => c.Value)
                          .ToArray();

            // Assert
            Assert.Equal(expectedTokens, granted);
        }
        public async Task OnGeneratingClaims_AddsGrantedTokensForRefreshToken()
        {
            // Arrange
            var context = new TokenGeneratingContext(
                new ClaimsPrincipal(),
                new ClaimsPrincipal(),
                new OpenIdConnectMessage(),
                new RequestGrants()
            {
                Tokens = new List <string>
                {
                    TokenTypes.AccessToken,
                    TokenTypes.IdToken,
                    TokenTypes.RefreshToken
                }
            });

            var expectedTokens = new[]
            {
                TokenTypes.AccessToken,
                TokenTypes.IdToken,
                TokenTypes.RefreshToken
            };

            var claimsProvider = new GrantedTokensTokenClaimsProvider();

            context.InitializeForToken(TokenTypes.RefreshToken);

            // Act
            await claimsProvider.OnGeneratingClaims(context);

            var granted = context.CurrentClaims
                          .Where(c => c.Type.Equals(IdentityServiceClaimTypes.GrantedToken))
                          .OrderBy(c => c.Value)
                          .Select(c => c.Value)
                          .ToArray();

            // Assert
            Assert.Equal(expectedTokens, granted);
        }