Mercurial > p > roundup > code
annotate test/test_hyperdbvals.py @ 7109:561c66232347
Merge
| author | Ralf Schlatterbeck <rsc@runtux.com> |
|---|---|
| date | Thu, 08 Dec 2022 11:18:46 +0100 |
| parents | f8893e1cde0d |
| children | 76a21cf791b9 |
| rev | line source |
|---|---|
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1 # |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2 # Copyright (c) 2003 Richard Jones, richard@commonground.com.au |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3 # This module is free software, and you may redistribute it and/or modify |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
4 # under the same terms as Python, so long as this copyright message and |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
5 # disclaimer are retained in their original form. |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
6 # |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
7 # This module is distributed in the hope that it will be useful, |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
10 |
|
4089
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
3677
diff
changeset
|
11 import unittest, os, shutil, errno, sys, difflib, cgi, re |
|
4982
9ba03348f923
Remove roundup/anypy/hashlib_.py
John Kristensen <john@jerrykan.com>
parents:
4877
diff
changeset
|
12 from hashlib import sha1 |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
13 |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
14 from roundup import init, instance, password, hyperdb, date |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
15 |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
16 class TestClass: |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
17 def getprops(self): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
18 return { |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
19 'string': hyperdb.String(), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
20 'number': hyperdb.Number(), |
|
5067
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
21 'integer': hyperdb.Integer(), |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
22 'boolean': hyperdb.Boolean(), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
23 'password': hyperdb.Password(), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
24 'date': hyperdb.Date(), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
25 'interval': hyperdb.Interval(), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
26 'link': hyperdb.Link('test'), |
|
4877
2ba982dcdf2c
New Link / Multilink option "try_id_parsing"
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4570
diff
changeset
|
27 'linkkeyonly': hyperdb.Link('test', try_id_parsing='no'), |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
28 'link2': hyperdb.Link('test2'), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
29 'multilink': hyperdb.Multilink('test'), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
30 'multilink2': hyperdb.Multilink('test2'), |
|
5169
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
31 'multilink3': hyperdb.Multilink('test', try_id_parsing='no'), |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
32 } |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
33 def getkey(self): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
34 return 'string' |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
35 def lookup(self, value): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
36 if value == 'valid': |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
37 return '1' |
|
5169
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
38 if value == '2valid': |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
39 return '2' |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
40 raise KeyError |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
41 def get(self, nodeid, propname): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
42 assert propname.startswith('multilink') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
43 assert nodeid is not None |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
44 return ['2', '3'] |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
45 |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
46 class TestClass2: |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
47 def properties(self): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
48 return { |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
49 'string': hyperdb.String(), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
50 } |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
51 def getkey(self): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
52 return None |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
53 def labelprop(self, default_to_id=1): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
54 return 'id' |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
55 |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
56 class TestDatabase: |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
57 classes = {'test': TestClass(), 'test2': TestClass2()} |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
58 def getUserTimezone(self): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
59 return 0 |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
60 |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
61 class RawToHyperdbTest(unittest.TestCase): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
62 def _test(self, propname, value, itemid=None): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
63 return hyperdb.rawToHyperdb(TestDatabase(), TestClass(), itemid, |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
64 propname, value) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
65 def testString(self): |
|
3668
a15c15510e99
hyperdb handling of empty raw values for Multilink and Password [SF#1507814]
Richard Jones <richard@users.sourceforge.net>
parents:
1905
diff
changeset
|
66 self.assertEqual(self._test('password', ''), None) |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
67 self.assertEqual(self._test('string', ' a string '), 'a string') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
68 def testNumber(self): |
|
3668
a15c15510e99
hyperdb handling of empty raw values for Multilink and Password [SF#1507814]
Richard Jones <richard@users.sourceforge.net>
parents:
1905
diff
changeset
|
69 self.assertEqual(self._test('password', ''), None) |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
70 self.assertEqual(self._test('number', ' 10 '), 10) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
71 self.assertEqual(self._test('number', ' 1.5 '), 1.5) |
|
5067
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
72 self.assertEqual(self._test('number', ' -1022.5 '), -1022.5) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
73 def testInteger(self): |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
74 self.assertEqual(self._test('integer', ' 100 '), 100) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
75 self.assertEqual(self._test('integer', ' 0 '), 0) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
76 self.assertEqual(self._test('integer', ' -100 '), -100) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
77 # make sure error raised on string |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
78 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'integer', 'a string', 'a string') |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
79 # make sure error raised on real number |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
80 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'integer', ' -100.2 ') |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
81 def testBoolean(self): |
|
3668
a15c15510e99
hyperdb handling of empty raw values for Multilink and Password [SF#1507814]
Richard Jones <richard@users.sourceforge.net>
parents:
1905
diff
changeset
|
82 self.assertEqual(self._test('password', ''), None) |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
83 for true in 'yes true on 1'.split(): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
84 self.assertEqual(self._test('boolean', ' %s '%true), 1) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
85 for false in 'no false off 0'.split(): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
86 self.assertEqual(self._test('boolean', ' %s '%false), 0) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
87 def testPassword(self): |
|
3668
a15c15510e99
hyperdb handling of empty raw values for Multilink and Password [SF#1507814]
Richard Jones <richard@users.sourceforge.net>
parents:
1905
diff
changeset
|
88 self.assertEqual(self._test('password', ''), None) |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
89 self.assertEqual(self._test('password', ' a string '), 'a string') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
90 val = self._test('password', ' a string ') |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5548
diff
changeset
|
91 self.assertTrue(isinstance(val, password.Password)) |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
92 val = self._test('password', '{plaintext}a string') |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5548
diff
changeset
|
93 self.assertTrue(isinstance(val, password.Password)) |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
94 val = self._test('password', '{crypt}a string') |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5548
diff
changeset
|
95 self.assertTrue(isinstance(val, password.Password)) |
|
5454
fbbcbfc6dad0
fix encoding for hash functions
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5453
diff
changeset
|
96 s = sha1(b'a string').hexdigest() |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
97 val = self._test('password', '{SHA}'+s) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5548
diff
changeset
|
98 self.assertTrue(isinstance(val, password.Password)) |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
99 self.assertEqual(val, 'a string') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
100 self.assertRaises(hyperdb.HyperdbValueError, self._test, |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
101 'password', '{fubar}a string') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
102 def testDate(self): |
|
3668
a15c15510e99
hyperdb handling of empty raw values for Multilink and Password [SF#1507814]
Richard Jones <richard@users.sourceforge.net>
parents:
1905
diff
changeset
|
103 self.assertEqual(self._test('password', ''), None) |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
104 val = self._test('date', ' 2003-01-01 ') |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5548
diff
changeset
|
105 self.assertTrue(isinstance(val, date.Date)) |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
106 val = self._test('date', ' 2003/01/01 ') |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5548
diff
changeset
|
107 self.assertTrue(isinstance(val, date.Date)) |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
108 val = self._test('date', ' 2003/1/1 ') |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5548
diff
changeset
|
109 self.assertTrue(isinstance(val, date.Date)) |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
110 val = self._test('date', ' 2003-1-1 ') |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5548
diff
changeset
|
111 self.assertTrue(isinstance(val, date.Date)) |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
112 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'date', |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
113 'fubar') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
114 def testInterval(self): |
|
3668
a15c15510e99
hyperdb handling of empty raw values for Multilink and Password [SF#1507814]
Richard Jones <richard@users.sourceforge.net>
parents:
1905
diff
changeset
|
115 self.assertEqual(self._test('password', ''), None) |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
116 val = self._test('interval', ' +1d ') |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5548
diff
changeset
|
117 self.assertTrue(isinstance(val, date.Interval)) |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
118 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'interval', |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
119 'fubar') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
120 def testLink(self): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
121 self.assertEqual(self._test('link', '1'), '1') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
122 self.assertEqual(self._test('link', 'valid'), '1') |
|
4877
2ba982dcdf2c
New Link / Multilink option "try_id_parsing"
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4570
diff
changeset
|
123 self.assertEqual(self._test('linkkeyonly', 'valid'), '1') |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
124 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'link', |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
125 'invalid') |
|
4877
2ba982dcdf2c
New Link / Multilink option "try_id_parsing"
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4570
diff
changeset
|
126 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'linkkeyonly', |
|
2ba982dcdf2c
New Link / Multilink option "try_id_parsing"
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4570
diff
changeset
|
127 '1') |
|
2ba982dcdf2c
New Link / Multilink option "try_id_parsing"
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4570
diff
changeset
|
128 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'linkkeyonly', |
|
2ba982dcdf2c
New Link / Multilink option "try_id_parsing"
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4570
diff
changeset
|
129 'invalid') |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
130 def testMultilink(self): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
131 self.assertEqual(self._test('multilink', '', '1'), []) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
132 self.assertEqual(self._test('multilink', '1', '1'), ['1']) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
133 self.assertEqual(self._test('multilink', 'valid', '1'), ['1']) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
134 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'multilink', |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
135 'invalid', '1') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
136 self.assertEqual(self._test('multilink', '+1', '1'), ['1', '2', '3']) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
137 self.assertEqual(self._test('multilink', '+valid', '1'), ['1', '2', |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
138 '3']) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
139 self.assertEqual(self._test('multilink', '+1,-2', '1'), ['1', '3']) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
140 self.assertEqual(self._test('multilink', '+valid,-3', '1'), ['1', '2']) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
141 self.assertEqual(self._test('multilink', '+1', None), ['1']) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
142 self.assertEqual(self._test('multilink', '+valid', None), ['1']) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
143 self.assertEqual(self._test('multilink', '', None), []) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
144 |
|
5169
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
145 def testMultilink3(self): |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
146 # note that all +1, -2 type references will fail with exceptions |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
147 # '+1' is an id and try_id_parsing is set to no for multilink3 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
148 # and the 'name/key' 1 or 2 doesn't exist. |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
149 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
150 self.assertEqual(self._test('multilink3', '', '1'), []) |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
151 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
152 with self.assertRaises(hyperdb.HyperdbValueError) as cm: |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
153 self._test('multilink3', '1', '1') |
|
5453
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
154 self.assertEqual(cm.exception.args, |
|
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
155 ("property multilink3: '1' is not a test.",)) |
|
5169
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
156 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
157 self.assertEqual(self._test('multilink3', 'valid', '1'), ['1']) |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
158 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
159 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'multilink3', |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
160 'invalid', '1') |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
161 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
162 with self.assertRaises(hyperdb.HyperdbValueError) as cm: |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
163 self._test('multilink3', '+1', '1') |
|
5453
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
164 self.assertEqual(cm.exception.args, |
|
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
165 ("property multilink3: '1' is not a test.",)) |
|
5169
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
166 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
167 self.assertEqual(self._test('multilink3', '+valid', '1'), |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
168 ['1', '2', '3']) |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
169 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
170 with self.assertRaises(hyperdb.HyperdbValueError) as cm: |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
171 self._test('multilink3', '+1,-2', '1') |
|
5453
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
172 self.assertEqual(cm.exception.args, |
|
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
173 ("property multilink3: '1' is not a test.",)) |
|
5169
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
174 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
175 with self.assertRaises(hyperdb.HyperdbValueError) as cm: |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
176 self._test('multilink3', '+valid,-2', '1') |
|
5453
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
177 self.assertEqual(cm.exception.args, |
|
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
178 ("property multilink3: '2' is not a test.",)) |
|
5169
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
179 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
180 self.assertEqual(self._test('multilink3', '+valid,-2valid', '1'), ['1', '3']) |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
181 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
182 self.assertEqual(self._test('multilink3', '+valid', None), ['1']) |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
183 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
184 self.assertEqual(self._test('multilink3', '', None), []) |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
185 |
|
5548
fea11d05110e
Avoid errors from selecting "no selection" on multilink (issue2550722).
Joseph Myers <jsm@polyomino.org.uk>
parents:
5454
diff
changeset
|
186 self.assertEqual(self._test('multilink3', '-valid', None), []) |
|
5169
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
187 |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
188 # vim: set filetype=python ts=4 sw=4 et si |
