public void SPMetadata_serialise_deserialise_Test() { ////ARRANGE string metadataXml = String.Empty; var metadataWriter = new TestMetadatWriter(el => metadataXml = el.OuterXml); var contextBuilder = new InlineMetadataContextBuilder(); var context = contextBuilder.BuildContext(); var configurationProvider = new CertificateValidationConfigurationProvider(); var certificateValidator = new CertificateValidator(configurationProvider); var ssoCryptoProvider = new CertificateManager(); var metadataSerialiser = new FederationMetadataSerialiser(certificateValidator); var sPSSOMetadataProvider = new SPSSOMetadataProvider(metadataWriter, ssoCryptoProvider, metadataSerialiser, g => context); //ACT sPSSOMetadataProvider.CreateMetadata(MetadataType.SP); var xmlReader = XmlReader.Create(new StringReader(metadataXml)); var deserialisedMetadata = metadataSerialiser.ReadMetadata(xmlReader) as EntityDescriptor; //ASSERT Assert.IsFalse(String.IsNullOrWhiteSpace(metadataXml)); Assert.AreEqual(1, deserialisedMetadata.RoleDescriptors.Count); }
public void SPMetadata_serialise_deserialise_Test() { ////ARRANGE var logger = new LogProviderMock(); string metadataXml = String.Empty; var metadataWriter = new TestMetadatWriter(el => metadataXml = el.OuterXml); var contextBuilder = new InlineMetadataContextBuilder(); var metadataRequest = new MetadataGenerateRequest(MetadataType.SP, "local"); var metadataContext = contextBuilder.BuildContext(metadataRequest); var context = new FederationPartyConfiguration(metadataRequest.FederationPartyId, "localhost"); context.MetadataContext = metadataContext; var configurationProvider = new CertificateValidationConfigurationProvider(); var certificateValidator = new CertificateValidator(configurationProvider); var ssoCryptoProvider = new CertificateManager(logger); var metadataSerialiser = new FederationMetadataSerialiser(certificateValidator, logger); var metadataDispatcher = new FederationMetadataDispatcherMock(() => new[] { metadataWriter }); var sPSSOMetadataProvider = new SPSSOMetadataProvider(metadataDispatcher, ssoCryptoProvider, metadataSerialiser, g => context, logger); //ACT sPSSOMetadataProvider.CreateMetadata(metadataRequest); var xmlReader = XmlReader.Create(new StringReader(metadataXml)); var deserialisedMetadata = metadataSerialiser.ReadMetadata(xmlReader) as EntityDescriptor; //ASSERT Assert.IsFalse(String.IsNullOrWhiteSpace(metadataXml)); Assert.AreEqual(1, deserialisedMetadata.RoleDescriptors.Count); }
public void SPMetadataGenerationTest() { ////ARRANGE var result = String.Empty; var metadataWriter = new TestMetadatWriter(el => result = el.OuterXml); //var metadataWriter = new TestMetadatWriter(el => //{ // using (var writer = XmlWriter.Create(@"D:\Dan\Software\Apira\SPMetadata\SPMetadata.xml")) // { // el.WriteTo(writer); // writer.Flush(); // } //}); var contextBuilder = new InlineMetadataContextBuilder(); var context = contextBuilder.BuildContext(); var configurationProvider = new CertificateValidationConfigurationProvider(); var certificateValidator = new CertificateValidator(configurationProvider); var ssoCryptoProvider = new CertificateManager(); var metadataSerialiser = new FederationMetadataSerialiser(certificateValidator); var sPSSOMetadataProvider = new SPSSOMetadataProvider(metadataWriter, ssoCryptoProvider, metadataSerialiser, g => context); //ACT sPSSOMetadataProvider.CreateMetadata(MetadataType.SP); //ASSERT Assert.IsFalse(String.IsNullOrWhiteSpace(result)); }
public void SerialiseMetadataTest() { //ARRANGE var logger = new LogProviderMock(); var contextBuilder = new InlineMetadataContextBuilder(); var metadataRequest = new MetadataGenerateRequest(MetadataType.SP, "local"); var context = contextBuilder.BuildContext(metadataRequest); var configurationProvider = new CertificateValidationConfigurationProvider(); var certificateValidator = new CertificateValidator(configurationProvider, logger); var metadata = context.EntityDesriptorConfiguration; var spDescriptorConfigurtion = context.EntityDesriptorConfiguration.RoleDescriptors.First() as SPSSODescriptorConfiguration; var descriptorBuilder = new ServiceProviderSingleSignOnDescriptorBuilder(); var descriptor = descriptorBuilder.BuildDescriptor(spDescriptorConfigurtion); var entityDescriptor = new EntityDescriptor(new EntityId("EntityIdTest")); entityDescriptor.RoleDescriptors.Add(descriptor); var metadataSerialiser = new FederationMetadataSerialiser(certificateValidator, logger); //ACT var sb = new StringBuilder(); using (var xmlWriter = XmlWriter.Create(sb)) { metadataSerialiser.Serialise(xmlWriter, entityDescriptor); } var xmlResult = sb.ToString(); //ASSERT Assert.IsFalse(String.IsNullOrWhiteSpace(xmlResult)); }
public async Task SPMetadataGenerationTest() { ////ARRANGE var result = String.Empty; var metadataWriter = new TestMetadatWriter(el => result = el.OuterXml); var logger = new LogProviderMock(); var contextBuilder = new InlineMetadataContextBuilder(); var metadataRequest = new MetadataGenerateRequest(MetadataType.SP, "local"); var metadataContext = contextBuilder.BuildContext(metadataRequest); var context = new FederationPartyConfiguration(metadataRequest.FederationPartyId, "localhost"); context.MetadataContext = metadataContext; var configurationProvider = new CertificateValidationConfigurationProvider(); var certificateValidator = new CertificateValidator(configurationProvider, logger); var ssoCryptoProvider = new CertificateManager(logger); var metadataSerialiser = new FederationMetadataSerialiser(certificateValidator, logger); var metadataDispatcher = new FederationMetadataDispatcherMock(() => new[] { metadataWriter }); var sPSSOMetadataProvider = new SPSSOMetadataProvider(metadataDispatcher, ssoCryptoProvider, metadataSerialiser, g => context, logger); //ACT await sPSSOMetadataProvider.CreateMetadata(metadataRequest); //ASSERT Assert.IsFalse(String.IsNullOrWhiteSpace(result)); }
public void SPMetadataGeneration_create_file() { ////ARRANGE var result = false; var path = @"D:\Dan\Software\Apira\SPMetadata\SPMetadataTest.xml"; var metadataWriter = new TestMetadatWriter(el => { if (File.Exists(path)) { File.Delete(path); } using (var writer = XmlWriter.Create(path)) { el.WriteTo(writer); writer.Flush(); } result = true; }); var logger = new LogProviderMock(); var contextBuilder = new InlineMetadataContextBuilder(); var metadataRequest = new MetadataGenerateRequest(MetadataType.SP, "local"); var metadatContext = contextBuilder.BuildContext(metadataRequest); var context = new FederationPartyConfiguration(metadataRequest.FederationPartyId, "localhost"); var configurationProvider = new CertificateValidationConfigurationProvider(); var certificateValidator = new CertificateValidator(configurationProvider); var ssoCryptoProvider = new CertificateManager(logger); var metadataSerialiser = new FederationMetadataSerialiser(certificateValidator, logger); var metadataDispatcher = new FederationMetadataDispatcherMock(() => new[] { metadataWriter }); var sPSSOMetadataProvider = new SPSSOMetadataProvider(metadataDispatcher, ssoCryptoProvider, metadataSerialiser, g => context, logger); //ACT sPSSOMetadataProvider.CreateMetadata(metadataRequest); //ASSERT Assert.IsTrue(result); }
public void SPMetadataGeneration_create_file() { ////ARRANGE var result = false; var path = @"D:\Dan\Software\Apira\SPMetadata\SPMetadataTest.xml"; var metadataWriter = new TestMetadatWriter(el => { if (File.Exists(path)) { File.Delete(path); } using (var writer = XmlWriter.Create(path)) { el.WriteTo(writer); writer.Flush(); } result = true; }); var contextBuilder = new InlineMetadataContextBuilder(); var context = contextBuilder.BuildContext(); var configurationProvider = new CertificateValidationConfigurationProvider(); var certificateValidator = new CertificateValidator(configurationProvider); var ssoCryptoProvider = new CertificateManager(); var metadataSerialiser = new FederationMetadataSerialiser(certificateValidator); var sPSSOMetadataProvider = new SPSSOMetadataProvider(metadataWriter, ssoCryptoProvider, metadataSerialiser, g => context); //ACT sPSSOMetadataProvider.CreateMetadata(MetadataType.SP); //ASSERT Assert.IsTrue(result); }
public void SPMetadataGenerationTest() { ////ARRANGE var result = String.Empty; var metadataWriter = new TestMetadatWriter(el => result = el.OuterXml); //var metadataWriter = new TestMetadatWriter(el => //{ // using (var writer = XmlWriter.Create(@"D:\Dan\Software\Apira\SPMetadata\SPMetadata.xml")) // { // el.WriteTo(writer); // writer.Flush(); // } //}); var logger = new LogProviderMock(); var contextBuilder = new InlineMetadataContextBuilder(); var metadataRequest = new MetadataGenerateRequest(MetadataType.SP, "local"); var metadataContext = contextBuilder.BuildContext(metadataRequest); var context = new FederationPartyConfiguration(metadataRequest.FederationPartyId, "localhost"); context.MetadataContext = metadataContext; var configurationProvider = new CertificateValidationConfigurationProvider(); var certificateValidator = new CertificateValidator(configurationProvider); var ssoCryptoProvider = new CertificateManager(logger); var metadataSerialiser = new FederationMetadataSerialiser(certificateValidator, logger); var metadataDispatcher = new FederationMetadataDispatcherMock(() => new[] { metadataWriter }); var sPSSOMetadataProvider = new SPSSOMetadataProvider(metadataDispatcher, ssoCryptoProvider, metadataSerialiser, g => context, logger); //ACT sPSSOMetadataProvider.CreateMetadata(metadataRequest); //ASSERT Assert.IsFalse(String.IsNullOrWhiteSpace(result)); }
public async Task IdPMetadata_serialise_deserialise_Test() { ////ARRANGE var logger = new LogProviderMock(); string metadataXml = String.Empty; var metadataWriter = new TestMetadatWriter(el => metadataXml = el.OuterXml); CertificateValidationRulesFactory.InstanceCreator = ValidationRuleInstanceCreatorMock.CreateInstance; var contextBuilder = new InlineMetadataContextBuilder(); var metadataRequest = new MetadataGenerateRequest(MetadataType.Idp, "local"); var metadataContext = contextBuilder.BuildContext(metadataRequest); var context = new FederationPartyConfiguration(metadataRequest.FederationPartyId, "localhost"); context.MetadataContext = metadataContext; var configurationProvider = new CertificateValidationConfigurationProvider(); var certificateValidator = new CertificateValidator(configurationProvider, logger); var ssoCryptoProvider = new CertificateManager(logger); var metadataSerialiser = new FederationMetadataSerialiser(certificateValidator, logger); var metadataDispatcher = new FederationMetadataDispatcherMock(() => new[] { metadataWriter }); var idPSSOMetadataProvider = new IdpSSOMetadataProvider(metadataDispatcher, ssoCryptoProvider, metadataSerialiser, g => context, logger); //ACT await idPSSOMetadataProvider.CreateMetadata(metadataRequest); var xmlReader = XmlReader.Create(new StringReader(metadataXml)); var deserialisedMetadata = metadataSerialiser.Deserialise(xmlReader) as EntityDescriptor; //ASSERT Assert.IsFalse(String.IsNullOrWhiteSpace(metadataXml)); Assert.AreEqual(1, deserialisedMetadata.RoleDescriptors.Count); Assert.IsInstanceOf <IdentityProviderSingleSignOnDescriptor>(deserialisedMetadata.RoleDescriptors.Single()); }
public void ServiceProviderSingleSignOnDescriptorBuilderTest_inline_contex_provider() { //ARRANGE var contextBuilder = new InlineMetadataContextBuilder(); var context = contextBuilder.BuildContext(); var spDescriptorConfigurtion = context.EntityDesriptorConfiguration.RoleDescriptors.First() as SPSSODescriptorConfiguration; var descriptorBuilder = new ServiceProviderSingleSignOnDescriptorBuilder(); //ACT var descriptor = descriptorBuilder.BuildDescriptor(spDescriptorConfigurtion); var organisation = descriptor.Organization; var protocolsSupported = descriptor.ProtocolsSupported; var assertionServices = descriptor.AssertionConsumerServices; var keys = descriptor.Keys; //ASSERT //assert sp descriptor attributes Assert.AreEqual(spDescriptorConfigurtion.WantAssertionsSigned, descriptor.WantAssertionsSigned); Assert.AreEqual(spDescriptorConfigurtion.AuthenticationRequestsSigned, descriptor.AuthenticationRequestsSigned); Assert.AreEqual(spDescriptorConfigurtion.AssertionConsumerServices.Count, descriptor.AssertionConsumerServices.Count); foreach (var s in spDescriptorConfigurtion.AssertionConsumerServices) { var descriptorService = assertionServices[s.Index]; Assert.AreEqual(s.Index, descriptorService.Index); Assert.AreEqual(s.Location, descriptorService.Location); Assert.AreEqual(s.Binding, descriptorService.Binding); Assert.AreEqual(s.IsDefault, descriptorService.IsDefault); } //assert sso descriptor attributes Assert.AreEqual(spDescriptorConfigurtion.ArtifactResolutionServices.Count, descriptor.ArtifactResolutionServices.Count); foreach (var s in spDescriptorConfigurtion.ArtifactResolutionServices) { var descriptorService = descriptor.ArtifactResolutionServices[s.Index]; Assert.AreEqual(s.Index, descriptorService.Index); Assert.AreEqual(s.Location, descriptorService.Location); Assert.AreEqual(s.Binding, descriptorService.Binding); } Assert.True(Enumerable.SequenceEqual(descriptor.NameIdentifierFormats, spDescriptorConfigurtion.NameIdentifierFormats)); Assert.AreEqual(spDescriptorConfigurtion.SingleLogoutServices.Count, descriptor.SingleLogoutServices.Count); foreach (var s in spDescriptorConfigurtion.SingleLogoutServices) { var descriptorService = descriptor.SingleLogoutServices.Single(x => x.Location == s.Location); Assert.AreEqual(s.ResponseLocation, descriptorService.ResponseLocation); Assert.AreEqual(s.Binding, descriptorService.Binding); } //assert role descriptor attributes Assert.AreEqual(spDescriptorConfigurtion.ErrorUrl, descriptor.ErrorUrl); Assert.AreEqual(spDescriptorConfigurtion.ValidUntil.DateTime, descriptor.ValidUntil); Assert.True(Enumerable.SequenceEqual(descriptor.ProtocolsSupported, spDescriptorConfigurtion.ProtocolSupported)); Assert.AreEqual(spDescriptorConfigurtion.KeyDescriptors.Count, descriptor.Keys.Count); for (var i = 0; i < spDescriptorConfigurtion.KeyDescriptors.Count; i++) { var descriptorKey = descriptor.Keys.ElementAt(i); var configKey = spDescriptorConfigurtion.KeyDescriptors.ElementAt(i); Assert.AreEqual(configKey.Use.ToString(), descriptorKey.Use.ToString()); } //organisation Assert.AreEqual(spDescriptorConfigurtion.Organisation.Names.Count, organisation.Names.Count); foreach (var n in spDescriptorConfigurtion.Organisation.Names) { var targetName = organisation.Names[n.Language]; Assert.AreEqual(n.Name, targetName.Name); } Assert.AreEqual(spDescriptorConfigurtion.Organisation.Names.Count, organisation.DisplayNames.Count); foreach (var n in spDescriptorConfigurtion.Organisation.Names) { var targetName = organisation.DisplayNames[n.Language]; Assert.AreEqual(n.DisplayName, targetName.Name); } Assert.AreEqual(spDescriptorConfigurtion.Organisation.Urls.Count, organisation.Urls.Count); foreach (var n in spDescriptorConfigurtion.Organisation.Urls) { var targetName = organisation.Urls[n.Language]; Assert.AreEqual(n.Url, targetName.Uri); } //contacts var configContacts = spDescriptorConfigurtion.Organisation.OrganisationContacts; Assert.AreEqual(configContacts.PersonContact.Count, descriptor.Contacts.Count); for (var i = 0; i < configContacts.PersonContact.Count; i++) { var source = configContacts.PersonContact.ElementAt(i); var targer = descriptor.Contacts.ElementAt(i); Assert.AreEqual(source.ContactType.ToString(), targer.Type.ToString()); Assert.AreEqual(source.ForeName, targer.GivenName); Assert.AreEqual(source.SurName, targer.Surname); Assert.IsTrue(Enumerable.SequenceEqual(source.Emails, targer.EmailAddresses)); Assert.IsTrue(Enumerable.SequenceEqual(source.PhoneNumbers, targer.TelephoneNumbers)); } }