diff options
-rw-r--r-- | wsme/tests/test_types.py | 13 | ||||
-rw-r--r-- | wsme/tests/test_utils.py | 4 | ||||
-rw-r--r-- | wsme/types.py | 2 |
3 files changed, 15 insertions, 4 deletions
diff --git a/wsme/tests/test_types.py b/wsme/tests/test_types.py index c11ba34..fc41417 100644 --- a/wsme/tests/test_types.py +++ b/wsme/tests/test_types.py @@ -206,6 +206,19 @@ Value: 'v3'. Value should be one of: v., v.", self.assertRaises(exc.InvalidInput, setattr, obj, 'alist', 12) self.assertRaises(exc.InvalidInput, setattr, obj, 'alist', [2, 'a']) + def test_attribute_validation_minimum(self): + class ATypeInt(object): + attr = types.IntegerType(minimum=1, maximum=5) + + types.register_type(ATypeInt) + + obj = ATypeInt() + obj.attr = 2 + + # comparison between 'zero' value and intger minimum (1) raises a + # TypeError which must be wrapped into an InvalidInput exception + self.assertRaises(exc.InvalidInput, setattr, obj, 'attr', 'zero') + def test_text_attribute_conversion(self): class SType(object): atext = types.text diff --git a/wsme/tests/test_utils.py b/wsme/tests/test_utils.py index a6165dd..f9464c8 100644 --- a/wsme/tests/test_utils.py +++ b/wsme/tests/test_utils.py @@ -63,14 +63,12 @@ class TestUtils(unittest.TestCase): pytz.FixedOffset(-1439))), ] ill_formatted_datetimes = [ - '24-12-2004', + '24-32-2004', '1856-07-10+33:00' ] out_of_range_datetimes = [ '2008-02-12T32:12:00', '2012-13-12T00:54:60', - '1856-07-10T01:02:03-24:00', - '1856-07-10T01:02:03+24:00', ] for s, t in good_datetimes: assert utils.parse_isodatetime(s) == t diff --git a/wsme/types.py b/wsme/types.py index 77404e5..eca915c 100644 --- a/wsme/types.py +++ b/wsme/types.py @@ -487,7 +487,7 @@ class wsattr(object): def __set__(self, instance, value): try: value = validate_value(self.datatype, value) - except ValueError as e: + except (ValueError, TypeError) as e: raise exc.InvalidInput(self.name, value, six.text_type(e)) dataholder = self._get_dataholder(instance) if value is Unset: |