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, '', {}, '', {}))
 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')