comparison test/test_hyperdbvals.py @ 3668:a15c15510e99

hyperdb handling of empty raw values for Multilink and Password [SF#1507814]
author Richard Jones <richard@users.sourceforge.net>
date Fri, 11 Aug 2006 04:50:24 +0000
parents dc43e339e607
children 11e31e50c826
comparison
equal deleted inserted replaced
3667:35811df7c783 3668:a15c15510e99
6 # 6 #
7 # This module is distributed in the hope that it will be useful, 7 # This module is distributed in the hope that it will be useful,
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of 8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10 # 10 #
11 # $Id: test_hyperdbvals.py,v 1.1 2003-11-11 00:35:14 richard Exp $ 11 # $Id: test_hyperdbvals.py,v 1.2 2006-08-11 04:50:24 richard Exp $
12 12
13 import unittest, os, shutil, errno, sys, difflib, cgi, re, sha 13 import unittest, os, shutil, errno, sys, difflib, cgi, re, sha
14 14
15 from roundup import init, instance, password, hyperdb, date 15 from roundup import init, instance, password, hyperdb, date
16 16
57 class RawToHyperdbTest(unittest.TestCase): 57 class RawToHyperdbTest(unittest.TestCase):
58 def _test(self, propname, value, itemid=None): 58 def _test(self, propname, value, itemid=None):
59 return hyperdb.rawToHyperdb(TestDatabase(), TestClass(), itemid, 59 return hyperdb.rawToHyperdb(TestDatabase(), TestClass(), itemid,
60 propname, value) 60 propname, value)
61 def testString(self): 61 def testString(self):
62 self.assertEqual(self._test('password', ''), None)
62 self.assertEqual(self._test('string', ' a string '), 'a string') 63 self.assertEqual(self._test('string', ' a string '), 'a string')
63 def testNumber(self): 64 def testNumber(self):
65 self.assertEqual(self._test('password', ''), None)
64 self.assertEqual(self._test('number', ' 10 '), 10) 66 self.assertEqual(self._test('number', ' 10 '), 10)
65 self.assertEqual(self._test('number', ' 1.5 '), 1.5) 67 self.assertEqual(self._test('number', ' 1.5 '), 1.5)
66 def testBoolean(self): 68 def testBoolean(self):
69 self.assertEqual(self._test('password', ''), None)
67 for true in 'yes true on 1'.split(): 70 for true in 'yes true on 1'.split():
68 self.assertEqual(self._test('boolean', ' %s '%true), 1) 71 self.assertEqual(self._test('boolean', ' %s '%true), 1)
69 for false in 'no false off 0'.split(): 72 for false in 'no false off 0'.split():
70 self.assertEqual(self._test('boolean', ' %s '%false), 0) 73 self.assertEqual(self._test('boolean', ' %s '%false), 0)
71 def testPassword(self): 74 def testPassword(self):
75 self.assertEqual(self._test('password', ''), None)
72 self.assertEqual(self._test('password', ' a string '), 'a string') 76 self.assertEqual(self._test('password', ' a string '), 'a string')
73 val = self._test('password', ' a string ') 77 val = self._test('password', ' a string ')
74 self.assert_(isinstance(val, password.Password)) 78 self.assert_(isinstance(val, password.Password))
75 val = self._test('password', '{plaintext}a string') 79 val = self._test('password', '{plaintext}a string')
76 self.assert_(isinstance(val, password.Password)) 80 self.assert_(isinstance(val, password.Password))
81 self.assert_(isinstance(val, password.Password)) 85 self.assert_(isinstance(val, password.Password))
82 self.assertEqual(val, 'a string') 86 self.assertEqual(val, 'a string')
83 self.assertRaises(hyperdb.HyperdbValueError, self._test, 87 self.assertRaises(hyperdb.HyperdbValueError, self._test,
84 'password', '{fubar}a string') 88 'password', '{fubar}a string')
85 def testDate(self): 89 def testDate(self):
90 self.assertEqual(self._test('password', ''), None)
86 val = self._test('date', ' 2003-01-01 ') 91 val = self._test('date', ' 2003-01-01 ')
87 self.assert_(isinstance(val, date.Date)) 92 self.assert_(isinstance(val, date.Date))
88 val = self._test('date', ' 2003/01/01 ') 93 val = self._test('date', ' 2003/01/01 ')
89 self.assert_(isinstance(val, date.Date)) 94 self.assert_(isinstance(val, date.Date))
90 val = self._test('date', ' 2003/1/1 ') 95 val = self._test('date', ' 2003/1/1 ')
92 val = self._test('date', ' 2003-1-1 ') 97 val = self._test('date', ' 2003-1-1 ')
93 self.assert_(isinstance(val, date.Date)) 98 self.assert_(isinstance(val, date.Date))
94 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'date', 99 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'date',
95 'fubar') 100 'fubar')
96 def testInterval(self): 101 def testInterval(self):
102 self.assertEqual(self._test('password', ''), None)
97 val = self._test('interval', ' +1d ') 103 val = self._test('interval', ' +1d ')
98 self.assert_(isinstance(val, date.Interval)) 104 self.assert_(isinstance(val, date.Interval))
99 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'interval', 105 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'interval',
100 'fubar') 106 'fubar')
101 def testLink(self): 107 def testLink(self):
108 self.assertEqual(self._test('password', ''), None)
102 self.assertEqual(self._test('link', '1'), '1') 109 self.assertEqual(self._test('link', '1'), '1')
103 self.assertEqual(self._test('link', 'valid'), '1') 110 self.assertEqual(self._test('link', 'valid'), '1')
104 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'link', 111 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'link',
105 'invalid') 112 'invalid')
106 def testMultilink(self): 113 def testMultilink(self):
114 self.assertEqual(self._test('password', ''), [])
107 self.assertEqual(self._test('multilink', '', '1'), []) 115 self.assertEqual(self._test('multilink', '', '1'), [])
108 self.assertEqual(self._test('multilink', '1', '1'), ['1']) 116 self.assertEqual(self._test('multilink', '1', '1'), ['1'])
109 self.assertEqual(self._test('multilink', 'valid', '1'), ['1']) 117 self.assertEqual(self._test('multilink', 'valid', '1'), ['1'])
110 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'multilink', 118 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'multilink',
111 'invalid', '1') 119 'invalid', '1')

Roundup Issue Tracker: http://roundup-tracker.org/