def test_policy_get_all_sort_keys_and_dir(self): values = [{'id': '001', 'name': 'policy1', 'level': 50}, {'id': '002', 'name': 'policy3', 'level': 20}, {'id': '003', 'name': 'policy2', 'level': 40}] for v in values: data = self.new_policy_data(**v) db_api.policy_create(self.ctx, data) policies = db_api.policy_get_all(self.ctx, sort_keys=['name', 'level'], sort_dir='asc') self.assertEqual(3, len(policies)) # Sorted by name self.assertEqual('001', policies[0].id) self.assertEqual('003', policies[1].id) self.assertEqual('002', policies[2].id) policies = db_api.policy_get_all(self.ctx, sort_keys=['level', 'name'], sort_dir='asc') self.assertEqual(3, len(policies)) # Sorted by levels (ascending) self.assertEqual('002', policies[0].id) self.assertEqual('003', policies[1].id) self.assertEqual('001', policies[2].id) policies = db_api.policy_get_all(self.ctx, sort_keys=['level', 'name'], sort_dir='desc') self.assertEqual(3, len(policies)) # Sorted by statuses (descending) self.assertEqual('001', policies[0].id) self.assertEqual('003', policies[1].id) self.assertEqual('002', policies[2].id)
def test_policy_get_all_sorting(self): values = [{'id': '001', 'name': 'policy1'}, {'id': '002', 'name': 'policy3'}, {'id': '003', 'name': 'policy2'}] for v in values: v['created_at'] = tu.utcnow(True) data = self.new_policy_data(**v) db_api.policy_create(self.ctx, data) # Sorted by name policies = db_api.policy_get_all(self.ctx, sort='name') self.assertEqual(3, len(policies)) self.assertEqual('001', policies[0].id) self.assertEqual('003', policies[1].id) self.assertEqual('002', policies[2].id) # Sorted by created_at and name (ascending) policies = db_api.policy_get_all(self.ctx, sort='created_at,name') self.assertEqual(3, len(policies)) self.assertEqual('001', policies[0].id) self.assertEqual('002', policies[1].id) self.assertEqual('003', policies[2].id) # Sorted by name (descending) policies = db_api.policy_get_all(self.ctx, sort='name:desc') self.assertEqual(3, len(policies)) self.assertEqual('002', policies[0].id) self.assertEqual('003', policies[1].id) self.assertEqual('001', policies[2].id)
def test_policy_get_all(self): specs = [ {'name': 'policy_short', 'cooldown': '10'}, {'name': 'policy_long', 'cooldown': '100'}, ] for spec in specs: data = self.new_policy_data(**spec) db_api.policy_create(self.ctx, data) policies = db_api.policy_get_all(self.ctx) self.assertEqual(2, len(policies)) names = [p.name for p in policies] for spec in specs: self.assertIn(spec['name'], names) db_api.policy_delete(self.ctx, policies[1].id) # after delete one of them policies = db_api.policy_get_all(self.ctx) self.assertEqual(1, len(policies)) # after delete both policies db_api.policy_delete(self.ctx, policies[0].id) policies = db_api.policy_get_all(self.ctx) self.assertEqual(0, len(policies))
def test_policy_get_all_sorting(self): values = [{'id': '001', 'name': 'policy1'}, {'id': '002', 'name': 'policy3'}, {'id': '003', 'name': 'policy2'}] for v in values: v['created_at'] = tu.utcnow() data = self.new_policy_data(**v) db_api.policy_create(self.ctx, data) # Sorted by name policies = db_api.policy_get_all(self.ctx, sort='name') self.assertEqual(3, len(policies)) self.assertEqual('001', policies[0].id) self.assertEqual('003', policies[1].id) self.assertEqual('002', policies[2].id) # Sorted by created_at and name (ascending) policies = db_api.policy_get_all(self.ctx, sort='created_at,name') self.assertEqual(3, len(policies)) self.assertEqual('001', policies[0].id) self.assertEqual('002', policies[1].id) self.assertEqual('003', policies[2].id) # Sorted by name (descending) policies = db_api.policy_get_all(self.ctx, sort='name:desc') self.assertEqual(3, len(policies)) self.assertEqual('002', policies[0].id) self.assertEqual('003', policies[1].id) self.assertEqual('001', policies[2].id)
def test_policy_get_all(self): specs = [ { 'name': 'policy_short', 'cooldown': '10' }, { 'name': 'policy_long', 'cooldown': '100' }, ] for spec in specs: data = self.new_policy_data(**spec) db_api.policy_create(self.ctx, data) policies = db_api.policy_get_all(self.ctx) self.assertEqual(2, len(policies)) names = [p.name for p in policies] for spec in specs: self.assertIn(spec['name'], names) db_api.policy_delete(self.ctx, policies[1].id) # after delete one of them policies = db_api.policy_get_all(self.ctx) self.assertEqual(1, len(policies)) # after delete both policies db_api.policy_delete(self.ctx, policies[0].id) policies = db_api.policy_get_all(self.ctx) self.assertEqual(0, len(policies))
def test_policy_get_all_with_filters(self): for name in ['policy1', 'policy2']: data = self.new_policy_data(name=name) db_api.policy_create(self.ctx, data) filters = {'name': ['policy1', 'policyx']} results = db_api.policy_get_all(self.ctx, filters=filters) self.assertEqual(1, len(results)) self.assertEqual('policy1', results[0]['name']) filters = {'name': 'policy1'} results = db_api.policy_get_all(self.ctx, filters=filters) self.assertEqual(1, len(results)) self.assertEqual('policy1', results[0]['name'])
def test_policy_get_all_used_sort_keys(self, mock_paginate): ids = ['policy1', 'policy2', 'policy3'] for pid in ids: data = self.new_policy_data(id=pid) db_api.policy_create(self.ctx, data) sort_keys = consts.POLICY_SORT_KEYS db_api.policy_get_all(self.ctx, sort=','.join(sort_keys)) args = mock_paginate.call_args[0] used_sort_keys = set(args[3]) sort_keys.append('id') expected_keys = set(sort_keys) self.assertEqual(expected_keys, used_sort_keys)
def test_policy_get_all_diff_project(self): specs = [ {'name': 'policy_short', 'cooldown': '10'}, {'name': 'policy_long', 'cooldown': '100'}, ] for spec in specs: data = self.new_policy_data(**spec) db_api.policy_create(self.ctx, data) new_ctx = utils.dummy_context(project='a-different-project') policies = db_api.policy_get_all(new_ctx) self.assertEqual(0, len(policies)) policies = db_api.policy_get_all(new_ctx, project_safe=False) self.assertEqual(2, len(policies))
def test_policy_get_all_used_sort_keys(self): ids = ['policy1', 'policy2', 'policy3'] for pid in ids: data = self.new_policy_data(id=pid) db_api.policy_create(self.ctx, data) mock_paginate = self.patchobject(db_api.utils, 'paginate_query') sort_keys = ['type', 'name', 'level', 'cooldown', 'created_time', 'updated_time', 'deleted_time'] db_api.policy_get_all(self.ctx, sort_keys=sort_keys) args = mock_paginate.call_args[0] used_sort_keys = set(args[3]) expected_keys = set(['id', 'type', 'name', 'level', 'cooldown', 'created_time', 'updated_time', 'deleted_time']) self.assertEqual(expected_keys, used_sort_keys)
def test_policy_get_all_with_empty_filters(self): for name in ['policy1', 'policy2']: data = self.new_policy_data(name=name) db_api.policy_create(self.ctx, data) filters = None results = db_api.policy_get_all(self.ctx, filters=filters) self.assertEqual(2, len(results))
def test_policy_get_all_sort_keys_and_dir(self): values = [{ 'id': '001', 'name': 'policy1', 'level': 50 }, { 'id': '002', 'name': 'policy3', 'level': 20 }, { 'id': '003', 'name': 'policy2', 'level': 40 }] for v in values: data = self.new_policy_data(**v) db_api.policy_create(self.ctx, data) policies = db_api.policy_get_all(self.ctx, sort_keys=['name', 'level'], sort_dir='asc') self.assertEqual(3, len(policies)) # Sorted by name self.assertEqual('001', policies[0].id) self.assertEqual('003', policies[1].id) self.assertEqual('002', policies[2].id) policies = db_api.policy_get_all(self.ctx, sort_keys=['level', 'name'], sort_dir='asc') self.assertEqual(3, len(policies)) # Sorted by levels (ascending) self.assertEqual('002', policies[0].id) self.assertEqual('003', policies[1].id) self.assertEqual('001', policies[2].id) policies = db_api.policy_get_all(self.ctx, sort_keys=['level', 'name'], sort_dir='desc') self.assertEqual(3, len(policies)) # Sorted by statuses (descending) self.assertEqual('001', policies[0].id) self.assertEqual('003', policies[1].id) self.assertEqual('002', policies[2].id)
def test_policy_get_all_with_limit_marker(self): ids = ['policy1', 'policy2', 'policy3'] for pid in ids: timestamp = tu.utcnow(True) data = self.new_policy_data(id=pid, created_at=timestamp) db_api.policy_create(self.ctx, data) # different limit settings policies = db_api.policy_get_all(self.ctx, limit=1) self.assertEqual(1, len(policies)) policies = db_api.policy_get_all(self.ctx, limit=2) self.assertEqual(2, len(policies)) # a large limit policies = db_api.policy_get_all(self.ctx, limit=5) self.assertEqual(3, len(policies)) # use marker here policies = db_api.policy_get_all(self.ctx, marker='policy1') self.assertEqual(2, len(policies)) policies = db_api.policy_get_all(self.ctx, marker='policy2') self.assertEqual(1, len(policies)) policies = db_api.policy_get_all(self.ctx, marker='policy3') self.assertEqual(0, len(policies)) policies = db_api.policy_get_all(self.ctx, limit=1, marker='policy1') self.assertEqual(1, len(policies))
def test_policy_get_all_default_sorting(self): policies = [] for x in range(3): data = self.new_policy_data(created_at=tu.utcnow(True)) policies.append(db_api.policy_create(self.ctx, data)) results = db_api.policy_get_all(self.ctx) self.assertEqual(3, len(results)) self.assertEqual(policies[0].id, results[0].id) self.assertEqual(policies[1].id, results[1].id) self.assertEqual(policies[2].id, results[2].id)
def test_policy_get_all_used_sort_keys(self): ids = ['policy1', 'policy2', 'policy3'] for pid in ids: data = self.new_policy_data(id=pid) db_api.policy_create(self.ctx, data) mock_paginate = self.patchobject(db_api.utils, 'paginate_query') sort_keys = [ 'type', 'name', 'level', 'cooldown', 'created_time', 'updated_time', 'deleted_time' ] db_api.policy_get_all(self.ctx, sort_keys=sort_keys) args = mock_paginate.call_args[0] used_sort_keys = set(args[3]) expected_keys = set([ 'id', 'type', 'name', 'level', 'cooldown', 'created_time', 'updated_time', 'deleted_time' ]) self.assertEqual(expected_keys, used_sort_keys)
def test_policy_get_all_sort_keys_wont_change(self): sort_keys = ['id'] db_api.policy_get_all(self.ctx, sort_keys=sort_keys) self.assertEqual(['id'], sort_keys)