public void TestThatEvaluateSetsPrincipalWithClaimIdentityWithTrustedClaimSetsInPropertiesOnEvaluationContextWhenClaimSetsInEvaluationContextIsNotNull(string certificateSubjectName)
        {
            var certificateClaimSet = new X509CertificateClaimSet(TestHelper.GetCertificate(certificateSubjectName));

            var authorizationHandlerMock = MockRepository.GenerateMock <IAuthorizationHandler>();

            authorizationHandlerMock.Stub(m => m.GetTrustedClaimSets(Arg <IEnumerable <ClaimSet> > .Is.NotNull))
            .Return(new List <ClaimSet> {
                certificateClaimSet
            })
            .Repeat.Any();

            var claimsPrincipalBuilderAuthorizationPolicy = new ClaimsPrincipalBuilderAuthorizationPolicy(authorizationHandlerMock);

            Assert.That(claimsPrincipalBuilderAuthorizationPolicy, Is.Not.Null);

            var properties            = new Dictionary <string, object>(0);
            var evaluationContextStub = MockRepository.GenerateStub <EvaluationContext>();

            evaluationContextStub.Stub(m => m.Properties)
            .Return(properties)
            .Repeat.Any();
            evaluationContextStub.Stub(m => m.ClaimSets)
            .Return(new ReadOnlyCollection <ClaimSet>(new List <ClaimSet> {
                MockRepository.GenerateStub <ClaimSet>()
            }))
            .Repeat.Any();
            var state = CreateLegalState();

            claimsPrincipalBuilderAuthorizationPolicy.Evaluate(evaluationContextStub, ref state);

            var claimPrincipal = (ClaimsPrincipal)properties["Principal"];

            Assert.That(claimPrincipal, Is.Not.Null);
            Assert.That(claimPrincipal.Identity, Is.Not.Null);
            Assert.That(claimPrincipal.Identity, Is.TypeOf <ClaimsIdentity>());
            Assert.That(claimPrincipal.Identities, Is.Not.Null);
            Assert.That(claimPrincipal.Identities, Is.Not.Empty);
            Assert.That(claimPrincipal.Identities.Count, Is.EqualTo(1));
            Assert.That(claimPrincipal.Identities.ElementAt(0), Is.Not.Null);
            Assert.That(claimPrincipal.Identities.ElementAt(0).Claims, Is.Not.Null);
            Assert.That(claimPrincipal.Identities.ElementAt(0).Claims, Is.Not.Empty);
            Assert.That(claimPrincipal.Identities.ElementAt(0).Claims.Count, Is.EqualTo(certificateClaimSet.Count(claim => string.Compare(claim.Right, Rights.PossessProperty, StringComparison.Ordinal) == 0)));
        }