public void GetRules_default_ones_and_injected()
        {
            //ARRANGE
            CertificateValidationRulesFactory.InstanceCreator = ValidationRuleInstanceCreatorMock.CreateInstance;
            var configuration = new CertificateValidationConfiguration
            {
                X509CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.Custom
            };
            var rule1           = typeof(CertificateValidationRuleMock1).AssemblyQualifiedName;
            var rule2           = typeof(CertificateValidationRuleMock).AssemblyQualifiedName;
            var rule3           = typeof(CertificateValidationRuleFailedMock).AssemblyQualifiedName;
            var ruleDescriptor  = new ValidationRuleDescriptor(rule1);
            var ruleDescriptor2 = new ValidationRuleDescriptor(rule2);
            var ruleDescriptor3 = new ValidationRuleDescriptor(rule3);

            configuration.ValidationRules.Add(ruleDescriptor);
            configuration.ValidationRules.Add(ruleDescriptor2);
            configuration.ValidationRules.Add(ruleDescriptor3);
            //ACT
            var rules = CertificateValidationRulesFactory.GetRules(configuration)
                        .ToList();

            //ASSERT
            Assert.AreEqual(5, rules.Count);
            Assert.IsTrue(rules.Any(x => x.GetType() == typeof(EffectiveDateRule)));
            Assert.IsTrue(rules.Any(x => x.GetType() == typeof(ExpirationDateRule)));
            Assert.IsTrue(rules.Any(x => x.GetType() == typeof(CertificateValidationRuleMock1)));
            Assert.IsTrue(rules.Any(x => x.GetType() == typeof(CertificateValidationRuleMock)));
            Assert.IsTrue(rules.Any(x => x.GetType() == typeof(CertificateValidationRuleFailedMock)));
        }
Esempio n. 2
0
        public void MetadataSerialisationCertificateTest_failed()
        {
            //ARRANGE
            var store = new X509Store("TestCertStore");

            try
            {
                store.Open(OpenFlags.ReadOnly);
                var certificate   = store.Certificates.Find(X509FindType.FindBySubjectName, "ApiraTestCertificate", false)[0];
                var configuration = new CertificateValidationConfiguration
                {
                    UsePinningValidation          = false,
                    X509CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.Custom
                };

                var rule1           = typeof(CertificateValidationRuleMock1).AssemblyQualifiedName;
                var rule2           = typeof(CertificateValidationRuleFailedMock).AssemblyQualifiedName;
                var ruleDescriptor  = new ValidationRuleDescriptor(rule1);
                var ruleDescriptor2 = new ValidationRuleDescriptor(rule2);
                configuration.ValidationRules.Add(ruleDescriptor);
                configuration.ValidationRules.Add(ruleDescriptor2);

                configuration.ValidationRules.Add(new ValidationRuleDescriptor(rule1));
                var configurationProvider = new CertificateValidationConfigurationProvider(() => configuration);

                var validator = new CertificateValidator(configurationProvider);
                //ACT

                //ASSERT
                Assert.Throws <InvalidOperationException>(() => validator.Validate(certificate));
            }
            finally
            {
                store.Close();
                store.Dispose();
            }
        }
        public void MetadataSerialisationCertificateTest_success()
        {
            //ARRANGE
            var logger = new LogProviderMock();
            var store  = new X509Store("TestCertStore");

            try
            {
                store.Open(OpenFlags.ReadOnly);
                var certificate   = store.Certificates.Find(X509FindType.FindBySubjectName, "www.eca-international.com", false)[0];
                var configuration = new CertificateValidationConfiguration
                {
                    X509CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.Custom
                };

                var rule1           = typeof(CertificateValidationRuleMock1).AssemblyQualifiedName;
                var rule2           = typeof(CertificateValidationRuleMock).AssemblyQualifiedName;
                var ruleDescriptor  = new ValidationRuleDescriptor(rule1);
                var ruleDescriptor2 = new ValidationRuleDescriptor(rule2);
                configuration.ValidationRules.Add(ruleDescriptor);
                configuration.ValidationRules.Add(ruleDescriptor2);

                configuration.ValidationRules.Add(new ValidationRuleDescriptor(rule1));
                var configurationProvider = new CertificateValidationConfigurationProvider(() => configuration);

                var validator = new CertificateValidator(configurationProvider, logger);
                //ACT
                validator.Validate(certificate);
                //ASSERT
            }
            finally
            {
                store.Close();
                store.Dispose();
            }
        }