Exemplo n.º 1
0
    def test_description(self):
        string = String()
        self.assertIsNone(string.description)

        description = "Description"
        string = String(description=description)
        self.assertEqual(string.description, description)
Exemplo n.º 2
0
 def test_format(self):
     format_string = "[0-9]{2}[a-z]{5}[0-9]{3}"
     string = String(format=format_string)
     self.assertEqual(string.format, format_string)
     self.assertRaises(exception.InvalidFormatError, string.validate, "cat")
     self.assertRaises(exception.InvalidFormatError, string.validate, "ab45678as")
     self.assertEqual(string.validate("12abcde123"), "12abcde123")
     self.assertEqual(string.validate("89uwxyz789"), "89uwxyz789")
Exemplo n.º 3
0
    def test_required(self):
        required_default = String()
        self.assertTrue(required_default.required)

        required_true = String(required=True)
        self.assertTrue(required_true.required)

        required_false = String(required=False)
        self.assertFalse(required_false.required)
Exemplo n.º 4
0
    def test_choices(self):
        choices = ["apple", "banana"]
        string = String(choices=choices)
        self.assertEqual(string.choices, choices)
        self.assertRaises(exception.InvalidChoiceError, string.validate, "orange")
        self.assertRaises(exception.InvalidChoiceError, string.validate, "grape")

        self.assertEqual(string.validate("apple"), "apple")
        self.assertEqual(string.validate("banana"), "banana")
Exemplo n.º 5
0
    def test_blueprint(self):
        string = String(
            default="default",
            min_length=1,
            max_length=10,
            required=False,
            format="[a-z]{1, 5}",
            choices=["a", "b", "c"],
            utf_encoding="utf-16",
            description="Description",
            trim=False
        )

        blueprint = string.blueprint()
        self.assertEqual(blueprint["type"], "string")
        self.assertEqual(blueprint["constraints"]["default"], string.default)
        self.assertEqual(blueprint["constraints"]["min_length"], string.min_length)
        self.assertEqual(blueprint["constraints"]["max_length"], string.max_length)
        self.assertEqual(blueprint["constraints"]["required"], string.required)
        self.assertEqual(blueprint["constraints"]["format"], string.format)
        self.assertEqual(blueprint["constraints"]["utf_encoding"], string.utf_encoding)
        self.assertEqual(blueprint["constraints"]["description"], string.description)
        self.assertEqual(blueprint["constraints"]["trim"], string.trim)
Exemplo n.º 6
0
    def test_utf_encoding(self):
        string = String()
        self.assertEqual(string.utf_encoding, "utf-8")

        string = String(utf_encoding="utf-16")
        self.assertEqual(string.utf_encoding, "utf-16")
Exemplo n.º 7
0
    def test_trim(self):
        string = String()
        self.assertTrue(string.trim)

        string = String(trim=False)
        self.assertFalse(string.trim)
Exemplo n.º 8
0
 def test_max_length(self):
     string = String(min_length=5, max_length=7)
     self.assertEqual(string.max_length, 7)
     self.assertRaises(exception.MaximumLengthError, string.validate, "123456789")
     self.assertEqual(string.validate("1234567"), "1234567")
Exemplo n.º 9
0
    def test_default(self):
        default_default = String()
        self.assertIsNone(default_default.default)

        default_value = String(required=True, default="orange")
        self.assertEqual(default_value.default, "orange")
Exemplo n.º 10
0
    def test_validate(self):

        # test required
        self.assertRaises(exception.RequiredAttributeError, String(required=True).validate, None)
        self.assertRaises(exception.RequiredAttributeError, String(required=True).validate, "")
        self.assertEqual(String(required=True).validate("apple"), "apple")

        # test not required
        self.assertEqual(String(required=False).validate("apple"), "apple")
        self.assertEqual(String(required=False).validate(""), "")
        self.assertEqual(String(required=False).validate(None), None)

        # test invalid types
        self.assertEqual(String().validate("orange"), "orange")
        self.assertEqual(String().validate(1), "1")
        self.assertEqual(String().validate(1.0), "1.0")
        self.assertEqual(String().validate(True), "True")

        # test default required
        self.assertEqual(String(required=True, default="orange").validate(None), "orange")
        self.assertEqual(String(required=True, default="orange").validate("apple"), "apple")

        # test default not required
        self.assertEqual(String(required=False, default="orange").validate(None), "orange")
        self.assertEqual(String(required=False, default="orange").validate("apple"), "apple")

        # test unicode encode
        self.assertEqual(String().validate(u"unicode"), u"unicode")

        # test str parse
        self.assertEqual(String().validate("string"), "string")

        # test int
        self.assertEqual(String().validate(1234), "1234")

        # check custom str which is broken
        class Custom(object):

            def __str__(self):
                return None

        self.assertRaises(exception.ParseFailedError, String().validate, Custom())