summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--wsme/tests/test_types.py13
-rw-r--r--wsme/tests/test_utils.py4
-rw-r--r--wsme/types.py2
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: