def test_get_service_provider_returns_correct_value(self): # Arrange service_provider_metadata = fixtures.CORRECT_XML_WITH_ONE_SP metadata_parser = SAMLMetadataParser() metadata_parser.parse = MagicMock(side_effect=metadata_parser.parse) configuration_storage = ConfigurationStorage( self._saml_integration_association) configuration_storage.load = MagicMock( side_effect=configuration_storage.load) saml_configuration_factory = SAMLConfigurationFactory(metadata_parser) with saml_configuration_factory.create( configuration_storage, self._db, SAMLConfiguration) as configuration: configuration.service_provider_xml_metadata = service_provider_metadata # Act service_provider = configuration.get_service_provider(self._db) # Assert assert True == isinstance(service_provider, SAMLServiceProviderMetadata) assert fixtures.SP_ENTITY_ID == service_provider.entity_id configuration_storage.load.assert_has_calls([ call(self._db, SAMLConfiguration.service_provider_xml_metadata.key), call(self._db, SAMLConfiguration.service_provider_private_key.key), ]) metadata_parser.parse.assert_called_once_with( service_provider_metadata)
def test_get_identity_providers_returns_non_federated_idps(self): # Arrange identity_providers_metadata = fixtures.CORRECT_XML_WITH_MULTIPLE_IDPS metadata_parser = SAMLMetadataParser() metadata_parser.parse = MagicMock(side_effect=metadata_parser.parse) configuration_storage = ConfigurationStorage( self._saml_integration_association) configuration_storage.load = MagicMock( side_effect=configuration_storage.load) saml_configuration_factory = SAMLConfigurationFactory(metadata_parser) with saml_configuration_factory.create( configuration_storage, self._db, SAMLConfiguration) as configuration: configuration.non_federated_identity_provider_xml_metadata = ( identity_providers_metadata) # Act identity_providers = configuration.get_identity_providers(self._db) # Assert assert 2 == len(identity_providers) assert True == isinstance(identity_providers[0], SAMLIdentityProviderMetadata) assert fixtures.IDP_1_ENTITY_ID == identity_providers[0].entity_id assert True == isinstance(identity_providers[1], SAMLIdentityProviderMetadata) assert fixtures.IDP_2_ENTITY_ID == identity_providers[1].entity_id configuration_storage.load.assert_has_calls([ call( self._db, SAMLConfiguration. non_federated_identity_provider_xml_metadata.key, ), call( self._db, SAMLConfiguration.federated_identity_provider_entity_ids. key, ), ]) metadata_parser.parse.assert_called_once_with( identity_providers_metadata)
def test_get_identity_providers_returns_both_non_federated_and_federated_idps( self): # Arrange non_federated_identity_providers_metadata = ( fixtures.CORRECT_XML_WITH_MULTIPLE_IDPS) federated_identity_provider_entity_ids = json.dumps( [fixtures.IDP_1_ENTITY_ID, fixtures.IDP_2_ENTITY_ID]) metadata_parser = SAMLMetadataParser() metadata_parser.parse = MagicMock(side_effect=metadata_parser.parse) configuration_storage = ConfigurationStorage( self._saml_integration_association) configuration_storage.load = MagicMock( side_effect=configuration_storage.load) saml_configuration_factory = SAMLConfigurationFactory(metadata_parser) federation = SAMLFederation("Test federation", "http://localhost") federated_idp_1 = SAMLFederatedIdentityProvider( federation, fixtures.IDP_1_ENTITY_ID, fixtures.IDP_1_UI_INFO_EN_DISPLAY_NAME, fixtures.CORRECT_XML_WITH_IDP_1, ) federated_idp_2 = SAMLFederatedIdentityProvider( federation, fixtures.IDP_2_ENTITY_ID, fixtures.IDP_2_UI_INFO_EN_DISPLAY_NAME, fixtures.CORRECT_XML_WITH_IDP_2, ) self._db.add_all([federation, federated_idp_1, federated_idp_2]) with saml_configuration_factory.create( configuration_storage, self._db, SAMLConfiguration) as configuration: configuration.non_federated_identity_provider_xml_metadata = ( non_federated_identity_providers_metadata) configuration.federated_identity_provider_entity_ids = ( federated_identity_provider_entity_ids) # Act identity_providers = configuration.get_identity_providers(self._db) # Assert assert 4 == len(identity_providers) assert True == isinstance(identity_providers[0], SAMLIdentityProviderMetadata) assert fixtures.IDP_1_ENTITY_ID == identity_providers[0].entity_id assert True == isinstance(identity_providers[1], SAMLIdentityProviderMetadata) assert fixtures.IDP_2_ENTITY_ID == identity_providers[1].entity_id assert True == isinstance(identity_providers[2], SAMLIdentityProviderMetadata) assert fixtures.IDP_1_ENTITY_ID == identity_providers[2].entity_id assert True == isinstance(identity_providers[3], SAMLIdentityProviderMetadata) assert fixtures.IDP_2_ENTITY_ID == identity_providers[3].entity_id configuration_storage.load.assert_has_calls([ call( self._db, SAMLConfiguration. non_federated_identity_provider_xml_metadata.key, ), call( self._db, SAMLConfiguration.federated_identity_provider_entity_ids. key, ), ]) metadata_parser.parse.assert_has_calls([ call(non_federated_identity_providers_metadata), call(federated_idp_1.xml_metadata), call(federated_idp_2.xml_metadata), ])