Mercurial > p > roundup > code
annotate test/test_hyperdbvals.py @ 7212:76a21cf791b9
Add config argument for one more call
Also added Mock so it gets tested.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sat, 04 Mar 2023 11:51:45 -0500 |
| parents | f8893e1cde0d |
| children | 978285986b2c |
| 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 |
|
7212
76a21cf791b9
Add config argument for one more call
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
13 from mock import Mock |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
14 |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
15 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
|
16 |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
17 class TestClass: |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
18 def getprops(self): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
19 return { |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
20 'string': hyperdb.String(), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
21 '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
|
22 'integer': hyperdb.Integer(), |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
23 'boolean': hyperdb.Boolean(), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
24 'password': hyperdb.Password(), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
25 'date': hyperdb.Date(), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
26 'interval': hyperdb.Interval(), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
27 'link': hyperdb.Link('test'), |
|
4877
2ba982dcdf2c
New Link / Multilink option "try_id_parsing"
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4570
diff
changeset
|
28 '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
|
29 'link2': hyperdb.Link('test2'), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
30 'multilink': hyperdb.Multilink('test'), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
31 '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
|
32 '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
|
33 } |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
34 def getkey(self): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
35 return 'string' |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
36 def lookup(self, value): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
37 if value == 'valid': |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
38 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
|
39 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
|
40 return '2' |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
41 raise KeyError |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
42 def get(self, nodeid, propname): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
43 assert propname.startswith('multilink') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
44 assert nodeid is not None |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
45 return ['2', '3'] |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
46 |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
47 class TestClass2: |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
48 def properties(self): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
49 return { |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
50 'string': hyperdb.String(), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
51 } |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
52 def getkey(self): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
53 return None |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
54 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
|
55 return 'id' |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
56 |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
57 class TestDatabase: |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
58 classes = {'test': TestClass(), 'test2': TestClass2()} |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
59 def getUserTimezone(self): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
60 return 0 |
|
7212
76a21cf791b9
Add config argument for one more call
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
61 config = Mock(PASSWORD_PBKDF2_DEFAULT_ROUNDS = 1000) |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
62 |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
63 class RawToHyperdbTest(unittest.TestCase): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
64 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
|
65 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
|
66 propname, value) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
67 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
|
68 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
|
69 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
|
70 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
|
71 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
|
72 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
|
73 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
|
74 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
|
75 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
|
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 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
|
78 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
|
79 # 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
|
80 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
|
81 # 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
|
82 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
|
83 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
|
84 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
|
85 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
|
86 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
|
87 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
|
88 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
|
89 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
|
90 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
|
91 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
|
92 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
|
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', '{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
|
95 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
|
96 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
|
97 self.assertTrue(isinstance(val, password.Password)) |
|
5454
fbbcbfc6dad0
fix encoding for hash functions
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5453
diff
changeset
|
98 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
|
99 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
|
100 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
|
101 self.assertEqual(val, 'a string') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
102 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
|
103 'password', '{fubar}a string') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
104 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
|
105 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
|
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/01/01 ') |
|
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 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
|
113 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
|
114 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
|
115 'fubar') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
116 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
|
117 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
|
118 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
|
119 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
|
120 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
|
121 'fubar') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
122 def testLink(self): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
123 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
|
124 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
|
125 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
|
126 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
|
127 'invalid') |
|
4877
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 '1') |
|
2ba982dcdf2c
New Link / Multilink option "try_id_parsing"
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4570
diff
changeset
|
130 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'linkkeyonly', |
|
2ba982dcdf2c
New Link / Multilink option "try_id_parsing"
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4570
diff
changeset
|
131 'invalid') |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
132 def testMultilink(self): |
|
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', '', '1'), []) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
134 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
|
135 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
|
136 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
|
137 'invalid', '1') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
138 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
|
139 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
|
140 '3']) |
|
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,-2', '1'), ['1', '3']) |
|
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,-3', '1'), ['1', '2']) |
|
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', '+1', None), ['1']) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
144 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
|
145 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
|
146 |
|
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
|
147 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
|
148 # 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
|
149 # '+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
|
150 # 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
|
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 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
|
153 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
154 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
|
155 self._test('multilink3', '1', '1') |
|
5453
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
156 self.assertEqual(cm.exception.args, |
|
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
157 ("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
|
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.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
|
160 |
|
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 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
|
162 '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
|
163 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
164 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
|
165 self._test('multilink3', '+1', '1') |
|
5453
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
166 self.assertEqual(cm.exception.args, |
|
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
167 ("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
|
168 |
|
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 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
|
170 ['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
|
171 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
172 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
|
173 self._test('multilink3', '+1,-2', '1') |
|
5453
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
174 self.assertEqual(cm.exception.args, |
|
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
175 ("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
|
176 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
177 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
|
178 self._test('multilink3', '+valid,-2', '1') |
|
5453
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
179 self.assertEqual(cm.exception.args, |
|
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
180 ("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
|
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,-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
|
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', '+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
|
185 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
186 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
|
187 |
|
5548
fea11d05110e
Avoid errors from selecting "no selection" on multilink (issue2550722).
Joseph Myers <jsm@polyomino.org.uk>
parents:
5454
diff
changeset
|
188 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
|
189 |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
190 # vim: set filetype=python ts=4 sw=4 et si |
