Beispiel #1
0
    def setUp(self):
        # Start container
        self._start_container()
        self.container.start_rel_from_url('res/deploy/basic.yml')

        self.resource_registry = ResourceRegistryServiceClient()
        self.identity_management_service = IdentityManagementServiceClient()
        self.org_client = OrgManagementServiceClient()
Beispiel #2
0
    def setUp(self):
        self._start_container()
        self.container.start_rel_from_url('res/deploy/basic.yml')

        self.resource_registry = ResourceRegistryServiceClient()
        self.org_client = OrgManagementServiceClient()
        self.idm_client = IdentityManagementServiceClient()

        self.ui_server_proc = self.container.proc_manager.procs_by_name[
            "ui_server"]
        self.ui_base_url = self.ui_server_proc.base_url
        self.sg_base_url = self.ui_server_proc.gateway_base_url
class TestOrgManagementServiceInt(IonIntegrationTestCase):
    def setUp(self):
        self._start_container()
        self.container.start_rel_from_url('res/deploy/basic.yml')

        self.resource_registry = ResourceRegistryServiceClient()
        self.org_management_service = OrgManagementServiceClient()

    def test_org_management(self):
        # CRUD
        with self.assertRaises(BadRequest) as br:
            self.org_management_service.create_org(
                Org(name="Test Facility", org_governance_name="Test Facility"))
        self.assertTrue("contains invalid characters" in br.exception.message)

        with self.assertRaises(BadRequest):
            self.org_management_service.create_org()

        org_obj = Org(name="Test Facility")
        org_id = self.org_management_service.create_org(org_obj)
        self.assertNotEqual(org_id, None)

        org = self.org_management_service.read_org(org_id)
        self.assertNotEqual(org, None)
        self.assertEqual(org.org_governance_name, 'Test_Facility')

        # Check that the roles got associated to them
        role_list = self.org_management_service.list_org_roles(org_id)
        self.assertEqual(len(role_list), 3)

        with self.assertRaises(BadRequest):
            self.org_management_service.update_org()
        org.name = 'Updated Test Facility'
        self.org_management_service.update_org(org)

        org = None
        org = self.org_management_service.read_org(org_id)
        self.assertNotEqual(org, None)
        self.assertEqual(org.name, 'Updated Test Facility')
        self.assertEqual(org.org_governance_name, 'Test_Facility')

        user_role = self.org_management_service.find_org_role_by_name(
            org_id, MODERATOR_ROLE)
        self.assertNotEqual(user_role, None)

        self.org_management_service.remove_org_role(org_id, MODERATOR_ROLE)
        with self.assertRaises(NotFound) as cm:
            user_role = self.org_management_service.find_org_role_by_name(
                org_id, MODERATOR_ROLE)
        self.assertIn("Role MODERATOR not found in Org", cm.exception.message)

        self._do_test_membership(org_id)

        self._do_test_share_and_commitments(org_id)

        self._do_test_containers()

        self._do_test_affiliation(org_id)

        # Org deletion
        with self.assertRaises(BadRequest):
            self.org_management_service.delete_org()
        self.org_management_service.delete_org(org_id)

        with self.assertRaises(NotFound) as cm:
            self.org_management_service.read_org(org_id)
        self.assertIn("does not exist", cm.exception.message)

        with self.assertRaises(NotFound) as cm:
            self.org_management_service.delete_org(org_id)
        self.assertIn("does not exist", cm.exception.message)

    def _do_test_membership(self, org_id):
        root_org = self.org_management_service.find_org()
        self.assertNotEqual(root_org, None)

        actor_obj = ActorIdentity(name="Test user")
        actor_id, _ = self.resource_registry.create(actor_obj)

        self.assertTrue(self.org_management_service.is_registered(actor_id))
        self.assertFalse(
            self.org_management_service.is_enrolled(org_id, actor_id))

        self.assertFalse(self.org_management_service.is_registered(org_id))
        self.assertFalse(self.org_management_service.is_registered("FOOBAR"))
        self.assertTrue(
            self.org_management_service.is_enrolled(root_org._id, actor_id))
        actor_objs = self.org_management_service.list_enrolled_actors(org_id)
        self.assertEquals(0, len(actor_objs))
        org_objs = self.org_management_service.list_orgs_for_actor(actor_id)
        self.assertEquals(1, len(org_objs))

        role_objs = self.org_management_service.list_actor_roles(
            actor_id, org_id)
        self.assertEquals(0, len(role_objs))
        self.assertFalse(
            self.org_management_service.has_role(org_id, actor_id,
                                                 MEMBER_ROLE))

        self.org_management_service.enroll_member(org_id, actor_id)
        res_ids, _ = self.resource_registry.find_objects(org_id,
                                                         PRED.hasMember,
                                                         RT.ActorIdentity,
                                                         id_only=True)
        self.assertEquals(1, len(res_ids))

        self.assertTrue(
            self.org_management_service.is_enrolled(org_id, actor_id))
        self.assertTrue(
            self.org_management_service.has_role(org_id, actor_id,
                                                 MEMBER_ROLE))
        self.assertFalse(
            self.org_management_service.has_role(org_id, actor_id,
                                                 OPERATOR_ROLE))

        actor_objs = self.org_management_service.list_enrolled_actors(org_id)
        self.assertEquals(1, len(actor_objs))
        org_objs = self.org_management_service.list_orgs_for_actor(actor_id)
        self.assertEquals(2, len(org_objs))

        role_objs = self.org_management_service.list_actor_roles(
            actor_id, org_id)
        self.assertEquals(1, len(role_objs))

        self.org_management_service.grant_role(org_id, actor_id, OPERATOR_ROLE)

        role_objs = self.org_management_service.list_actor_roles(
            actor_id, org_id)
        self.assertEquals(2, len(role_objs))
        self.assertTrue(
            self.org_management_service.has_role(org_id, actor_id,
                                                 OPERATOR_ROLE))

        self.org_management_service.revoke_role(org_id, actor_id,
                                                OPERATOR_ROLE)
        role_objs = self.org_management_service.list_actor_roles(
            actor_id, org_id)
        self.assertEquals(1, len(role_objs))

        self.org_management_service.cancel_member_enrollment(org_id, actor_id)
        res_ids, _ = self.resource_registry.find_objects(org_id,
                                                         PRED.hasMember,
                                                         RT.ActorIdentity,
                                                         id_only=True)
        self.assertEquals(0, len(res_ids))

        self.assertFalse(
            self.org_management_service.is_enrolled(org_id, actor_id))

        self.resource_registry.delete(actor_id)

    def _do_test_share_and_commitments(self, org_id):
        root_org = self.org_management_service.find_org()
        self.assertNotEqual(root_org, None)

        actor_obj = ActorIdentity(name="Test user")
        actor_id, _ = self.resource_registry.create(actor_obj)

        self.org_management_service.enroll_member(org_id, actor_id)

        inst_obj = TestInstrument(name="Test instrument")
        inst_id, _ = self.resource_registry.create(inst_obj)

        self.assertFalse(
            self.org_management_service.is_resource_acquired(
                resource_id=inst_id))

        self.org_management_service.share_resource(org_id, inst_id)
        res_ids, _ = self.resource_registry.find_objects(org_id,
                                                         PRED.hasResource,
                                                         id_only=True)
        self.assertEquals(1, len(res_ids))

        cmt_id = self.org_management_service.create_resource_commitment(
            org_id, actor_id, inst_id)

        self.assertTrue(
            self.org_management_service.is_resource_acquired(
                resource_id=inst_id))
        self.assertFalse(
            self.org_management_service.is_resource_acquired_exclusively(
                resource_id=inst_id))

        cmt_objs = self.org_management_service.find_commitments(org_id=org_id)
        self.assertEquals(1, len(cmt_objs))
        cmt_objs = self.org_management_service.find_commitments(
            resource_id=inst_id)
        self.assertEquals(1, len(cmt_objs))
        cmt_objs = self.org_management_service.find_commitments(
            actor_id=actor_id)
        self.assertEquals(1, len(cmt_objs))

        res_objs = self.org_management_service.find_acquired_resources(
            org_id=org_id)
        self.assertEquals(1, len(res_objs))
        res_objs = self.org_management_service.find_acquired_resources(
            actor_id=actor_id)
        self.assertEquals(1, len(res_objs))

        cmt_id = self.org_management_service.create_resource_commitment(
            org_id,
            actor_id,
            inst_id,
            exclusive=True,
            expiration=get_ion_ts_millis() + 1000)

        self.assertTrue(
            self.org_management_service.is_resource_acquired(
                resource_id=inst_id))
        self.assertTrue(
            self.org_management_service.is_resource_acquired_exclusively(
                resource_id=inst_id))

        cmt_objs = self.org_management_service.find_commitments(org_id=org_id,
                                                                exclusive=True)
        self.assertEquals(1, len(cmt_objs))
        cmt_objs = self.org_management_service.find_commitments(
            resource_id=inst_id, exclusive=True)
        self.assertEquals(1, len(cmt_objs))
        cmt_objs = self.org_management_service.find_commitments(
            actor_id=actor_id, exclusive=True)
        self.assertEquals(1, len(cmt_objs))

        self.org_management_service.unshare_resource(org_id, inst_id)
        res_ids, _ = self.resource_registry.find_objects(org_id,
                                                         PRED.hasResource,
                                                         id_only=True)
        self.assertEquals(0, len(res_ids))

        self.resource_registry.delete(inst_id)
        self.resource_registry.delete(actor_id)

    def _do_test_containers(self):
        # Org containers
        root_org = self.org_management_service.find_org()
        self.assertNotEqual(root_org, None)

        containers = self.org_management_service.find_org_containers(
            root_org._id)

        all_containers, _ = self.resource_registry.find_resources(
            restype=RT.CapabilityContainer, id_only=True)

        self.assertEqual(len(containers), len(all_containers))

    def _do_test_affiliation(self, org_id):
        # Org affiliation
        root_org = self.org_management_service.find_org()
        self.assertNotEqual(root_org, None)

        self.org_management_service.affiliate_org(root_org._id, org_id)

        self.org_management_service.unaffiliate_org(root_org._id, org_id)
    def setUp(self):
        self._start_container()
        self.container.start_rel_from_url('res/deploy/basic.yml')

        self.resource_registry = ResourceRegistryServiceClient()
        self.org_management_service = OrgManagementServiceClient()
class TestOrgManagementServiceInt(IonIntegrationTestCase):

    def setUp(self):
        self._start_container()
        self.container.start_rel_from_url('res/deploy/basic.yml')

        self.resource_registry = ResourceRegistryServiceClient()
        self.org_management_service = OrgManagementServiceClient()

    def test_org_management(self):
        # CRUD
        with self.assertRaises(BadRequest) as br:
            self.org_management_service.create_org(Org(name="Test Facility", org_governance_name="Test Facility"))
        self.assertTrue("contains invalid characters" in br.exception.message)

        with self.assertRaises(BadRequest):
            self.org_management_service.create_org()

        org_obj = Org(name="Test Facility")
        org_id = self.org_management_service.create_org(org_obj)
        self.assertNotEqual(org_id, None)

        org = self.org_management_service.read_org(org_id)
        self.assertNotEqual(org, None)
        self.assertEqual(org.org_governance_name, 'Test_Facility')

        # Check that the roles got associated to them
        role_list = self.org_management_service.list_org_roles(org_id)
        self.assertEqual(len(role_list), 3)

        with self.assertRaises(BadRequest):
            self.org_management_service.update_org()
        org.name = 'Updated Test Facility'
        self.org_management_service.update_org(org)

        org = None
        org = self.org_management_service.read_org(org_id)
        self.assertNotEqual(org, None)
        self.assertEqual(org.name, 'Updated Test Facility')
        self.assertEqual(org.org_governance_name, 'Test_Facility')

        user_role = self.org_management_service.find_org_role_by_name(org_id, MODERATOR_ROLE)
        self.assertNotEqual(user_role, None)

        self.org_management_service.remove_org_role(org_id, MODERATOR_ROLE)
        with self.assertRaises(NotFound) as cm:
            user_role = self.org_management_service.find_org_role_by_name(org_id, MODERATOR_ROLE)
        self.assertIn("Role MODERATOR not found in Org", cm.exception.message)

        self._do_test_membership(org_id)

        self._do_test_share_and_commitments(org_id)

        self._do_test_containers()

        self._do_test_affiliation(org_id)

        # Org deletion
        with self.assertRaises(BadRequest):
            self.org_management_service.delete_org()
        self.org_management_service.delete_org(org_id)

        with self.assertRaises(NotFound) as cm:
            self.org_management_service.read_org(org_id)
        self.assertIn("does not exist", cm.exception.message)

        with self.assertRaises(NotFound) as cm:
            self.org_management_service.delete_org(org_id)
        self.assertIn("does not exist", cm.exception.message)

    def _do_test_membership(self, org_id):
        root_org = self.org_management_service.find_org()
        self.assertNotEqual(root_org, None)

        actor_obj = ActorIdentity(name="Test user")
        actor_id, _ = self.resource_registry.create(actor_obj)

        self.assertTrue(self.org_management_service.is_registered(actor_id))
        self.assertFalse(self.org_management_service.is_enrolled(org_id, actor_id))

        self.assertFalse(self.org_management_service.is_registered(org_id))
        self.assertFalse(self.org_management_service.is_registered("FOOBAR"))
        self.assertTrue(self.org_management_service.is_enrolled(root_org._id, actor_id))
        actor_objs = self.org_management_service.list_enrolled_actors(org_id)
        self.assertEquals(0, len(actor_objs))
        org_objs = self.org_management_service.list_orgs_for_actor(actor_id)
        self.assertEquals(1, len(org_objs))

        role_objs = self.org_management_service.list_actor_roles(actor_id, org_id)
        self.assertEquals(0, len(role_objs))
        self.assertFalse(self.org_management_service.has_role(org_id, actor_id, MEMBER_ROLE))

        self.org_management_service.enroll_member(org_id, actor_id)
        res_ids, _ = self.resource_registry.find_objects(org_id, PRED.hasMember, RT.ActorIdentity, id_only=True)
        self.assertEquals(1, len(res_ids))

        self.assertTrue(self.org_management_service.is_enrolled(org_id, actor_id))
        self.assertTrue(self.org_management_service.has_role(org_id, actor_id, MEMBER_ROLE))
        self.assertFalse(self.org_management_service.has_role(org_id, actor_id, OPERATOR_ROLE))

        actor_objs = self.org_management_service.list_enrolled_actors(org_id)
        self.assertEquals(1, len(actor_objs))
        org_objs = self.org_management_service.list_orgs_for_actor(actor_id)
        self.assertEquals(2, len(org_objs))

        role_objs = self.org_management_service.list_actor_roles(actor_id, org_id)
        self.assertEquals(1, len(role_objs))

        self.org_management_service.grant_role(org_id, actor_id, OPERATOR_ROLE)

        role_objs = self.org_management_service.list_actor_roles(actor_id, org_id)
        self.assertEquals(2, len(role_objs))
        self.assertTrue(self.org_management_service.has_role(org_id, actor_id, OPERATOR_ROLE))

        self.org_management_service.revoke_role(org_id, actor_id, OPERATOR_ROLE)
        role_objs = self.org_management_service.list_actor_roles(actor_id, org_id)
        self.assertEquals(1, len(role_objs))

        self.org_management_service.cancel_member_enrollment(org_id, actor_id)
        res_ids, _ = self.resource_registry.find_objects(org_id, PRED.hasMember, RT.ActorIdentity, id_only=True)
        self.assertEquals(0, len(res_ids))

        self.assertFalse(self.org_management_service.is_enrolled(org_id, actor_id))

        self.resource_registry.delete(actor_id)

    def _do_test_share_and_commitments(self, org_id):
        root_org = self.org_management_service.find_org()
        self.assertNotEqual(root_org, None)

        actor_obj = ActorIdentity(name="Test user")
        actor_id, _ = self.resource_registry.create(actor_obj)

        self.org_management_service.enroll_member(org_id, actor_id)

        inst_obj = TestInstrument(name="Test instrument")
        inst_id, _ = self.resource_registry.create(inst_obj)

        self.assertFalse(self.org_management_service.is_resource_acquired(resource_id=inst_id))

        self.org_management_service.share_resource(org_id, inst_id)
        res_ids, _ = self.resource_registry.find_objects(org_id, PRED.hasResource, id_only=True)
        self.assertEquals(1, len(res_ids))

        cmt_id = self.org_management_service.create_resource_commitment(org_id, actor_id, inst_id)

        self.assertTrue(self.org_management_service.is_resource_acquired(resource_id=inst_id))
        self.assertFalse(self.org_management_service.is_resource_acquired_exclusively(resource_id=inst_id))

        cmt_objs = self.org_management_service.find_commitments(org_id=org_id)
        self.assertEquals(1, len(cmt_objs))
        cmt_objs = self.org_management_service.find_commitments(resource_id=inst_id)
        self.assertEquals(1, len(cmt_objs))
        cmt_objs = self.org_management_service.find_commitments(actor_id=actor_id)
        self.assertEquals(1, len(cmt_objs))

        res_objs = self.org_management_service.find_acquired_resources(org_id=org_id)
        self.assertEquals(1, len(res_objs))
        res_objs = self.org_management_service.find_acquired_resources(actor_id=actor_id)
        self.assertEquals(1, len(res_objs))

        cmt_id = self.org_management_service.create_resource_commitment(org_id, actor_id, inst_id, exclusive=True,
                                                                        expiration=get_ion_ts_millis()+1000)

        self.assertTrue(self.org_management_service.is_resource_acquired(resource_id=inst_id))
        self.assertTrue(self.org_management_service.is_resource_acquired_exclusively(resource_id=inst_id))

        cmt_objs = self.org_management_service.find_commitments(org_id=org_id, exclusive=True)
        self.assertEquals(1, len(cmt_objs))
        cmt_objs = self.org_management_service.find_commitments(resource_id=inst_id, exclusive=True)
        self.assertEquals(1, len(cmt_objs))
        cmt_objs = self.org_management_service.find_commitments(actor_id=actor_id, exclusive=True)
        self.assertEquals(1, len(cmt_objs))

        self.org_management_service.unshare_resource(org_id, inst_id)
        res_ids, _ = self.resource_registry.find_objects(org_id, PRED.hasResource, id_only=True)
        self.assertEquals(0, len(res_ids))

        self.resource_registry.delete(inst_id)
        self.resource_registry.delete(actor_id)

    def _do_test_containers(self):
        # Org containers
        root_org = self.org_management_service.find_org()
        self.assertNotEqual(root_org, None)

        containers = self.org_management_service.find_org_containers(root_org._id)

        all_containers, _ = self.resource_registry.find_resources(restype=RT.CapabilityContainer, id_only=True)

        self.assertEqual(len(containers), len(all_containers))

    def _do_test_affiliation(self, org_id):
        # Org affiliation
        root_org = self.org_management_service.find_org()
        self.assertNotEqual(root_org, None)

        self.org_management_service.affiliate_org(root_org._id, org_id)

        self.org_management_service.unaffiliate_org(root_org._id, org_id)