validate response: check validators and variables_mapping

This commit is contained in:
debugtalk
2017-06-29 16:36:59 +08:00
parent 2a904ec36a
commit 7e3f1bdcc8
2 changed files with 31 additions and 2 deletions

View File

@@ -89,13 +89,14 @@ class ResponseObject(object):
try:
value = variables_mapping[validator_key]
validator_dict["value"] = value
expected_value = validator_dict["expected"]
except KeyError:
raise exception.ParamsError("invalid validator %s" % validator_key)
match_expected = utils.match_expected(
value,
validator_dict["expected"],
validator_dict["comparator"]
expected_value,
validator_dict.get("comparator", "eq")
)
if not match_expected:

View File

@@ -182,3 +182,31 @@ class TestResponse(ApiServerUnittest):
diff_content_dict = resp_obj.validate(validators, variables_mapping)
self.assertTrue(resp_obj.success)
self.assertEqual(diff_content_dict, {})
def test_validate_exception(self):
url = "http://127.0.0.1:5000/"
resp = requests.get(url)
resp_obj = response.ResponseObject(resp)
# expected value missed in validators
validators = {
"resp_status_code": {"comparator": "eq", "expected": 201},
"resp_body_success": {"comparator": "eq"}
}
variables_mapping = {
"resp_status_code": 200,
"resp_body_success": True
}
with self.assertRaises(exception.ParamsError):
resp_obj.validate(validators, variables_mapping)
# expected value missed in validators
validators = {
"resp_status_code": {"comparator": "eq", "expected": 201},
"resp_body_success": {"comparator": "eq", "expected": True}
}
variables_mapping = {
"resp_status_code": 200
}
with self.assertRaises(exception.ParamsError):
resp_obj.validate(validators, variables_mapping)