def test_parse_quotes(self): cmd1 = 'account set --subscription \'Visual Studeio enterprizse (msft)\'' args1 = parse_quotes(cmd1) self.assertEqual( args1, ['account', 'set', '--subscription', 'Visual Studeio enterprizse (msft)']) cmd2 = 'account set --subscription \"Visual Studeio enterprizse (msft)\"' args2 = parse_quotes(cmd2) self.assertEqual( args2, ['account', 'set', '--subscription', 'Visual Studeio enterprizse (msft)']) cmd3 = 'account set --subscription' args3 = parse_quotes(cmd3) self.assertEqual(args3, ['account', 'set', '--subscription']) cmd4 = 'word1 "quote1" word2 "quote is 3" words are fun' args4 = parse_quotes(cmd4) self.assertEqual( args4, ['word1', "quote1", 'word2', "quote is 3", 'words', 'are', 'fun']) cmd5 = '"??[?resourceGroup == "CJ101"].name"' args5 = parse_quotes(cmd5) self.assertEqual( args5, ['??[?resourceGroup == CJ101].name'] )
def test_parse_quotes(self): cmd1 = 'account set --subscription \'Visual Studeio enterprizse (msft)\'' args1 = parse_quotes(cmd1) self.assertEqual(args1, [ 'account', 'set', '--subscription', 'Visual Studeio enterprizse (msft)' ]) cmd2 = 'account set --subscription \"Visual Studeio enterprizse (msft)\"' args2 = parse_quotes(cmd2) self.assertEqual(args2, [ 'account', 'set', '--subscription', 'Visual Studeio enterprizse (msft)' ]) cmd3 = 'account set --subscription' args3 = parse_quotes(cmd3) self.assertEqual(args3, ['account', 'set', '--subscription']) cmd4 = 'word1 "quote1" word2 "quote is 3" words are fun' args4 = parse_quotes(cmd4) self.assertEqual( args4, ['word1', "quote1", 'word2', "quote is 3", 'words', 'are', 'fun']) cmd5 = '"??[?resourceGroup == "CJ101"].name"' args5 = parse_quotes(cmd5) self.assertEqual(args5, ['??[?resourceGroup == CJ101].name'])
def test_string_replacement(self): # tests that the query replaces the values in the command args = 'vm show -g "??group" -n "??name"' args = parse_quotes(args) self.shell.last.result = {'group': 'mygroup', 'name': 'myname'} flag = self.shell.handle_jmespath_query(args) self.assertTrue(flag) results = self.stream.getvalue().split(os.linesep) self.assertEqual(results[0], '"vm" "show" "-g" "mygroup" "-n" "myname"')
def test_query_result_spaces(self): # tests a singleton example args = 'vm show -g "??group" -n "??name"' args = parse_quotes(args) self.shell.last.result = {'group': 'mygroup', 'name': 'my name'} flag = self.shell.handle_jmespath_query(args) self.assertTrue(flag) results = self.stream.getvalue().split(os.linesep) self.assertEqual(results[0], '"vm" "show" "-g" "mygroup" "-n" "my name"')
def test_usage_error(self): # tests case when multiple args but first arg starts with query args = '??[].group foo bar' args = parse_quotes(args) self.shell.last.result = {'group': 'mygroup', 'name': 'myname'} flag = self.shell.handle_jmespath_query(args) self.assertTrue(flag) self.assertEqual( self.stream.getvalue().strip(), "Usage Error: " + os.linesep + "1. Use ?? stand-alone to display previous result with optional filtering " "(Ex: ??[jmespath query])" + os.linesep + "OR:" + os.linesep + "2. Use ?? to query the previous result for argument values " "(Ex: group show --name ??[jmespath query])")
def test_errors(self): # tests invalid query args = 'vm show -g "??[0].group" -n "??[1].name"' args = parse_quotes(args) self.shell.last.result = [{ 'group': 'mygroup', 'name': 'myname' }, { 'group': 'mygroup3', }] flag = self.shell.handle_jmespath_query(args) self.assertTrue(flag) results = self.stream.getvalue().split(os.linesep) self.assertEqual(results[0], '"vm" "show" "-g" "mygroup" "-n" "None"')
def test_spaces_with_equal(self): # tests quotes with spaces args = 'foo doo -bar="??[?group == \'myg roup\'].name"' args = parse_quotes(args) self.shell.last.result = [{ 'group': 'myg roup', 'name': 'fred' }, { 'group': 'mygroup3', 'name': 'myname3' }] self.shell.handle_jmespath_query(args) results = self.stream.getvalue().split(os.linesep) self.assertEqual(results[0], '"foo" "doo" "-bar=[\'fred\']"')
def test_print_list_replacement(self): # tests that the query replaces the values in the command args = '??[].group' args = parse_quotes(args) self.shell.last.result = [{ 'group': 'mygroup', 'name': 'myname' }, { 'group': 'mygroup2', 'name': 'myname2' }, { 'group': 'mygroup3', 'name': 'myname3' }] flag = self.shell.handle_jmespath_query(args) self.assertTrue(flag) self.assertEqual(json.loads(self.stream.getvalue()), ['mygroup', 'mygroup2', 'mygroup3'])
def test_list_replacement(self): # tests that the query replaces the values in the command args = 'foo update --set blah=??[].group' args = parse_quotes(args) self.shell.last.result = [{ 'group': 'mygroup', 'name': 'myname' }, { 'group': 'mygroup2', 'name': 'myname2' }, { 'group': 'mygroup3', 'name': 'myname3' }] flag = self.shell.handle_jmespath_query(args) self.assertTrue(flag) results = self.stream.getvalue().strip().split(os.linesep) self.assertTrue(len(results) == 1) self.assertEqual( results[0], '"foo" "update" "--set" "blah=[\'mygroup\', \'mygroup2\', \'mygroup3\']"' )