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)
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)
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')
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
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()
def __init__(self): engine = create_test_engine() self.model_manager = ModelManager(engine)
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
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')