def test_service_providers_in_token(self):
        # Create some enabled service providers
        enabled_sps = []
        for _ in range(2):
            sp_id = data_utils.rand_uuid_hex()
            self._create_sp(sp_id, fixtures.sp_ref(enabled=True))
            enabled_sps.append(sp_id)

        # Create some disabled service providers
        disabled_sps = []
        for _ in range(2):
            sp_id = data_utils.rand_uuid_hex()
            self._create_sp(sp_id, fixtures.sp_ref(enabled=False))
            disabled_sps.append(sp_id)

        sps_in_token_ids = [
            sp['id']
            for sp in self.sps_client.get_service_providers_in_token()
        ]

        for enabled_sp in enabled_sps:
            self.assertIn(enabled_sp, sps_in_token_ids)

        for disabled_sp in disabled_sps:
            self.assertNotIn(disabled_sp, sps_in_token_ids)
    def test_service_provider_create_with_relay_state_prefix(self):
        sp_id = data_utils.rand_uuid_hex()
        sp_ref = fixtures.sp_ref(
            enabled=True, relay_state_prefix=data_utils.rand_uuid_hex())
        sp = self._create_sp(sp_id, sp_ref)

        self._assert_service_provider_attributes(sp, sp_id, sp_ref)
    def test_service_provider_create_with_relay_state_prefix(self):
        sp_id = data_utils.rand_uuid_hex()
        sp_ref = fixtures.sp_ref(enabled=True,
                                 relay_state_prefix=data_utils.rand_uuid_hex())
        sp = self._create_sp(sp_id, sp_ref)

        self._assert_service_provider_attributes(sp, sp_id, sp_ref)
    def test_service_provider_create_with_bad_attributes(self):
        sp_id = data_utils.rand_uuid_hex()
        sp_ref = fixtures.sp_ref()

        # The auth_url must follow a URL regex
        sp_ref['auth_url'] = data_utils.rand_uuid_hex()
        self.assertRaises(lib_exc.BadRequest,
                          self.sps_client.create_service_provider, sp_id,
                          **sp_ref)

        sp_ref = fixtures.sp_ref()

        # The sp_url must follow a URL regex
        sp_ref['sp_url'] = data_utils.rand_uuid_hex()
        self.assertRaises(lib_exc.BadRequest,
                          self.sps_client.create_service_provider, sp_id,
                          **sp_ref)
    def test_service_provider_get(self):
        sp_id = data_utils.rand_uuid_hex()
        sp_create = self._create_sp(sp_id, fixtures.sp_ref())

        sp_get = self.sps_client.show_service_provider(
            sp_id)['service_provider']

        self._assert_service_provider_attributes(sp_get, sp_id, sp_create)
    def test_service_provider_get(self):
        sp_id = data_utils.rand_uuid_hex()
        sp_create = self._create_sp(sp_id, fixtures.sp_ref())

        sp_get = self.sps_client.show_service_provider(sp_id)[
            'service_provider']

        self._assert_service_provider_attributes(sp_get, sp_id, sp_create)
    def test_service_providers_in_token(self):
        # Create some enabled service providers
        enabled_sps = []
        for _ in range(2):
            sp_id = data_utils.rand_uuid_hex()
            self._create_sp(sp_id, fixtures.sp_ref(enabled=True))
            enabled_sps.append(sp_id)

        # Create some disabled service providers
        for _ in range(2):
            sp_id = data_utils.rand_uuid_hex()
            self._create_sp(sp_id, fixtures.sp_ref(enabled=False))

        sps_in_token_ids = [
            sp['id'] for sp in
            self.sps_client.get_service_providers_in_token()]

        # Should be equal to the enabled_sps list
        self.assertItemsEqual(enabled_sps, sps_in_token_ids)
    def test_service_provider_create(self):
        sp_id = data_utils.rand_uuid_hex()
        sp_ref = fixtures.sp_ref()
        sp = self._create_sp(sp_id, sp_ref)

        # The service provider is disabled by default
        sp_ref['enabled'] = False

        # The relay_state_prefix should have been set to the default value
        sp_ref['relay_state_prefix'] = DEFAULT_RELAY_STATE_PREFIX

        self._assert_service_provider_attributes(sp, sp_id, sp_ref)
    def test_service_provider_list(self):
        sp_ids = []
        for _ in range(3):
            sp_id = data_utils.rand_uuid_hex()
            self._create_sp(sp_id, fixtures.sp_ref())
            sp_ids.append(sp_id)

        sp_list = self.sps_client.list_service_providers()['service_providers']
        fetched_ids = [fetched_sp['id'] for fetched_sp in sp_list]

        for sp_id in sp_ids:
            self.assertIn(sp_id, fetched_ids)
    def test_service_provider_create_with_bad_attributes(self):
        sp_id = data_utils.rand_uuid_hex()
        sp_ref = fixtures.sp_ref()

        # The auth_url must follow a URL regex
        sp_ref['auth_url'] = data_utils.rand_uuid_hex()
        self.assertRaises(
            lib_exc.BadRequest,
            self.sps_client.create_service_provider,
            sp_id,
            **sp_ref)

        sp_ref = fixtures.sp_ref()

        # The sp_url must follow a URL regex
        sp_ref['sp_url'] = data_utils.rand_uuid_hex()
        self.assertRaises(
            lib_exc.BadRequest,
            self.sps_client.create_service_provider,
            sp_id,
            **sp_ref)
    def test_service_provider_create(self):
        sp_id = data_utils.rand_uuid_hex()
        sp_ref = fixtures.sp_ref()
        sp = self._create_sp(sp_id, sp_ref)

        # The service provider is disabled by default
        sp_ref['enabled'] = False

        # The relay_state_prefix should have been set to the default value
        sp_ref['relay_state_prefix'] = DEFAULT_RELAY_STATE_PREFIX

        self._assert_service_provider_attributes(sp, sp_id, sp_ref)
    def test_service_provider_list(self):
        sp_ids = []
        for _ in range(3):
            sp_id = data_utils.rand_uuid_hex()
            self._create_sp(sp_id, fixtures.sp_ref())
            sp_ids.append(sp_id)

        sp_list = self.sps_client.list_service_providers()['service_providers']
        fetched_ids = [fetched_sp['id'] for fetched_sp in sp_list]

        for sp_id in sp_ids:
            self.assertIn(sp_id, fetched_ids)
    def test_service_provider_update_with_bad_attributes_fails(self):
        sp_id = data_utils.rand_uuid_hex()
        self._create_sp(sp_id, fixtures.sp_ref())

        # The auth_url must follow a URL regex
        self.assertRaises(lib_exc.BadRequest,
                          self.sps_client.update_service_provider,
                          sp_id,
                          auth_url=data_utils.rand_uuid_hex())

        # The sp_url must follow a URL regex
        self.assertRaises(lib_exc.BadRequest,
                          self.sps_client.update_service_provider,
                          sp_id,
                          auth_url=data_utils.rand_uuid_hex())
    def test_service_provider_update(self):
        sp_id = data_utils.rand_uuid_hex()
        sp = self._create_sp(sp_id, fixtures.sp_ref(enabled=True))

        # The service provider should be enabled
        self.assertTrue(sp['enabled'])

        sp = self.sps_client.update_service_provider(
            sp_id, enabled=False)['service_provider']

        # The service provider should be now disabled
        self.assertFalse(sp['enabled'])

        sp_get = self.sps_client.show_service_provider(
            sp_id)['service_provider']
        self.assertFalse(sp_get['enabled'])
    def test_service_provider_update(self):
        sp_id = data_utils.rand_uuid_hex()
        sp = self._create_sp(sp_id, fixtures.sp_ref(enabled=True))

        # The service provider should be enabled
        self.assertTrue(sp['enabled'])

        sp = self.sps_client.update_service_provider(
            sp_id, enabled=False)['service_provider']

        # The service provider should be now disabled
        self.assertFalse(sp['enabled'])

        sp_get = self.sps_client.show_service_provider(sp_id)[
            'service_provider']
        self.assertFalse(sp_get['enabled'])
    def test_service_provider_update_with_bad_attributes_fails(self):
        sp_id = data_utils.rand_uuid_hex()
        self._create_sp(sp_id, fixtures.sp_ref())

        # The auth_url must follow a URL regex
        self.assertRaises(
            lib_exc.BadRequest,
            self.sps_client.update_service_provider,
            sp_id,
            auth_url=data_utils.rand_uuid_hex())

        # The sp_url must follow a URL regex
        self.assertRaises(
            lib_exc.BadRequest,
            self.sps_client.update_service_provider,
            sp_id,
            auth_url=data_utils.rand_uuid_hex())