From dadb26d3be58c6224d43f90f7eb41b6dd1303a10 Mon Sep 17 00:00:00 2001 From: asteroide Date: Fri, 18 Sep 2015 14:25:54 +0200 Subject: Add object assignments commands and the tests for them. Change-Id: Icec67fd57fec3468b5a0c63e98d85aa2ae6d5da1 --- moonclient/moonclient/object_assignments.py | 55 +++- .../moonclient/tests/tests_object_assignments.json | 366 +++++++++++++++++++++ 2 files changed, 404 insertions(+), 17 deletions(-) create mode 100644 moonclient/moonclient/tests/tests_object_assignments.json diff --git a/moonclient/moonclient/object_assignments.py b/moonclient/moonclient/object_assignments.py index 81305d61..611fdb13 100644 --- a/moonclient/moonclient/object_assignments.py +++ b/moonclient/moonclient/object_assignments.py @@ -16,6 +16,16 @@ class ObjectAssignmentsList(Lister): def get_parser(self, prog_name): parser = super(ObjectAssignmentsList, self).get_parser(prog_name) + parser.add_argument( + 'object_id', + metavar='', + help='Object UUID', + ) + parser.add_argument( + 'category_id', + metavar='', + help='Category UUID', + ) parser.add_argument( '--intraextension', metavar='', @@ -23,16 +33,22 @@ class ObjectAssignmentsList(Lister): ) return parser + def __get_scope_from_id(self, intraextension_id, category_id, scope_id): + data = self.app.get_url("/v3/OS-MOON/intra_extensions/{}/object_scopes/{}".format( + intraextension_id, category_id), + authtoken=True) + if scope_id in data: + return data[scope_id] + def take_action(self, parsed_args): if not parsed_args.intraextension: parsed_args.intraextension = self.app.intraextension - data = self.app.get_url("/v3/OS-MOON/intra_extensions/{}/object_assignments".format(parsed_args.intraextension), - authtoken=True) - if "object_assignments" not in data: - raise Exception("Error in command {}: {}".format("ObjectAssignmentsList", data)) + data = self.app.get_url("/v3/OS-MOON/intra_extensions/{}/object_assignments/{}/{}".format( + parsed_args.intraextension, parsed_args.object_id, parsed_args.category_id), + authtoken=True) return ( - ("category", "value"), - ((_cat, str(_val)) for _cat, _val in data["object_assignments"].items()) + ("id", "name"), + ((_id, self.__get_scope_from_id(parsed_args.intraextension, parsed_args.category_id, _id)['name']) for _id in data) ) @@ -45,17 +61,17 @@ class ObjectAssignmentsAdd(Command): parser = super(ObjectAssignmentsAdd, self).get_parser(prog_name) parser.add_argument( 'object_id', - metavar='', + metavar='', help='Object UUID', ) parser.add_argument( 'object_category', - metavar='', + metavar='', help='Object Category', ) parser.add_argument( 'object_category_scope', - metavar='', + metavar='', help='Object Category Scope', ) parser.add_argument( @@ -65,21 +81,26 @@ class ObjectAssignmentsAdd(Command): ) return parser + def __get_scope_from_id(self, intraextension_id, category_id, scope_id): + data = self.app.get_url("/v3/OS-MOON/intra_extensions/{}/object_scopes/{}".format( + intraextension_id, category_id), + authtoken=True) + if scope_id in data: + return data[scope_id] + def take_action(self, parsed_args): if not parsed_args.intraextension: parsed_args.intraextension = self.app.intraextension data = self.app.get_url("/v3/OS-MOON/intra_extensions/{}/object_assignments".format(parsed_args.intraextension), post_data={ "object_id": parsed_args.object_id, - "object_category": parsed_args.object_category, - "object_category_scope": parsed_args.object_category_scope + "object_category_id": parsed_args.object_category, + "object_scope_id": parsed_args.object_category_scope }, authtoken=True) - if "object_assignments" not in data: - raise Exception("Error in command {}".format(data)) return ( - ("category", "value"), - ((_cat, str(_val)) for _cat, _val in data["object_assignments"].items()) + ("id", "name"), + ((_id, self.__get_scope_from_id(parsed_args.intraextension, parsed_args.category_id, _id)['name']) for _id in data) ) @@ -92,7 +113,7 @@ class ObjectAssignmentsDelete(Command): parser = super(ObjectAssignmentsDelete, self).get_parser(prog_name) parser.add_argument( 'object_id', - metavar='', + metavar='', help='Object UUID', ) parser.add_argument( @@ -117,8 +138,8 @@ class ObjectAssignmentsDelete(Command): parsed_args.intraextension = self.app.intraextension self.app.get_url("/v3/OS-MOON/intra_extensions/{}/object_assignments/{}/{}/{}".format( parsed_args.intraextension, - parsed_args.object_category, parsed_args.object_id, + parsed_args.object_category, parsed_args.object_category_scope ), method="DELETE", diff --git a/moonclient/moonclient/tests/tests_object_assignments.json b/moonclient/moonclient/tests/tests_object_assignments.json new file mode 100644 index 00000000..450066a4 --- /dev/null +++ b/moonclient/moonclient/tests/tests_object_assignments.json @@ -0,0 +1,366 @@ +{ + "command_options": "-f value", + "tests_group": { + "authz": [ + { + "name": "list tenant", + "command": "tenant list", + "result": "(?!alt_demo)", + "description": "Check if tenant alt_demo is used." + }, + { + "name": "add tenant alt_demo", + "command": "tenant add alt_demo", + "result": "^$", + "description": "Add a new tenant", + "command_options": "" + }, + { + "name": "check tenant alt_demo", + "command": "tenant list", + "result": "(?P\\w+)\\s+alt_demo", + "description": "Check that tenant alt_demo has been correctly added" + }, + { + "name": "create_intraextension_authz", + "command": "intraextension create --policy_model policy_authz authz_test", + "result": "IntraExtension created: (?P\\w+)", + "description": "Create an authz intra extension", + "command_options": "" + }, + { + "name": "list_intraextension_authz", + "command": "intraextension list", + "result": "$uuid_authz", + "description": "Check the existence of that authz intra extension" + }, + { + "name": "set_tenant_authz", + "command": "tenant set --authz $uuid_authz $uuid", + "result": "", + "description": "Connect the authz intra extension to the tenant alt_demo", + "command_options": "" + }, + { + "name": "select_authz_ie", + "command": "intraextension select $uuid_authz", + "result": "Select $uuid_authz IntraExtension.", + "description": "Select the authz IntraExtension", + "command_options": "" + }, + { + "name": "check_select_authz_ie", + "command": "intraextension show selected", + "result": "$uuid_authz", + "description": "Check the selected authz IntraExtension", + "command_options": "-c id -f value" + }, + { + "name": "add_object", + "command": "object add nova_server_1", + "result": "", + "description": "Add the new object category nova_server_1", + "command_options": "" + }, + { + "name": "list_object", + "command": "object list", + "result": "(?P\\w+)\\s+nova_server_1", + "description": "Check that nova_server_1 object was added." + }, + { + "name": "add_object_category", + "command": "object category add my_new_object_category", + "result": "", + "description": "Add the new object category my_new_object_category", + "command_options": "" + }, + { + "name": "list_object_category", + "command": "object category list", + "result": "(?P\\w+)\\s+my_new_object_category", + "description": "Check that my_new_object_category object_category was added." + }, + { + "name": "add_scope", + "command": "object scope add $uuid_object_category scope1 --description \"scope1 description\"", + "result": "^$", + "description": "Add one scope to object category role", + "command_options": "" + }, + { + "name": "check_added_scope", + "command": "object scope list $uuid_object_category", + "result": "(?P\\w+)\\s+scope1\\s+scope1 description", + "description": "Check added scope.", + "command_options": "-c id -c name -c description -f value" + }, + + { + "name": "add_assignment", + "command": "object assignment add $uuid_object $uuid_object_category $uuid_object_scope", + "result": "^$", + "description": "Add a new assignment", + "command_options": "" + }, + { + "name": "check_added_assignment", + "command": "object assignment list $uuid_object $uuid_object_category", + "result": "$uuid_object_scope scope1", + "description": "Check added assignment.", + "command_options": "-c id -c name -f value" + }, + + { + "name": "delete_assignment", + "command": "object assignment delete $uuid_object $uuid_object_category $uuid_object_scope", + "result": "^$", + "description": "Delete the added assignment", + "command_options": "" + }, + { + "name": "check_deleted_assignment", + "command": "object assignment list $uuid_object $uuid_object_category", + "result": "(?!$uuid_object_scope)", + "description": "Check deleted assignment.", + "command_options": "-c id -f value" + }, + + { + "name": "delete_scope", + "command": "object scope delete $uuid_object_category $uuid_object_scope", + "result": "^$", + "description": "Delete one scope from object category role", + "command_options": "" + }, + { + "name": "delete_object_category", + "command": "object category delete $uuid_object_category", + "result": "^$", + "description": "Delete my_new_object_category object_category.", + "command_options": "" + }, + { + "name": "list_object_category", + "command": "object category list", + "result": "(?!$uuid_object_category)", + "description": "Check that my_new_object_category object_category was deleted." + }, + { + "name": "delete_authz_intra_extension", + "command": "intraextension delete $uuid_authz", + "result": "", + "description": "Delete the authz intra extension", + "command_options": "" + }, + { + "name": "delete_tenant", + "command": "tenant delete $uuid", + "result": "", + "description": "Delete the tenant alt_demo", + "command_options": "" + } + ], + "authz_and_admin": [ + { + "name": "list tenant", + "command": "tenant list", + "result": "(?!alt_demo)", + "description": "Check if tenant alt_demo is used." + }, + { + "name": "add tenant alt_demo", + "command": "tenant add alt_demo", + "result": "^$", + "description": "Add a new tenant", + "command_options": "" + }, + { + "name": "check tenant alt_demo", + "command": "tenant list", + "result": "(?P\\w+)\\s+alt_demo", + "description": "Check that tenant alt_demo has been correctly added" + }, + { + "name": "create_intraextension_authz", + "command": "intraextension create --policy_model policy_authz authz_test", + "result": "IntraExtension created: (?P\\w+)", + "description": "Create an authz intra extension", + "command_options": "" + }, + { + "name": "list_intraextension_authz", + "command": "intraextension list", + "result": "$uuid_authz", + "description": "Check the existence of that authz intra extension" + }, + { + "name": "create_intraextension_admin", + "command": "intraextension create --policy_model policy_admin admin_test", + "result": "IntraExtension created: (?P\\w+)", + "description": "Create an admin intra extension", + "command_options": "" + }, + { + "name": "list_intraextension_admin", + "command": "intraextension list", + "result": "$uuid_admin", + "description": "Check the existence of that admin intra extension" + }, + { + "name": "set_tenant_authz", + "command": "tenant set --authz $uuid_authz $uuid", + "result": "", + "description": "Connect the authz intra extension to the tenant demo", + "command_options": "" + }, + { + "name": "set_tenant_admin", + "command": "tenant set --admin $uuid_admin $uuid", + "result": "", + "description": "Connect the authz intra extension to the tenant alt_demo", + "command_options": "" + }, + { + "name": "check tenant alt_demo and authz ie", + "command": "tenant list", + "result": "alt_demo $uuid_authz", + "description": "Check that authz intra extension has been correctly added to the tenant.", + "command_options": "-c name -c intra_authz_extension_id -f value" + }, + { + "name": "check tenant alt_demo and admin ie", + "command": "tenant list", + "result": "$uuid_admin", + "description": "Check that admin intra extension has been correctly added to the tenant.", + "command_options": "-c intra_admin_extension_id -f value" + }, + { + "name": "select_authz_ie", + "command": "intraextension select $uuid_authz", + "result": "Select $uuid_authz IntraExtension.", + "description": "Select the authz IntraExtension", + "command_options": "" + }, + { + "name": "check_select_authz_ie", + "command": "intraextension show selected", + "result": "$uuid_authz", + "description": "Check the selected authz IntraExtension", + "command_options": "-c id -f value" + }, + { + "name": "add_object", + "command": "object add nova_server_1", + "result": "", + "description": "Add the new object category nova_server_1", + "command_options": "" + }, + { + "name": "list_object", + "command": "object list", + "result": "(?P\\w+)\\s+nova_server_1", + "description": "Check that nova_server_1 object was added." + }, + { + "name": "add_object_category", + "command": "object category add my_new_object_category", + "result": "", + "description": "Add the new object category my_new_object_category", + "command_options": "" + }, + { + "name": "list_object_category", + "command": "object category list", + "result": "(?P\\w+)\\s+my_new_object_category", + "description": "Check that my_new_object_category object_category was added." + }, + { + "name": "add_scope", + "command": "object scope add $uuid_object_category scope1 --description \"scope1 description\"", + "result": "^$", + "description": "Add one scope to object category role", + "command_options": "" + }, + { + "name": "check_added_scope", + "command": "object scope list $uuid_object_category", + "result": "(?P\\w+)\\s+scope1\\s+scope1 description", + "description": "Check added scope.", + "command_options": "-c id -c name -c description -f value" + }, + + { + "name": "add_assignment", + "command": "object assignment add $uuid_object $uuid_object_category $uuid_object_scope", + "result": "^$", + "description": "Add a new assignment", + "command_options": "" + }, + { + "name": "check_added_assignment", + "command": "object assignment list $uuid_object $uuid_object_category", + "result": "$uuid_object_scope scope1", + "description": "Check added assignment.", + "command_options": "-c id -c name -f value" + }, + + { + "name": "delete_assignment", + "command": "object assignment delete $uuid_object $uuid_object_category $uuid_object_scope", + "result": "^$", + "description": "Delete the added assignment", + "command_options": "" + }, + { + "name": "check_deleted_assignment", + "command": "object assignment list $uuid_object $uuid_object_category", + "result": "(?!$uuid_object_scope)", + "description": "Check deleted assignment.", + "command_options": "-c id -f value" + }, + + { + "name": "delete_scope", + "command": "object scope delete $uuid_object_category $uuid_object_scope", + "result": "^$", + "description": "Delete one scope from object category role", + "command_options": "" + }, + { + "name": "delete_object_category", + "command": "object category delete $uuid_object_category", + "result": "^$", + "description": "Delete my_new_object_category object_category.", + "command_options": "" + }, + { + "name": "list_object_category", + "command": "object category list", + "result": "(?!$uuid_object_category)", + "description": "Check that my_new_object_category object_category was deleted." + }, + { + "name": "delete_admin_intra_extension", + "command": "intraextension delete $uuid_admin", + "result": "", + "description": "Delete the admin intra extension", + "command_options": "" + }, + { + "name": "delete_authz_intra_extension", + "command": "intraextension delete $uuid_authz", + "result": "", + "description": "Delete the authz intra extension", + "command_options": "" + }, + { + "name": "delete_tenant", + "command": "tenant delete $uuid", + "result": "", + "description": "Delete the tenant alt_demo", + "command_options": "" + } + ] + } +} \ No newline at end of file -- cgit 1.2.3-korg