public void DecorateAsync_ShouldIncludeAllPrincipalClaimsByDefault()
        {
            var claims = new ClaimBuilderCollection
            {
                { "A-type", "A-value" },
                { "B-type", "B-value" },
                { "C-type", "C-value" }
            };
            var authenticateResult    = this.CreateAuthenticateResult(new ClaimsPrincipal(new ClaimsIdentity(claims.Build())));
            var excludeClaimDecorator = this.CreateExcludeClaimDecorator();

            excludeClaimDecorator.IncludeAuthenticationSchemeAsIdentityProviderClaim = false;

            claims.Clear();

            Assert.AreEqual(0, claims.Count);

            excludeClaimDecorator.DecorateAsync(authenticateResult, "Test", claims, null).Wait();

            Assert.AreEqual(3, claims.Count);
        }
        public void DecorateAsync_ShouldExcludeClaimsProperly()
        {
            var claims = new ClaimBuilderCollection
            {
                { "A-type", "A-value" },
                { "B-type", "B-value" },
                { "C-type", "C-value" },
                { "D-type", "D-value" },
                { "E-type", "E-value" }
            };
            var authenticateResult    = this.CreateAuthenticateResult(new ClaimsPrincipal(new ClaimsIdentity(claims.Build())));
            var excludeClaimDecorator = this.CreateExcludeClaimDecorator();

            excludeClaimDecorator.IncludeAuthenticationSchemeAsIdentityProviderClaim = false;
            excludeClaimDecorator.ClaimTypeExclusions.Add("A-type");
            excludeClaimDecorator.ClaimTypeExclusions.Add("C-type");
            excludeClaimDecorator.ClaimTypeExclusions.Add("E-type");

            claims.Clear();

            Assert.AreEqual(0, claims.Count);

            excludeClaimDecorator.DecorateAsync(authenticateResult, "Test", claims, null).Wait();

            Assert.AreEqual(2, claims.Count);
            Assert.IsNotNull(claims.FirstOrDefault(claim => claim.Type == "B-type"));
            Assert.IsNotNull(claims.FirstOrDefault(claim => claim.Type == "D-type"));
        }