diff --git a/sros2/test/policies/permissions/add_two_ints/permissions.xml b/sros2/test/policies/permissions/add_two_ints/permissions.xml new file mode 100644 index 00000000..9d811774 --- /dev/null +++ b/sros2/test/policies/permissions/add_two_ints/permissions.xml @@ -0,0 +1,106 @@ + + + + CN=/add_two_ints_server + + 2013-10-26T00:00:00 + 2023-10-26T22:45:30 + + + + 0 + + + + rq/add_two_ints_server/describe_parametersRequest + rq/add_two_ints_server/get_parameter_typesRequest + rq/add_two_ints_server/get_parametersRequest + rq/add_two_ints_server/list_parametersRequest + rq/add_two_ints_server/set_parametersRequest + rq/add_two_ints_server/set_parameters_atomicallyRequest + rr/add_two_intsReply + rr/add_two_ints_server/describe_parametersReply + rr/add_two_ints_server/get_parameter_typesReply + rr/add_two_ints_server/get_parametersReply + rr/add_two_ints_server/list_parametersReply + rr/add_two_ints_server/set_parametersReply + rr/add_two_ints_server/set_parameters_atomicallyReply + rt/parameter_events + rt/rosout + + + + + rq/add_two_intsRequest + rq/add_two_ints_server/describe_parametersRequest + rq/add_two_ints_server/get_parameter_typesRequest + rq/add_two_ints_server/get_parametersRequest + rq/add_two_ints_server/list_parametersRequest + rq/add_two_ints_server/set_parametersRequest + rq/add_two_ints_server/set_parameters_atomicallyRequest + rr/add_two_ints_server/describe_parametersReply + rr/add_two_ints_server/get_parameter_typesReply + rr/add_two_ints_server/get_parametersReply + rr/add_two_ints_server/list_parametersReply + rr/add_two_ints_server/set_parametersReply + rr/add_two_ints_server/set_parameters_atomicallyReply + rt/clock + rt/parameter_events + + + + DENY + + + CN=/add_two_ints_client + + 2013-10-26T00:00:00 + 2023-10-26T22:45:30 + + + + 0 + + + + rq/add_two_intsRequest + rq/add_two_ints_client/describe_parametersRequest + rq/add_two_ints_client/get_parameter_typesRequest + rq/add_two_ints_client/get_parametersRequest + rq/add_two_ints_client/list_parametersRequest + rq/add_two_ints_client/set_parametersRequest + rq/add_two_ints_client/set_parameters_atomicallyRequest + rr/add_two_ints_client/describe_parametersReply + rr/add_two_ints_client/get_parameter_typesReply + rr/add_two_ints_client/get_parametersReply + rr/add_two_ints_client/list_parametersReply + rr/add_two_ints_client/set_parametersReply + rr/add_two_ints_client/set_parameters_atomicallyReply + rt/parameter_events + rt/rosout + + + + + rq/add_two_ints_client/describe_parametersRequest + rq/add_two_ints_client/get_parameter_typesRequest + rq/add_two_ints_client/get_parametersRequest + rq/add_two_ints_client/list_parametersRequest + rq/add_two_ints_client/set_parametersRequest + rq/add_two_ints_client/set_parameters_atomicallyRequest + rr/add_two_intsReply + rr/add_two_ints_client/describe_parametersReply + rr/add_two_ints_client/get_parameter_typesReply + rr/add_two_ints_client/get_parametersReply + rr/add_two_ints_client/list_parametersReply + rr/add_two_ints_client/set_parametersReply + rr/add_two_ints_client/set_parameters_atomicallyReply + rt/clock + rt/parameter_events + + + + DENY + + + diff --git a/sros2/test/policies/permissions/minimal_action/permissions.xml b/sros2/test/policies/permissions/minimal_action/permissions.xml new file mode 100644 index 00000000..5f700361 --- /dev/null +++ b/sros2/test/policies/permissions/minimal_action/permissions.xml @@ -0,0 +1,118 @@ + + + + CN=/minimal_action_server + + 2013-10-26T00:00:00 + 2023-10-26T22:45:30 + + + + 0 + + + + rq/minimal_action_server/describe_parametersRequest + rq/minimal_action_server/get_parameter_typesRequest + rq/minimal_action_server/get_parametersRequest + rq/minimal_action_server/list_parametersRequest + rq/minimal_action_server/set_parametersRequest + rq/minimal_action_server/set_parameters_atomicallyRequest + rr/fibonacci/_action/cancel_goalReply + rr/fibonacci/_action/get_resultReply + rr/fibonacci/_action/send_goalReply + rt/fibonacci/_action/feedback + rt/fibonacci/_action/status + rr/minimal_action_server/describe_parametersReply + rr/minimal_action_server/get_parameter_typesReply + rr/minimal_action_server/get_parametersReply + rr/minimal_action_server/list_parametersReply + rr/minimal_action_server/set_parametersReply + rr/minimal_action_server/set_parameters_atomicallyReply + rt/parameter_events + rt/rosout + + + + + rq/fibonacci/_action/cancel_goalRequest + rq/fibonacci/_action/get_resultRequest + rq/fibonacci/_action/send_goalRequest + rq/minimal_action_server/describe_parametersRequest + rq/minimal_action_server/get_parameter_typesRequest + rq/minimal_action_server/get_parametersRequest + rq/minimal_action_server/list_parametersRequest + rq/minimal_action_server/set_parametersRequest + rq/minimal_action_server/set_parameters_atomicallyRequest + rr/minimal_action_server/describe_parametersReply + rr/minimal_action_server/get_parameter_typesReply + rr/minimal_action_server/get_parametersReply + rr/minimal_action_server/list_parametersReply + rr/minimal_action_server/set_parametersReply + rr/minimal_action_server/set_parameters_atomicallyReply + rt/clock + rt/parameter_events + + + + DENY + + + CN=/minimal_action_client + + 2013-10-26T00:00:00 + 2023-10-26T22:45:30 + + + + 0 + + + + rq/fibonacci/_action/cancel_goalRequest + rq/fibonacci/_action/get_resultRequest + rq/fibonacci/_action/send_goalRequest + rq/minimal_action_client/describe_parametersRequest + rq/minimal_action_client/get_parameter_typesRequest + rq/minimal_action_client/get_parametersRequest + rq/minimal_action_client/list_parametersRequest + rq/minimal_action_client/set_parametersRequest + rq/minimal_action_client/set_parameters_atomicallyRequest + rr/minimal_action_client/describe_parametersReply + rr/minimal_action_client/get_parameter_typesReply + rr/minimal_action_client/get_parametersReply + rr/minimal_action_client/list_parametersReply + rr/minimal_action_client/set_parametersReply + rr/minimal_action_client/set_parameters_atomicallyReply + rt/parameter_events + rt/rosout + + + + + rq/minimal_action_client/describe_parametersRequest + rq/minimal_action_client/get_parameter_typesRequest + rq/minimal_action_client/get_parametersRequest + rq/minimal_action_client/list_parametersRequest + rq/minimal_action_client/set_parametersRequest + rq/minimal_action_client/set_parameters_atomicallyRequest + rr/fibonacci/_action/cancel_goalReply + rr/fibonacci/_action/get_resultReply + rr/fibonacci/_action/send_goalReply + rt/fibonacci/_action/feedback + rt/fibonacci/_action/status + rr/minimal_action_client/describe_parametersReply + rr/minimal_action_client/get_parameter_typesReply + rr/minimal_action_client/get_parametersReply + rr/minimal_action_client/list_parametersReply + rr/minimal_action_client/set_parametersReply + rr/minimal_action_client/set_parameters_atomicallyReply + rt/clock + rt/parameter_events + + + + DENY + + + diff --git a/sros2/test/policies/permissions.xml b/sros2/test/policies/permissions/sample/permissions.xml similarity index 100% rename from sros2/test/policies/permissions.xml rename to sros2/test/policies/permissions/sample/permissions.xml diff --git a/sros2/test/policies/permissions/talker_listener/permissions.xml b/sros2/test/policies/permissions/talker_listener/permissions.xml new file mode 100644 index 00000000..f7065f5f --- /dev/null +++ b/sros2/test/policies/permissions/talker_listener/permissions.xml @@ -0,0 +1,104 @@ + + + + CN=/talker + + 2013-10-26T00:00:00 + 2023-10-26T22:45:30 + + + + 0 + + + + rq/talker/describe_parametersRequest + rq/talker/get_parameter_typesRequest + rq/talker/get_parametersRequest + rq/talker/list_parametersRequest + rq/talker/set_parametersRequest + rq/talker/set_parameters_atomicallyRequest + rr/talker/describe_parametersReply + rr/talker/get_parameter_typesReply + rr/talker/get_parametersReply + rr/talker/list_parametersReply + rr/talker/set_parametersReply + rr/talker/set_parameters_atomicallyReply + rt/chatter + rt/parameter_events + rt/rosout + + + + + rq/talker/describe_parametersRequest + rq/talker/get_parameter_typesRequest + rq/talker/get_parametersRequest + rq/talker/list_parametersRequest + rq/talker/set_parametersRequest + rq/talker/set_parameters_atomicallyRequest + rr/talker/describe_parametersReply + rr/talker/get_parameter_typesReply + rr/talker/get_parametersReply + rr/talker/list_parametersReply + rr/talker/set_parametersReply + rr/talker/set_parameters_atomicallyReply + rt/clock + rt/parameter_events + + + + DENY + + + CN=/listener + + 2013-10-26T00:00:00 + 2023-10-26T22:45:30 + + + + 0 + + + + rq/listener/describe_parametersRequest + rq/listener/get_parameter_typesRequest + rq/listener/get_parametersRequest + rq/listener/list_parametersRequest + rq/listener/set_parametersRequest + rq/listener/set_parameters_atomicallyRequest + rr/listener/describe_parametersReply + rr/listener/get_parameter_typesReply + rr/listener/get_parametersReply + rr/listener/list_parametersReply + rr/listener/set_parametersReply + rr/listener/set_parameters_atomicallyReply + rt/parameter_events + rt/rosout + + + + + rq/listener/describe_parametersRequest + rq/listener/get_parameter_typesRequest + rq/listener/get_parametersRequest + rq/listener/list_parametersRequest + rq/listener/set_parametersRequest + rq/listener/set_parameters_atomicallyRequest + rr/listener/describe_parametersReply + rr/listener/get_parameter_typesReply + rr/listener/get_parametersReply + rr/listener/list_parametersReply + rr/listener/set_parametersReply + rr/listener/set_parameters_atomicallyReply + rt/chatter + rt/clock + rt/parameter_events + + + + DENY + + + diff --git a/sros2/test/policies/policy_to_permissions.py b/sros2/test/policies/policy_to_permissions.py index c6cc7dfb..bf78ee40 100644 --- a/sros2/test/policies/policy_to_permissions.py +++ b/sros2/test/policies/policy_to_permissions.py @@ -12,7 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -import os +import glob +from pathlib import Path from lxml import etree @@ -32,21 +33,29 @@ permissions_xsl = etree.XSLT(etree.parse(permissions_xsl_path)) permissions_xsd = etree.XMLSchema(etree.parse(permissions_xsd_path)) -# Get policy -policy_xml_path = 'sample.policy.xml' -policy_xml = etree.parse(policy_xml_path) -policy_xml.xinclude() +for policy_xml_path in glob.glob('*.policy.xml'): -# Validate policy schema -policy_xsd.assertValid(policy_xml) + # Get policy + policy_xml = etree.parse(policy_xml_path) + policy_xml.xinclude() -# Transform policy -permissions_xml = permissions_xsl(policy_xml) + # Validate policy schema + policy_xsd.assertValid(policy_xml) -# Validate permissions schema -permissions_xsd.assertValid(permissions_xml) + # Transform policy + permissions_xml = permissions_xsl(policy_xml) -# Output permissions -permissions_xml_path = os.path.join('permissions.xml') -with open(permissions_xml_path, 'w') as f: - f.write(etree.tostring(permissions_xml, pretty_print=True).decode()) + # Validate permissions schema + permissions_xsd.assertValid(permissions_xml) + + # Get permissions directory + policy_name = Path(policy_xml_path).name + index_of_dot = policy_name.index('.') + policy_name = policy_name[:index_of_dot] + permissions_dir = Path('permissions') / policy_name + permissions_dir.mkdir(parents=True, exist_ok=True) + + # Output permissions + permissions_xml_path = permissions_dir / 'permissions.xml' + with open(permissions_xml_path, 'w') as f: + f.write(etree.tostring(permissions_xml, pretty_print=True).decode()) diff --git a/sros2/test/test_policy_to_permissions.py b/sros2/test/test_policy_to_permissions.py index 487e8da6..2b5c3942 100644 --- a/sros2/test/test_policy_to_permissions.py +++ b/sros2/test/test_policy_to_permissions.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -import os +from pathlib import Path from lxml import etree @@ -35,9 +35,9 @@ def test_policy_to_permissions(): permissions_xsd = etree.XMLSchema(etree.parse(permissions_xsd_path)) # Get policy - test_dir = os.path.dirname(os.path.abspath(__file__)) - policy_xml_path = os.path.join(test_dir, 'policies', 'sample.policy.xml') - policy_xml = etree.parse(policy_xml_path) + test_dir = Path(__file__).resolve().parent + policy_xml_path = test_dir / 'policies' / 'sample.policy.xml' + policy_xml = etree.parse(str(policy_xml_path)) policy_xml.xinclude() # Validate policy schema @@ -50,8 +50,8 @@ def test_policy_to_permissions(): permissions_xsd.assertValid(permissions_xml) # Assert expected permissions - permissions_xml_path = os.path.join(test_dir, 'policies', 'permissions.xml') - with open(permissions_xml_path) as f: + permissions_xml_path = test_dir / 'policies' / 'permissions' / 'sample' / 'permissions.xml' + with permissions_xml_path.open() as f: expected = f.read() actual = etree.tostring(permissions_xml, pretty_print=True).decode() assert actual == expected