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