예제 #1
0
 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(""))
예제 #2
0
 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))
예제 #3
0
 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"))
예제 #4
0
 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(""))
예제 #5
0
 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"))
예제 #6
0
 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))
예제 #7
0
 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"))
예제 #8
0
 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"))
예제 #9
0
 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)
예제 #10
0
 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)
예제 #11
0
 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)
예제 #12
0
 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)
예제 #13
0
 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)
예제 #14
0
 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)
예제 #15
0
 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)
예제 #16
0
 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)
예제 #17
0
 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)
예제 #18
0
 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)
예제 #19
0
 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)
예제 #20
0
 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))
예제 #21
0
 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))