def test_validator_valid(self): """ L{Parameter.coerce} returns the correct value if validator returns True. """ parameter = Parameter("Test", validator=lambda _: True) parameter.parse = lambda value: value parameter.kind = "test_parameter" self.assertEqual("foo", parameter.coerce("foo"))
def test_validator_invalid(self): """ L{Parameter.coerce} raises an error if the validator returns False. """ parameter = Parameter("Test", validator=lambda _: False) parameter.parse = lambda value: value parameter.kind = "test_parameter" error = self.assertRaises(APIError, parameter.coerce, "foo") self.assertEqual(400, error.status) self.assertEqual("InvalidParameterValue", error.code) self.assertEqual("Invalid test_parameter value foo", error.message)
def test_coerce_with_parameter_error_unicode(self): """ L{Parameter.coerce} raises an L{APIError} if an invalid value is passed as request argument and parameter value is unicode. """ parameter = Parameter("Test") parameter.parse = lambda value: int(value) parameter.kind = "integer" error = self.assertRaises(APIError, parameter.coerce, "citt\xc3\xa1") self.assertEqual(400, error.status) self.assertEqual("InvalidParameterValue", error.code) self.assertEqual(u"Invalid integer value cittá", error.message)
def test_coerce_with_required(self): """ L{Parameter.coerce} raises an L{APIError} if the parameter is required but not present in the request. """ parameter = Parameter("Test") parameter.kind = "testy kind" error = self.assertRaises(APIError, parameter.coerce, None) self.assertEqual(400, error.status) self.assertEqual("MissingParameter", error.code) self.assertEqual( "The request must contain the parameter Test " "(testy kind)", error.message)
def test_coerce_with_required(self): """ L{Parameter.coerce} raises an L{APIError} if the parameter is required but not present in the request. """ parameter = Parameter("Test") parameter.kind = "testy kind" error = self.assertRaises(APIError, parameter.coerce, None) self.assertEqual(400, error.status) self.assertEqual("MissingParameter", error.code) self.assertEqual("The request must contain the parameter Test " "(testy kind)", error.message)