def test_check_get_user_role( self, mock_get_user_public_keys, mock_is_authenticated, mock_get_test_meta_key, mock_pecan_abort ): # Check user level mock_get_test_meta_key.return_value = None self.assertEqual(const.ROLE_USER, api_utils.get_user_role("fake_test")) api_utils.enforce_permissions("fake_test", const.ROLE_USER) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, "fake_test", const.ROLE_OWNER) mock_get_test_meta_key.side_effect = { ("fake_test", const.PUBLIC_KEY): "fake key", ("fake_test", const.SHARED_TEST_RUN): "true", }.get self.assertEqual(const.ROLE_USER, api_utils.get_user_role("fake_test")) api_utils.enforce_permissions("fake_test", const.ROLE_USER) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, "fake_test", const.ROLE_OWNER) mock_is_authenticated.return_value = True mock_get_user_public_keys.return_value = [{"format": "fake", "pubkey": "key"}] mock_get_test_meta_key.side_effect = { ("fake_test", const.PUBLIC_KEY): "fake key", ("fake_test", const.SHARED_TEST_RUN): "true", }.get self.assertEqual(const.ROLE_USER, api_utils.get_user_role("fake_test")) api_utils.enforce_permissions("fake_test", const.ROLE_USER) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, "fake_test", const.ROLE_OWNER) # Check owner level mock_is_authenticated.return_value = True mock_get_user_public_keys.return_value = [{"format": "fake", "pubkey": "key"}] mock_get_test_meta_key.side_effect = lambda *args: { ("fake_test", const.PUBLIC_KEY): "fake key", ("fake_test", const.SHARED_TEST_RUN): None, }.get(args) self.assertEqual(const.ROLE_OWNER, api_utils.get_user_role("fake_test")) api_utils.enforce_permissions("fake_test", const.ROLE_USER) api_utils.enforce_permissions("fake_test", const.ROLE_OWNER) # Check negative cases mock_is_authenticated.return_value = False mock_get_test_meta_key.side_effect = lambda *args: { ("fake_test", const.PUBLIC_KEY): "fake key", ("fake_test", const.SHARED_TEST_RUN): None, }.get(args) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, "fake_test", const.ROLE_USER) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, "fake_test", const.ROLE_OWNER) mock_is_authenticated.return_value = True mock_get_user_public_keys.return_value = [{"format": "fake", "pubkey": "key"}] mock_get_test_meta_key.side_effect = lambda *args: { ("fake_test", const.PUBLIC_KEY): "fake other_key", ("fake_test", const.SHARED_TEST_RUN): None, }.get(args) self.assertEqual(None, api_utils.get_user_role("fake_test")) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, "fake_test", const.ROLE_USER) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, "fake_test", const.ROLE_OWNER)
def get_one(self, test_id): """Handler for getting item.""" if api_utils.get_user_role(test_id) == const.ROLE_OWNER: test_info = db.get_test(test_id, allowed_keys=["id", "cpid", "created_at", "duration_seconds", "meta"]) else: test_info = db.get_test(test_id) test_list = db.get_test_results(test_id) test_name_list = [test_dict["name"] for test_dict in test_list] test_info.update({"results": test_name_list, "user_role": api_utils.get_user_role(test_id)}) return test_info
def get_one(self, test_id): """Handler for getting item.""" if api_utils.get_user_role(test_id) == const.ROLE_OWNER: test_info = db.get_test( test_id, allowed_keys=['id', 'cpid', 'created_at', 'duration_seconds', 'meta'] ) else: test_info = db.get_test(test_id) test_list = db.get_test_results(test_id) test_name_list = [test_dict['name'] for test_dict in test_list] test_info.update({'results': test_name_list, 'user_role': api_utils.get_user_role(test_id)}) return test_info
def get_one(self, test_id): """Handler for getting item.""" user_role = api_utils.get_user_role(test_id) if user_role in (const.ROLE_FOUNDATION, const.ROLE_OWNER): test_info = db.get_test(test_id, allowed_keys=[ 'id', 'cpid', 'created_at', 'duration_seconds', 'meta', 'product_version', 'verification_status' ]) else: test_info = db.get_test(test_id) test_list = db.get_test_results(test_id) test_name_list = [test_dict['name'] for test_dict in test_list] test_info.update({'results': test_name_list, 'user_role': user_role}) if user_role not in (const.ROLE_FOUNDATION, const.ROLE_OWNER): # Don't expose product information if product is not public. if (test_info.get('product_version') and not test_info['product_version']['product_info']['public'] ): test_info['product_version'] = None test_info['meta'] = { k: v for k, v in test_info['meta'].items() if k in MetadataController.rw_access_keys } return test_info
def get_one(self, test_id, key): """Get value for key from test run metadata.""" role = api_utils.get_user_role(test_id) if role in (const.ROLE_FOUNDATION, const.ROLE_OWNER): return db.get_test_meta_key(test_id, key) elif role in (const.ROLE_USER) and key in self.rw_access_keys: return db.get_test_meta_key(test_id, key) pecan.abort(403)
def get(self, test_id): """Get test run metadata.""" test_info = db.get_test_result(test_id) role = api_utils.get_user_role(test_id) if role in (const.ROLE_FOUNDATION, const.ROLE_OWNER): return test_info['meta'] elif role in (const.ROLE_USER): return {k: v for k, v in test_info['meta'].items() if k in self.rw_access_keys} pecan.abort(403)
def get_one(self, test_id): """Handler for getting item.""" if api_utils.get_user_role(test_id) == const.ROLE_OWNER: test_info = db.get_test( test_id, allowed_keys=['id', 'cpid', 'created_at', 'duration_seconds', 'meta'] ) else: test_info = db.get_test(test_id) test_list = db.get_test_results(test_id) test_name_list = [test_dict['name'] for test_dict in test_list] test_info.update({'results': test_name_list, 'user_role': api_utils.get_user_role(test_id)}) cloud_id = test_info['cpid'] cloud = db.get_cloud(cloud_id) if cloud: test_info.update({'cloud_name': cloud['name'], 'cloud_description': cloud['description'], 'cloud_shared': cloud['shared']}) return test_info
def test_check_get_user_role(self, mock_get_user_id, mock_is_authenticated, mock_get_test, mock_get_test_meta_key, mock_pecan_abort, mock_check_foundation): # Check user level mock_check_foundation.return_value = False mock_get_test_meta_key.return_value = None mock_get_test.return_value = {} self.assertEqual(const.ROLE_USER, api_utils.get_user_role('fake_test')) api_utils.enforce_permissions('fake_test', const.ROLE_USER) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, 'fake_test', const.ROLE_OWNER) mock_get_test_meta_key.side_effect = { ('fake_test', const.USER): 'fake_openid', ('fake_test', const.SHARED_TEST_RUN): 'true', }.get self.assertEqual(const.ROLE_USER, api_utils.get_user_role('fake_test')) api_utils.enforce_permissions('fake_test', const.ROLE_USER) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, 'fake_test', const.ROLE_OWNER) mock_is_authenticated.return_value = True mock_get_user_id.return_value = 'fake_openid' mock_get_test_meta_key.side_effect = { ('fake_test', const.USER): 'fake_openid', ('fake_test', const.SHARED_TEST_RUN): 'true', }.get self.assertEqual(const.ROLE_USER, api_utils.get_user_role('fake_test')) api_utils.enforce_permissions('fake_test', const.ROLE_USER) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, 'fake_test', const.ROLE_OWNER) # Check owner level mock_is_authenticated.return_value = True mock_get_user_id.return_value = 'fake_openid' mock_get_test_meta_key.side_effect = lambda *args: { ('fake_test', const.USER): 'fake_openid', ('fake_test', const.SHARED_TEST_RUN): None, }.get(args) self.assertEqual(const.ROLE_OWNER, api_utils.get_user_role('fake_test')) api_utils.enforce_permissions('fake_test', const.ROLE_USER) api_utils.enforce_permissions('fake_test', const.ROLE_OWNER) # Check negative cases mock_is_authenticated.return_value = False mock_get_test_meta_key.side_effect = lambda *args: { ('fake_test', const.USER): 'fake_openid', ('fake_test', const.SHARED_TEST_RUN): None, }.get(args) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, 'fake_test', const.ROLE_USER) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, 'fake_test', const.ROLE_OWNER) mock_is_authenticated.return_value = True mock_get_user_id.return_value = 'fake_openid' mock_get_test_meta_key.side_effect = lambda *args: { ('fake_test', const.USER): 'some_other_user', ('fake_test', const.SHARED_TEST_RUN): None, }.get(args) self.assertIsNone(api_utils.get_user_role('fake_test')) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, 'fake_test', const.ROLE_USER) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, 'fake_test', const.ROLE_OWNER)
def test_check_get_user_role(self, mock_get_user_id, mock_is_authenticated, mock_get_test_result, mock_get_test_result_meta_key, mock_pecan_abort, mock_check_foundation): # Check user level mock_check_foundation.return_value = False mock_get_test_result_meta_key.return_value = None mock_get_test_result.return_value = {} self.assertEqual(const.ROLE_USER, api_utils.get_user_role('fake_test')) api_utils.enforce_permissions('fake_test', const.ROLE_USER) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, 'fake_test', const.ROLE_OWNER) mock_get_test_result_meta_key.side_effect = { ('fake_test', const.USER): 'fake_openid', ('fake_test', const.SHARED_TEST_RUN): 'true', }.get self.assertEqual(const.ROLE_USER, api_utils.get_user_role('fake_test')) api_utils.enforce_permissions('fake_test', const.ROLE_USER) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, 'fake_test', const.ROLE_OWNER) mock_is_authenticated.return_value = True mock_get_user_id.return_value = 'fake_openid' mock_get_test_result_meta_key.side_effect = { ('fake_test', const.USER): 'fake_openid', ('fake_test', const.SHARED_TEST_RUN): 'true', }.get self.assertEqual(const.ROLE_USER, api_utils.get_user_role('fake_test')) api_utils.enforce_permissions('fake_test', const.ROLE_USER) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, 'fake_test', const.ROLE_OWNER) # Check owner level mock_is_authenticated.return_value = True mock_get_user_id.return_value = 'fake_openid' mock_get_test_result_meta_key.side_effect = lambda *args: { ('fake_test', const.USER): 'fake_openid', ('fake_test', const.SHARED_TEST_RUN): None, }.get(args) self.assertEqual(const.ROLE_OWNER, api_utils.get_user_role('fake_test')) api_utils.enforce_permissions('fake_test', const.ROLE_USER) api_utils.enforce_permissions('fake_test', const.ROLE_OWNER) # Check negative cases mock_is_authenticated.return_value = False mock_get_test_result_meta_key.side_effect = lambda *args: { ('fake_test', const.USER): 'fake_openid', ('fake_test', const.SHARED_TEST_RUN): None, }.get(args) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, 'fake_test', const.ROLE_USER) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, 'fake_test', const.ROLE_OWNER) mock_is_authenticated.return_value = True mock_get_user_id.return_value = 'fake_openid' mock_get_test_result_meta_key.side_effect = lambda *args: { ('fake_test', const.USER): 'some_other_user', ('fake_test', const.SHARED_TEST_RUN): None, }.get(args) self.assertIsNone(api_utils.get_user_role('fake_test')) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, 'fake_test', const.ROLE_USER) self.assertRaises(exc.HTTPError, api_utils.enforce_permissions, 'fake_test', const.ROLE_OWNER)