Introduced "MaskedEmail" and allow a masked email in the Gasthausbox.
[philipp/winterrodeln/wrpylib.git] / tests / test_wrvalidators.py
index 3620adb3fcac847238cca79c35508ef01736e2e7..fb1ab7e5432caae1ba218fe4c4248c3426b54de4 100644 (file)
@@ -95,6 +95,16 @@ def test_PhoneCommentListNeinLoopNone():
     assert v.from_python(u'+43-699-1234567 (nicht nach 20:00 Uhr); +43-512-123456') == u'+43-699-1234567 (nicht nach 20:00 Uhr); +43-512-123456'
 
 
+def test_MaskedEmail():
+    v = wrpylib.wrvalidators.MaskedEmail()
+    assert v.to_python(u'') == (None, None)
+    assert v.to_python(u'abc.def@example.com') == (u'abc.def@example.com', False)
+    assert v.to_python(u'abc.def(at)example.com') == (u'abc.def@example.com', True)
+    assert v.from_python((None, None)) == u''
+    assert v.from_python((u'abc.def@example.com', False)) == u'abc.def@example.com'
+    assert v.from_python((u'abc.def@example.com', True)) == u'abc.def(at)example.com'
+
+
 def test_EmailCommentListNeinLoopNone():
     v = wrpylib.wrvalidators.EmailCommentListNeinLoopNone()
     assert v.to_python(u'') == None
@@ -105,6 +115,20 @@ def test_EmailCommentListNeinLoopNone():
     assert v.from_python(u'Nein') == u'Nein'
     assert v.from_python(u'first@example.com') == u'first@example.com'
     assert v.from_python(u'first@example.com (Nur Winter); second@example.com') == u'first@example.com (Nur Winter); second@example.com'
+    testvalue = u'abc.def(at)example.com (comment)'
+    try:
+        v.to_python(testvalue)
+        assert False
+    except formencode.Invalid:
+        pass
+    try:
+        v.from_python(testvalue)
+        assert False
+    except formencode.Invalid:
+        pass
+    v = wrpylib.wrvalidators.EmailCommentListNeinLoopNone(allow_masked_email=True)
+    assert v.to_python(testvalue) == testvalue
+    assert v.from_python(testvalue) == testvalue
 
 
 def test_GermanLift():