コード例 #1
0
 def __init__(self):
     self.engine = create_test_engine()
     initialize(self.engine)
     self.sessionmaker = db.create_scoped_sessionmaker(self.engine)
     self.inventory_config = InventoryConfig('organizations/1', '', {}, '',
                                             {})
     self.inventory_config.set_service_config(self)
コード例 #2
0
 def __init__(self):
     self.engine = create_test_engine()
     self.model_manager = ModelManager(self.engine)
     self.sessionmaker = db.create_scoped_sessionmaker(self.engine)
     self.workers = ThreadPool(10)
     self.inventory_config = InventoryConfig(gcp_api_mocks.ORGANIZATION_ID,
                                             '', {}, '', {})
     self.inventory_config.set_service_config(self)
コード例 #3
0
    def test_basic(self):
        """Test storing a few resources, then iterate."""
        engine = create_test_engine()

        initialize(engine)
        scoped_sessionmaker = db.create_scoped_sessionmaker(engine)

        res_org = ResourceMock('1', {'id': 'test'}, 'organization', 'resource')
        res_proj1 = ResourceMock('2', {'id': 'test'}, 'project', 'resource',
                                 res_org)
        res_proj1 = ResourceMock('2', {'id': 'test'}, 'project', 'iam_policy',
                                 res_proj1)
        res_proj1 = ResourceMock('2', {'id': 'test'}, 'project',
                                 'billing_info', res_proj1)
        res_buc1 = ResourceMock('3', {'id': 'test'}, 'bucket', 'resource',
                                res_proj1)
        res_proj2 = ResourceMock('4', {'id': 'test'}, 'project', 'resource',
                                 res_org)
        res_buc2 = ResourceMock('5', {'id': 'test'}, 'bucket', 'resource',
                                res_proj2)
        res_obj2 = ResourceMock('6', {'id': 'test'}, 'object', 'resource',
                                res_buc2)

        resources = [
            res_org, res_proj1, res_buc1, res_proj2, res_buc2, res_obj2
        ]

        with scoped_sessionmaker() as session:
            with Storage(session) as storage:
                for resource in resources:
                    storage.write(resource)
                storage.commit()

                self.assertEqual(
                    3,
                    len(
                        self.reduced_inventory(storage,
                                               ['organization', 'bucket'])),
                    'Only 1 organization and 2 buckets')

                self.assertEqual(6, len(self.reduced_inventory(storage, [])),
                                 'No types should yield empty list')

        with scoped_sessionmaker() as session:
            storage = Storage(session)
            _ = storage.open()
            for resource in resources:
                storage.write(resource)
            storage.buffer.flush()
            self.assertEqual(
                3,
                len(self.reduced_inventory(storage,
                                           ['organization', 'bucket'])),
                'Only 1 organization and 2 buckets')

            self.assertEqual(6, len(self.reduced_inventory(storage, [])),
                             'No types should yield empty list')
コード例 #4
0
    def populate_data(self):
        self.engine = create_test_engine()
        initialize(self.engine)
        self.scoped_sessionmaker = db.create_scoped_sessionmaker(self.engine)

        with self.scoped_sessionmaker() as session:
            inventory_indices = [
                InventoryIndex(id='one_day_old',
                               created_at_datetime=datetime(
                                   2010, 12, 30, 8, 0, 0)),
                InventoryIndex(id='seven_days_old',
                               created_at_datetime=datetime(
                                   2010, 12, 24, 8, 0, 0)),
                InventoryIndex(id='nine_days_old',
                               created_at_datetime=datetime(
                                   2010, 12, 22, 8, 0, 0))
            ]
            for i in inventory_indices:
                session.add(i)
            session.commit()
            session.expunge_all()

            inventory_resources = [
                Inventory(id=1, full_name=1, inventory_index_id='one_day_old'),
                Inventory(id=2, full_name=2, inventory_index_id='one_day_old'),
                Inventory(id=3,
                          full_name=3,
                          inventory_index_id='seven_days_old'),
                Inventory(id=4,
                          full_name=4,
                          inventory_index_id='seven_days_old'),
                Inventory(id=5,
                          full_name=5,
                          inventory_index_id='nine_days_old'),
                Inventory(id=6,
                          full_name=6,
                          inventory_index_id='nine_days_old'),
            ]
            for i in inventory_resources:
                session.add(i)
            session.commit()
            session.expunge_all()

        return session
コード例 #5
0
    def test_storage_with_timestamps(self):
        """Crawl from project, verify every resource has a timestamp."""
        def verify_resource_timestamps_from_storage(storage):
            for i, item in enumerate(storage.iter(list()), start=1):
                self.assertTrue('timestamp' in item.get_other())
            return i

        engine = create_test_engine()

        initialize(engine)
        scoped_sessionmaker = db.create_scoped_sessionmaker(engine)

        res_org = ResourceMock('1', {'id': 'test'}, 'organization', 'resource')
        with scoped_sessionmaker() as session:
            with Storage(session) as storage:
                storage.write(res_org)
                storage.commit()

                resource_count = (
                    verify_resource_timestamps_from_storage(storage))
                self.assertEqual(
                    1, resource_count,
                    'Unexpected number of resources in inventory')
 def setUp(self):
     self.engine = create_test_engine()
     _session_maker = sessionmaker()
     self.session = _session_maker(bind=self.engine)
     initialize(self.engine)
     res_user1 = ResourceMock('1', {
         'primaryEmail': '*****@*****.**',
         'suspended': False
     }, 'gsuite_user', 'resource')
     res_user2 = ResourceMock('2', {
         'primaryEmail': '*****@*****.**',
         'suspended': False
     }, 'gsuite_user', 'resource')
     res_user3 = ResourceMock('3', {
         'primaryEmail': '*****@*****.**',
         'suspended': False
     }, 'gsuite_user', 'resource')
     self.resources = [res_user1, res_user2, res_user3]
     self.storage = Storage(self.session)
     _ = self.storage.open()
     for resource in self.resources:
         self.storage.write(resource)
     self.storage.commit()
     self.service_config = TestServiceConfig()
コード例 #7
0
 def __init__(self):
     engine = create_test_engine()
     self.model_manager = ModelManager(engine)
コード例 #8
0
 def __init__(self):
     self.engine = create_test_engine()
     self.model_manager = ModelManager(self.engine)
     self.inventory_config = (
         InventoryConfig(gcp_api_mocks.ORGANIZATION_ID, '', {}, '', {}))
コード例 #9
0
 def __init__(self, inventory_config):
     self.engine = create_test_engine()
     self.model_manager = ModelManager(self.engine)
     self.inventory_config = inventory_config
コード例 #10
0
    def test_whether_resource_should_be_inserted_or_updated(self):
        """Whether the resource should be inserted or updated.

        All resources should not be written if they have been previously
        written. Except group members, where members can be in multiple groups.
        """

        engine = create_test_engine()

        initialize(engine)
        scoped_sessionmaker = db.create_scoped_sessionmaker(engine)

        res_org = ResourceMock('1', {'id': 'test'}, 'organization', 'resource')
        res_proj1 = ResourceMock('2', {'id': 'test'}, 'project', 'resource',
                                 res_org)
        res_iam1 = ResourceMock('3', {'id': 'test'}, 'project', 'iam_policy',
                                res_proj1)
        res_billing1 = ResourceMock('4', {'id': 'test'}, 'project',
                                    'billing_info', res_proj1)
        res_buc1 = ResourceMock('5', {'id': 'test'}, 'bucket', 'resource',
                                res_org)
        res_proj2 = ResourceMock('6', {'id': 'test'}, 'project', 'resource',
                                 res_org)
        res_buc2 = ResourceMock('7', {'id': 'test'}, 'bucket', 'resource',
                                res_proj2)
        res_obj2 = ResourceMock('8', {'id': 'test'}, 'object', 'resource',
                                res_buc2)
        res_group1 = ResourceMock('9', {'id': 'test'}, 'google_group',
                                  'resource', res_org)
        res_group2 = ResourceMock('10', {'id': 'test'}, 'google_group',
                                  'resource', res_org)
        res_group_member1 = ResourceMock('11', {
            'id': 'user111',
            'kind': 'admin#directory#member'
        }, 'gsuite_group_member', 'resource', res_group1)
        res_group_member2 = ResourceMock('11', {
            'id': 'user111',
            'kind': 'admin#directory#member'
        }, 'gsuite_group_member', 'resource', res_group2)
        res_group_member3 = ResourceMock('12', {
            'id': 'user222',
            'kind': 'admin#directory#member'
        }, 'gsuite_group_member', 'resource', res_group1)
        res_proj3 = ResourceMock('6', {'id': 'dup_proj'}, 'project',
                                 'resource', res_org)

        resources = [
            res_org, res_proj1, res_iam1, res_billing1, res_buc1, res_proj2,
            res_buc2, res_obj2, res_proj3, res_group1, res_group2,
            res_group_member1, res_group_member2, res_group_member3
        ]

        with scoped_sessionmaker() as session:
            with Storage(session) as storage:
                for resource in resources:
                    storage.write(resource)
                storage.commit()

                self.assertEqual(
                    5,
                    len(
                        self.reduced_inventory(storage,
                                               ['organization', 'project'])),
                    'Only 1 organization and 2 unique projects')

                self.assertEqual(
                    3,
                    len(
                        self.reduced_inventory(storage,
                                               ['gsuite_group_member'])),
                    'All group members should be stored.')

                self.assertEqual(13, len(self.reduced_inventory(storage, [])),
                                 'No types should yield empty list')