def _get_script_args(self, action_parameters): """ :param action_parameters: Action parameters. :type action_parameters: ``dict`` :return: (positional_args, named_args) :rtype: (``str``, ``dict``) """ # Lazy import to speed up import of this module from st2common.util import action_db as action_utils # TODO: return list for positional args, command classes should escape it # and convert it to string is_script_run_as_cmd = self.runner_parameters.get(RUNNER_COMMAND, None) pos_args = '' named_args = {} if is_script_run_as_cmd: pos_args = self.runner_parameters.get(RUNNER_COMMAND, '') named_args = action_parameters else: pos_args, named_args = action_utils.get_args( action_parameters, self.action) return pos_args, named_args
def _get_script_args(self, action_parameters): """ :param action_parameters: Action parameters. :type action_parameters: ``dict`` :return: (positional_args, named_args) :rtype: (``str``, ``dict``) """ # Lazy import to speed up import of this module from st2common.util import action_db as action_utils # TODO: return list for positional args, command classes should escape it # and convert it to string is_script_run_as_cmd = self.runner_parameters.get(RUNNER_COMMAND, None) pos_args = '' named_args = {} if is_script_run_as_cmd: pos_args = self.runner_parameters.get(RUNNER_COMMAND, '') named_args = action_parameters else: pos_args, named_args = action_utils.get_args(action_parameters, self.action) return pos_args, named_args
def test_get_args(self): params = {'actionstr': 'foo', 'actionint': 20, 'runnerint': 555} pos_args, named_args = action_db_utils.get_args( params, ActionDBUtilsTestCase.action_db) self.assertEqual(pos_args, '20 foo', 'Positional args not parsed correctly.') self.assertTrue('actionint' not in named_args) self.assertTrue('actionstr' not in named_args) self.assertEqual(named_args.get('runnerint'), 555)
def _get_script_args(self, action_parameters): is_script_run_as_cmd = self.runner_parameters.get(RUNNER_COMMAND, None) pos_args = '' named_args = {} if is_script_run_as_cmd: pos_args = self.runner_parameters.get(RUNNER_COMMAND, '') named_args = action_parameters else: pos_args, named_args = action_utils.get_args(action_parameters, self.action) return pos_args, named_args
def test_get_args(self): params = { 'actionstr': 'foo', 'actionint': 20, 'runnerint': 555 } pos_args, named_args = action_db_utils.get_args(params, ActionDBUtilsTestCase.action_db) self.assertEqual(pos_args, '20 foo', 'Positional args not parsed correctly.') self.assertTrue('actionint' not in named_args) self.assertTrue('actionstr' not in named_args) self.assertEqual(named_args.get('runnerint'), 555)
def _get_script_args(self, action_parameters): is_script_run_as_cmd = self.runner_parameters.get(RUNNER_COMMAND, None) pos_args = '' named_args = {} if is_script_run_as_cmd: pos_args = self.runner_parameters.get(RUNNER_COMMAND, '') named_args = action_parameters else: pos_args, named_args = action_utils.get_args( action_parameters, self.action) return pos_args, named_args
def test_get_args(self): params = { 'actionstr': 'foo', 'actionint': 20, 'runnerint': 555 } pos_args, named_args = action_db_utils.get_args(params, ActionDBUtilsTestCase.action_db) self.assertListEqual(pos_args, ['20', '', 'foo', '', '', '', ''], 'Positional args not parsed correctly.') self.assertTrue('actionint' not in named_args) self.assertTrue('actionstr' not in named_args) self.assertEqual(named_args.get('runnerint'), 555) # Test serialization for different positional argument types and values # Test all the values provided params = { 'actionint': 1, 'actionfloat': 1.5, 'actionstr': 'string value', 'actionbool': True, 'actionlist': ['foo', 'bar', 'baz'], 'actionobject': {'a': 1, 'b': '2'}, } expected_pos_args = [ '1', '1.5', 'string value', '1', 'foo,bar,baz', '{"a": 1, "b": "2"}', '' ] pos_args, _ = action_db_utils.get_args(params, ActionDBUtilsTestCase.action_db) self.assertListEqual(pos_args, expected_pos_args, 'Positional args not parsed / serialized correctly.') params = { 'actionint': 1, 'actionfloat': 1.5, 'actionstr': 'string value', 'actionbool': False, 'actionlist': [], 'actionobject': {'a': 1, 'b': '2'}, } expected_pos_args = [ '1', '1.5', 'string value', '0', '', '{"a": 1, "b": "2"}', '' ] pos_args, _ = action_db_utils.get_args(params, ActionDBUtilsTestCase.action_db) self.assertListEqual(pos_args, expected_pos_args, 'Positional args not parsed / serialized correctly.') # Test none values params = { 'actionint': None, 'actionfloat': None, 'actionstr': None, 'actionbool': None, 'actionlist': None, 'actionobject': None, } expected_pos_args = [ '', '', '', '', '', '', '' ] pos_args, _ = action_db_utils.get_args(params, ActionDBUtilsTestCase.action_db) self.assertListEqual(pos_args, expected_pos_args, 'Positional args not parsed / serialized correctly.') # Test unicode values params = { 'actionstr': 'bar č š hello đ č p ž Ž a 💩😁', 'actionint': 20, 'runnerint': 555 } expected_pos_args = [ '20', '', u'bar č š hello đ č p ž Ž a 💩😁', '', '', '', '' ] pos_args, named_args = action_db_utils.get_args(params, ActionDBUtilsTestCase.action_db) self.assertListEqual(pos_args, expected_pos_args, 'Positional args not parsed correctly.') self.assertTrue('actionint' not in named_args) self.assertTrue('actionstr' not in named_args) self.assertEqual(named_args.get('runnerint'), 555)
def test_get_args(self): params = {"actionstr": "foo", "actionint": 20, "runnerint": 555} pos_args, named_args = action_db_utils.get_args( params, ActionDBUtilsTestCase.action_db) self.assertListEqual( pos_args, ["20", "", "foo", "", "", "", "", ""], "Positional args not parsed correctly.", ) self.assertNotIn("actionint", named_args) self.assertNotIn("actionstr", named_args) self.assertEqual(named_args.get("runnerint"), 555) # Test serialization for different positional argument types and values # Test all the values provided params = { "actionint": 1, "actionfloat": 1.5, "actionstr": "string value", "actionbool": True, "actionarray": ["foo", "bar", "baz", "qux"], "actionlist": ["foo", "bar", "baz"], "actionobject": { "a": 1, "b": "2" }, } expected_pos_args = [ "1", "1.5", "string value", "1", "foo,bar,baz,qux", "foo,bar,baz", '{"a":1,"b":"2"}', "", ] pos_args, _ = action_db_utils.get_args(params, ActionDBUtilsTestCase.action_db) self.assertListEqual( pos_args, expected_pos_args, "Positional args not parsed / serialized correctly.", ) params = { "actionint": 1, "actionfloat": 1.5, "actionstr": "string value", "actionbool": False, "actionarray": [], "actionlist": [], "actionobject": { "a": 1, "b": "2" }, } expected_pos_args = [ "1", "1.5", "string value", "0", "", "", '{"a":1,"b":"2"}', "", ] pos_args, _ = action_db_utils.get_args(params, ActionDBUtilsTestCase.action_db) self.assertListEqual( pos_args, expected_pos_args, "Positional args not parsed / serialized correctly.", ) # Test none values params = { "actionint": None, "actionfloat": None, "actionstr": None, "actionbool": None, "actionarray": None, "actionlist": None, "actionobject": None, } expected_pos_args = ["", "", "", "", "", "", "", ""] pos_args, _ = action_db_utils.get_args(params, ActionDBUtilsTestCase.action_db) self.assertListEqual( pos_args, expected_pos_args, "Positional args not parsed / serialized correctly.", ) # Test unicode values params = { "actionstr": "bar č š hello đ č p ž Ž a 💩😁", "actionint": 20, "runnerint": 555, } expected_pos_args = [ "20", "", "bar č š hello đ č p ž Ž a 💩😁", "", "", "", "", "", ] pos_args, named_args = action_db_utils.get_args( params, ActionDBUtilsTestCase.action_db) self.assertListEqual(pos_args, expected_pos_args, "Positional args not parsed correctly.") # Test arrays and lists with values of different types params = { "actionarray": [None, False, 1, 4.2e1, "1e3", "foo"], "actionlist": [None, False, 1, 73e-2, "1e2", "bar"], } expected_pos_args = [ "", "", "", "", "None,False,1,42.0,1e3,foo", "None,False,1,0.73,1e2,bar", "", "", ] pos_args, _ = action_db_utils.get_args(params, ActionDBUtilsTestCase.action_db) self.assertListEqual( pos_args, expected_pos_args, "Positional args not parsed / serialized correctly.", ) self.assertNotIn("actionint", named_args) self.assertNotIn("actionstr", named_args) self.assertEqual(named_args.get("runnerint"), 555)