def test_module_should_fail_if_validation_error_in_path_params(self, connection_mock): connection_mock.get_operation_spec.return_value = {'method': HTTPMethod.GET, 'url': '/test', 'returnMultipleItems': False} report = { 'path_params': { 'required': ['objects[0].type'], 'invalid_type': [ { 'path': 'objects[3].id', 'expected_type': 'string', 'actually_value': 1 } ] } } connection_mock.validate_path_params.return_value = (False, json.dumps(report, sort_keys=True, indent=4)) with pytest.raises(ValidationError) as e_info: resource = BaseConfigurationResource(connection_mock, False) resource.crud_operation('putTest', {'data': {}}) result = e_info.value.args[0] key = 'Invalid path_params provided' assert result[key] result[key] = json.loads(result[key]) assert result == {key: { 'path_params': { 'invalid_type': [{'actually_value': 1, 'expected_type': 'string', 'path': 'objects[3].id'}], 'required': ['objects[0].type']}}}
def test_module_should_fail_if_validation_error_in_all_params( self, connection_mock): connection_mock.get_operation_spec.return_value = { 'method': HTTPMethod.POST, 'url': '/test' } report = { 'data': { 'required': ['objects[0].type'], 'invalid_type': [{ 'path': 'objects[3].id', 'expected_type': 'string', 'actually_value': 1 }] }, 'path_params': { 'required': ['some_param'], 'invalid_type': [{ 'path': 'name', 'expected_type': 'string', 'actually_value': True }] }, 'query_params': { 'required': ['other_param'], 'invalid_type': [{ 'path': 'f_integer', 'expected_type': 'integer', 'actually_value': "test" }] } } connection_mock.validate_data.return_value = (False, json.dumps( report['data'], sort_keys=True, indent=4)) connection_mock.validate_query_params.return_value = ( False, json.dumps(report['query_params'], sort_keys=True, indent=4)) connection_mock.validate_path_params.return_value = ( False, json.dumps(report['path_params'], sort_keys=True, indent=4)) with pytest.raises(ValidationError) as e_info: resource = BaseConfigurationResource(connection_mock, False) resource.crud_operation('putTest', {'data': {}}) result = e_info.value.args[0] key_data = 'Invalid data provided' assert result[key_data] result[key_data] = json.loads(result[key_data]) key_path_params = 'Invalid path_params provided' assert result[key_path_params] result[key_path_params] = json.loads(result[key_path_params]) key_query_params = 'Invalid query_params provided' assert result[key_query_params] result[key_query_params] = json.loads(result[key_query_params]) assert result == { key_data: { 'invalid_type': [{ 'actually_value': 1, 'expected_type': 'string', 'path': 'objects[3].id' }], 'required': ['objects[0].type'] }, key_path_params: { 'invalid_type': [{ 'actually_value': True, 'expected_type': 'string', 'path': 'name' }], 'required': ['some_param'] }, key_query_params: { 'invalid_type': [{ 'actually_value': 'test', 'expected_type': 'integer', 'path': 'f_integer' }], 'required': ['other_param'] } }