Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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),
            ])