def test_coerce_with_empty_strings(self): """ L{Parameter.coerce} returns C{None} if the value is an empty string and C{allow_none} is C{True}. """ parameter = Parameter("Test", allow_none=True) self.assertEqual(None, parameter.coerce(""))
def test_coerce_with_default(self): """ L{Parameter.coerce} returns F{Parameter.default} if the parameter is optional and not present in the request. """ parameter = Parameter("Test", optional=True, default=123) self.assertEqual(123, parameter.coerce(None))
def test_coerce(self): """ L{Parameter.coerce} coerces a request argument with a single value. """ parameter = Parameter("Test") parameter.parse = lambda value: value self.assertEqual("foo", parameter.coerce("foo"))
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_max(self): """ L{Parameter.coerce} raises an error if the given value is greater than the upper bound. """ parameter = Parameter("Test", max=3) parameter.measure = lambda value: len(value) parameter.greater_than_max_template = "%s should be enough for anybody" error = self.assertRaises(APIError, parameter.coerce, "longish") self.assertEqual(400, error.status) self.assertEqual("InvalidParameterValue", error.code) self.assertEqual("Value (longish) for parameter Test is invalid. " "3 should be enough for anybody", error.message)
def test_coerce_with_min(self): """ L{Parameter.coerce} raises an error if the given value is lower than the lower bound. """ parameter = Parameter("Test", min=50) parameter.measure = lambda value: int(value) parameter.lower_than_min_template = "Please give me at least %s" error = self.assertRaises(APIError, parameter.coerce, "4") self.assertEqual(400, error.status) self.assertEqual("InvalidParameterValue", error.code) self.assertEqual("Value (4) for parameter Test is invalid. " "Please give me at least 50", 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)
def test_coerce_with_empty_strings_error(self): """ L{Parameter.coerce} raises an error if the value is an empty string and C{allow_none} is not C{True}. """ parameter = Parameter("Test") error = self.assertRaises(APIError, parameter.coerce, "") self.assertEqual(400, error.status) self.assertEqual("MissingParameter", error.code) self.assertEqual("The request must contain the parameter Test", error.message)
def test_coerce_with_optional(self): """L{Parameter.coerce} returns C{None} if the parameter is optional.""" parameter = Parameter("Test", optional=True) self.assertEqual(None, parameter.coerce(None))