def test_get_input_dict_from_string(self): self.assertDictEqual( { 'param1': utils.NotDefined, 'param2': 2, 'param3': 'var3' }, utils.get_dict_from_string('param1, param2=2, param3="var3"')) self.assertDictEqual({}, utils.get_dict_from_string(''))
def test_get_input_dict_from_string(self): self.assertDictEqual( { 'param1': utils.NotDefined, 'param2': 2, 'param3': 'var3' }, utils.get_dict_from_string('param1, param2=2, param3="var3"') ) self.assertDictEqual({}, utils.get_dict_from_string(''))
def test_get_list_workflows_with_pagination(self): resp, body = self.client.get_list_obj( 'workflows?limit=1&sort_keys=name&sort_dirs=desc') self.assertEqual(200, resp.status) self.assertEqual(1, len(body['workflows'])) self.assertIn('next', body) name_1 = body['workflows'][0].get('name') next = body.get('next') param_dict = utils.get_dict_from_string(next.split('?')[1], delimiter='&') # NOTE: 'id' gets included into sort keys automatically with 'desc' # sorting to avoid pagination looping. expected_sub_dict = { 'limit': 1, 'sort_keys': 'name,id', 'sort_dirs': 'desc,asc' } self.assertDictContainsSubset(expected_sub_dict, param_dict) # Query again using 'next' hint url_param = next.split('/')[-1] resp, body = self.client.get_list_obj(url_param) self.assertEqual(200, resp.status) self.assertEqual(1, len(body['workflows'])) name_2 = body['workflows'][0].get('name') self.assertGreater(name_1, name_2)
def validate_input(definition, input, spec=None): input_param_names = copy.deepcopy(list((input or {}).keys())) missing_param_names = [] spec_input = (spec.get_input() if spec else utils.get_dict_from_string(definition.input)) for p_name, p_value in six.iteritems(spec_input): if p_value is utils.NotDefined and p_name not in input_param_names: missing_param_names.append(p_name) if p_name in input_param_names: input_param_names.remove(p_name) if missing_param_names or input_param_names: msg = 'Invalid input [name=%s, class=%s' msg_props = [definition.name, spec.__class__.__name__] if missing_param_names: msg += ', missing=%s' msg_props.append(missing_param_names) if input_param_names: msg += ', unexpected=%s' msg_props.append(input_param_names) msg += ']' raise exc.InputException( msg % tuple(msg_props) ) else: utils.merge_dicts(input, spec_input, overwrite=False)
def test_get_list_actions_with_pagination(self): resp, body = self.client.get_list_obj( 'actions?limit=1&sort_keys=name&sort_dirs=desc') self.assertEqual(200, resp.status) self.assertEqual(1, len(body['actions'])) self.assertIn('next', body) name_1 = body['actions'][0].get('name') next = body.get('next') param_dict = utils.get_dict_from_string(next.split('?')[1], delimiter='&') expected_sub_dict = { 'limit': 1, 'sort_keys': 'name', 'sort_dirs': 'desc' } self.assertDictContainsSubset(expected_sub_dict, param_dict) # Query again using 'next' hint url_param = next.split('/')[-1] resp, body = self.client.get_list_obj(url_param) self.assertEqual(200, resp.status) self.assertEqual(1, len(body['actions'])) name_2 = body['actions'][0].get('name') self.assertGreater(name_1, name_2)
def test_get_list_actions_with_pagination(self): resp, body = self.client.get_list_obj( 'actions?limit=1&sort_keys=name&sort_dirs=desc' ) self.assertEqual(200, resp.status) self.assertEqual(1, len(body['actions'])) self.assertIn('next', body) name_1 = body['actions'][0].get('name') next = body.get('next') param_dict = utils.get_dict_from_string( next.split('?')[1], delimiter='&' ) expected_sub_dict = { 'limit': 1, 'sort_keys': 'name', 'sort_dirs': 'desc' } self.assertDictContainsSubset(expected_sub_dict, param_dict) # Query again using 'next' hint url_param = next.split('/')[-1] resp, body = self.client.get_list_obj(url_param) self.assertEqual(200, resp.status) self.assertEqual(1, len(body['actions'])) name_2 = body['actions'][0].get('name') self.assertGreater(name_1, name_2)
def test_get_input_dict_from_input_string(self): input_string = 'param1, param2=2, param3="var3"' input_dict = utils.get_dict_from_string(input_string) self.assertIn('param1', input_dict) self.assertIn('param2', input_dict) self.assertIn('param3', input_dict) self.assertEqual(2, input_dict.get('param2')) self.assertEqual('var3', input_dict.get('param3')) self.assertIs(input_dict.get('param1'), utils.NotDefined)
def validate_input(self, input_dict): # NOTE(kong): Don't validate action input if action initialization # method contains ** argument. if '**' in self.action_def.input: return expected_input = utils.get_dict_from_string(self.action_def.input) engine_utils.validate_input(expected_input, input_dict, self.action_def.name, self.action_def.action_class)
def test_get_list_executions_with_pagination(self): resp, body = self.client.create_execution(self.direct_wf_name) exec_id_1 = body['id'] self.assertEqual(201, resp.status) resp, body = self.client.create_execution(self.direct_wf2_name) exec_id_2 = body['id'] self.assertEqual(201, resp.status) resp, body = self.client.get_list_obj('executions') self.assertIn(exec_id_1, [ex['id'] for ex in body['executions']]) self.assertIn(exec_id_2, [ex['id'] for ex in body['executions']]) resp, body = self.client.get_list_obj( 'executions?limit=1&sort_keys=workflow_name&sort_dirs=asc' ) self.assertEqual(200, resp.status) self.assertEqual(1, len(body['executions'])) self.assertIn('next', body) workflow_name_1 = body['executions'][0].get('workflow_name') next = body.get('next') param_dict = utils.get_dict_from_string( next.split('?')[1], delimiter='&' ) # NOTE: 'id' gets included into sort keys automatically with 'desc' # sorting to avoid pagination looping. expected_dict = { 'limit': 1, 'sort_keys': 'workflow_name,id', 'sort_dirs': 'asc,asc', } self.assertTrue( set(expected_dict.items()).issubset(set(param_dict.items())) ) # Query again using 'next' link url_param = next.split('/')[-1] resp, body = self.client.get_list_obj(url_param) self.assertEqual(200, resp.status) self.assertEqual(1, len(body['executions'])) workflow_name_2 = body['executions'][0].get('workflow_name') self.assertGreater(workflow_name_2, workflow_name_1)
def validate_input(self, input_dict): # NOTE(kong): Don't validate action input if action initialization # method contains ** argument. if '**' in self.action_def.input: return expected_input = utils.get_dict_from_string(self.action_def.input) engine_utils.validate_input( expected_input, input_dict, self.action_def.name, self.action_def.action_class )
def test_get_list_executions_with_pagination(self): resp, body = self.client.create_execution(self.direct_wf_name) exec_id_1 = body['id'] self.assertEqual(201, resp.status) resp, body = self.client.create_execution(self.direct_wf2_name) exec_id_2 = body['id'] self.assertEqual(201, resp.status) resp, body = self.client.get_list_obj('executions') self.assertIn(exec_id_1, [ex['id'] for ex in body['executions']]) self.assertIn(exec_id_2, [ex['id'] for ex in body['executions']]) resp, body = self.client.get_list_obj( 'executions?limit=1&sort_keys=workflow_name&sort_dirs=asc') self.assertEqual(200, resp.status) self.assertEqual(1, len(body['executions'])) self.assertIn('next', body) workflow_name_1 = body['executions'][0].get('workflow_name') next = body.get('next') param_dict = utils.get_dict_from_string(next.split('?')[1], delimiter='&') # NOTE: 'id' gets included into sort keys automatically with 'desc' # sorting to avoid pagination looping. expected_dict = { 'limit': 1, 'sort_keys': 'workflow_name,id', 'sort_dirs': 'asc,asc', } self.assertTrue( set(expected_dict.items()).issubset(set(param_dict.items()))) # Query again using 'next' link url_param = next.split('/')[-1] resp, body = self.client.get_list_obj(url_param) self.assertEqual(200, resp.status) self.assertEqual(1, len(body['executions'])) workflow_name_2 = body['executions'][0].get('workflow_name') self.assertGreater(workflow_name_2, workflow_name_1)
def test_get_all_pagination(self): resp = self.app.get("/v2/executions?limit=1&sort_keys=id,workflow_name" "&sort_dirs=asc,desc") self.assertEqual(200, resp.status_int) self.assertIn("next", resp.json) self.assertEqual(1, len(resp.json["executions"])) self.assertDictEqual(WF_EX_JSON_WITH_DESC, resp.json["executions"][0]) param_dict = utils.get_dict_from_string(resp.json["next"].split("?")[1], delimiter="&") expected_dict = { "marker": "123e4567-e89b-12d3-a456-426655440000", "limit": 1, "sort_keys": "id,workflow_name", "sort_dirs": "asc,desc", } self.assertDictEqual(expected_dict, param_dict)
def test_get_all_pagination(self): resp = self.app.get('/v2/executions?limit=1&sort_keys=id,workflow_name' '&sort_dirs=asc,desc') self.assertEqual(200, resp.status_int) self.assertIn('next', resp.json) self.assertEqual(1, len(resp.json['executions'])) self.assertDictEqual(WF_EX_JSON_WITH_DESC, resp.json['executions'][0]) param_dict = utils.get_dict_from_string( resp.json['next'].split('?')[1], delimiter='&') expected_dict = { 'marker': '123e4567-e89b-12d3-a456-426655440000', 'limit': 1, 'sort_keys': 'id,workflow_name', 'sort_dirs': 'asc,desc' } self.assertDictEqual(expected_dict, param_dict)
def test_get_all_pagination(self): resp = self.app.get('/v2/actions?limit=1&sort_keys=id,name') self.assertEqual(200, resp.status_int) self.assertIn('next', resp.json) self.assertEqual(1, len(resp.json['actions'])) self.assertDictEqual(ACTION, resp.json['actions'][0]) param_dict = utils.get_dict_from_string( resp.json['next'].split('?')[1], delimiter='&') expected_dict = { 'marker': '123e4567-e89b-12d3-a456-426655440000', 'limit': 1, 'sort_keys': 'id,name', 'sort_dirs': 'asc,asc' } self.assertTrue( set(expected_dict.items()).issubset(set(param_dict.items())))
def test_get_all_pagination(self): resp = self.app.get( '/v2/executions?limit=1&sort_keys=id,workflow_name' '&sort_dirs=asc,desc') self.assertEqual(200, resp.status_int) self.assertIn('next', resp.json) self.assertEqual(1, len(resp.json['executions'])) self.assertDictEqual(WF_EX_JSON_WITH_DESC, resp.json['executions'][0]) param_dict = utils.get_dict_from_string( resp.json['next'].split('?')[1], delimiter='&' ) expected_dict = { 'marker': '123e4567-e89b-12d3-a456-426655440000', 'limit': 1, 'sort_keys': 'id,workflow_name', 'sort_dirs': 'asc,desc' } self.assertDictEqual(expected_dict, param_dict)
def test_get_list_workflows_with_pagination(self): resp, body = self.client.get_list_obj( 'workflows?limit=1&sort_keys=name&sort_dirs=desc' ) self.assertEqual(200, resp.status) self.assertEqual(1, len(body['workflows'])) self.assertIn('next', body) name_1 = body['workflows'][0].get('name') next = body.get('next') param_dict = utils.get_dict_from_string( next.split('?')[1], delimiter='&' ) # NOTE: 'id' gets included into sort keys automatically with 'desc' # sorting to avoid pagination looping. expected_sub_dict = { 'limit': 1, 'sort_keys': 'name,id', 'sort_dirs': 'desc,asc' } self.assertDictContainsSubset(expected_sub_dict, param_dict) # Query again using 'next' hint url_param = next.split('/')[-1] resp, body = self.client.get_list_obj(url_param) self.assertEqual(200, resp.status) self.assertEqual(1, len(body['workflows'])) name_2 = body['workflows'][0].get('name') self.assertGreater(name_1, name_2)
def test_get_all_pagination(self): resp = self.app.get( '/v2/actions?limit=1&sort_keys=id,name') self.assertEqual(200, resp.status_int) self.assertIn('next', resp.json) self.assertEqual(1, len(resp.json['actions'])) self.assertDictEqual(ACTION, resp.json['actions'][0]) param_dict = utils.get_dict_from_string( resp.json['next'].split('?')[1], delimiter='&' ) expected_dict = { 'marker': '123e4567-e89b-12d3-a456-426655440000', 'limit': 1, 'sort_keys': 'id,name', 'sort_dirs': 'asc,asc' } self.assertTrue( set(expected_dict.items()).issubset(set(param_dict.items())) )
def test_get_all_pagination(self): resp = self.app.get( '/v2/workflows?limit=1&sort_keys=id,name') self.assertEqual(resp.status_int, 200) self.assertIn('next', resp.json) self.assertEqual(len(resp.json['workflows']), 1) self.assertDictEqual(WF, resp.json['workflows'][0]) param_dict = utils.get_dict_from_string( resp.json['next'].split('?')[1], delimiter='&' ) expected_dict = { 'marker': '123e4567-e89b-12d3-a456-426655440000', 'limit': 1, 'sort_keys': 'id,name', 'sort_dirs': 'asc,asc', } self.assertDictEqual(expected_dict, param_dict)