Mercurial > p > roundup > code
annotate test/test_hyperdbvals.py @ 8446:14c7c07b32d8
feature: add thread local trace_id and trace_reason to logging.
Added trace_id to default logging so that all logs for a given request
share the same trace_id.
This allows correlation of logs across a request.
admin_guide.txt, upgrading.txt:
add docs
update sample configs to include trace_id.
rewrite logging docs in admin_guide. Hopefully they are clearer now.
clean up some stuff in the logging config file docs.
admin.py:
add decorators to run_command to enable trace_id.
change calls to db.commit() to use run_command to get trace_id.
configuration.py:
clean up imports.
update docstrings, comments and inline docs.
add trace_id to default log format.
add function for testing decorated with trace_id.
add support for dumping stack trace in logging.
add check for pytest in sys.modules to enable log propagation when
pytest is running. Otherwise tests fail as the caplog logger doesn't
see the roundup logs.
logcontext.py:
new file to handle thread local contextvar mangement.
mailgw.py:
add decorators for trace_id etc.
scripts/roundup_xlmrpc_server.py:
add decorators for trace_id etc.
fix encoding bug turning bytes into a string.
fix command line issue where we can't set encoding. (not sure if
changing encoding via command line even works)
cgi/client.py
decorate two entry points for trace_id etc.
cgi/wsgi_handler.py:
decorate entry point for trace_id etc.
test/test_config.py:
add test for trace_id in new log format.
test various cases for sinfo and errors in formating msg.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Tue, 16 Sep 2025 22:53:00 -0400 |
| parents | 69e6bcb39f90 |
| children |
| 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 |
|
7582
978285986b2c
fix: issue2551193 - Fix roundup for removal of cgi and cgitb ...
John Rouillard <rouilj@ieee.org>
parents:
7212
diff
changeset
|
11 import unittest, os, shutil, errno, sys, difflib, re |
|
4982
9ba03348f923
Remove roundup/anypy/hashlib_.py
John Kristensen <john@jerrykan.com>
parents:
4877
diff
changeset
|
12 from hashlib import sha1 |
|
7670
a28ea83ace86
issue2551296 - from mock import Mock?
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
13 try: |
|
a28ea83ace86
issue2551296 - from mock import Mock?
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
14 from unittest.mock import Mock |
|
a28ea83ace86
issue2551296 - from mock import Mock?
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
15 except ImportError: |
|
a28ea83ace86
issue2551296 - from mock import Mock?
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
16 # python 2.7 |
|
a28ea83ace86
issue2551296 - from mock import Mock?
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
17 from mock import Mock |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
18 |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
19 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
|
20 |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
21 class TestClass: |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
22 def getprops(self): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
23 return { |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
24 'string': hyperdb.String(), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
25 '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
|
26 'integer': hyperdb.Integer(), |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
27 'boolean': hyperdb.Boolean(), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
28 'password': hyperdb.Password(), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
29 'date': hyperdb.Date(), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
30 'interval': hyperdb.Interval(), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
31 'link': hyperdb.Link('test'), |
|
4877
2ba982dcdf2c
New Link / Multilink option "try_id_parsing"
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4570
diff
changeset
|
32 '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
|
33 'link2': hyperdb.Link('test2'), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
34 'multilink': hyperdb.Multilink('test'), |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
35 '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
|
36 '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
|
37 } |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
38 def getkey(self): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
39 return 'string' |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
40 def lookup(self, value): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
41 if value == 'valid': |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
42 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
|
43 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
|
44 return '2' |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
45 raise KeyError |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
46 def get(self, nodeid, propname): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
47 assert propname.startswith('multilink') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
48 assert nodeid is not None |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
49 return ['2', '3'] |
|
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 class TestClass2: |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
52 def properties(self): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
53 return { |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
54 'string': hyperdb.String(), |
|
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 def getkey(self): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
57 return None |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
58 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
|
59 return 'id' |
|
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 TestDatabase: |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
62 classes = {'test': TestClass(), 'test2': TestClass2()} |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
63 def getUserTimezone(self): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
64 return 0 |
|
7212
76a21cf791b9
Add config argument for one more call
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
65 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
|
66 |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
67 class RawToHyperdbTest(unittest.TestCase): |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
68 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
|
69 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
|
70 propname, value) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
71 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
|
72 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
|
73 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
|
74 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
|
75 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
|
76 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
|
77 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
|
78 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
|
79 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
|
80 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
|
81 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
|
82 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
|
83 # 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
|
84 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
|
85 # 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
|
86 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
|
87 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
|
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 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
|
90 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
|
91 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
|
92 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
|
93 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
|
94 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
|
95 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
|
96 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
|
97 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
|
98 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
|
99 self.assertTrue(isinstance(val, password.Password)) |
|
7703
69e6bcb39f90
test: check to see if crypt is available before testing
John Rouillard <rouilj@ieee.org>
parents:
7670
diff
changeset
|
100 try: |
|
69e6bcb39f90
test: check to see if crypt is available before testing
John Rouillard <rouilj@ieee.org>
parents:
7670
diff
changeset
|
101 import crypt |
|
69e6bcb39f90
test: check to see if crypt is available before testing
John Rouillard <rouilj@ieee.org>
parents:
7670
diff
changeset
|
102 val = self._test('password', '{crypt}a string') |
|
69e6bcb39f90
test: check to see if crypt is available before testing
John Rouillard <rouilj@ieee.org>
parents:
7670
diff
changeset
|
103 self.assertTrue(isinstance(val, password.Password)) |
|
69e6bcb39f90
test: check to see if crypt is available before testing
John Rouillard <rouilj@ieee.org>
parents:
7670
diff
changeset
|
104 except ImportError: |
|
69e6bcb39f90
test: check to see if crypt is available before testing
John Rouillard <rouilj@ieee.org>
parents:
7670
diff
changeset
|
105 pass |
|
5454
fbbcbfc6dad0
fix encoding for hash functions
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5453
diff
changeset
|
106 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
|
107 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
|
108 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
|
109 self.assertEqual(val, 'a string') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
110 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
|
111 'password', '{fubar}a string') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
112 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
|
113 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
|
114 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
|
115 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
|
116 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
|
117 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
|
118 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
|
119 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
|
120 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
|
121 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
|
122 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
|
123 'fubar') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
124 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
|
125 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
|
126 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
|
127 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
|
128 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
|
129 'fubar') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
130 def testLink(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('link', '1'), '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('link', 'valid'), '1') |
|
4877
2ba982dcdf2c
New Link / Multilink option "try_id_parsing"
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4570
diff
changeset
|
133 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
|
134 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
|
135 'invalid') |
|
4877
2ba982dcdf2c
New Link / Multilink option "try_id_parsing"
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4570
diff
changeset
|
136 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'linkkeyonly', |
|
2ba982dcdf2c
New Link / Multilink option "try_id_parsing"
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4570
diff
changeset
|
137 '1') |
|
2ba982dcdf2c
New Link / Multilink option "try_id_parsing"
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4570
diff
changeset
|
138 self.assertRaises(hyperdb.HyperdbValueError, self._test, 'linkkeyonly', |
|
2ba982dcdf2c
New Link / Multilink option "try_id_parsing"
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4570
diff
changeset
|
139 'invalid') |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
140 def testMultilink(self): |
|
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'), []) |
|
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', '1', '1'), ['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', 'valid', '1'), ['1']) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
144 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
|
145 'invalid', '1') |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
146 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
|
147 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
|
148 '3']) |
|
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
149 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
|
150 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
|
151 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
|
152 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
|
153 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
|
154 |
|
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
|
155 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
|
156 # 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
|
157 # '+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
|
158 # 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
|
159 |
|
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 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
|
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'), ['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 |
|
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.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
|
170 '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
|
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', '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 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
|
178 ['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
|
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 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
|
181 self._test('multilink3', '+1,-2', '1') |
|
5453
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
182 self.assertEqual(cm.exception.args, |
|
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
183 ("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
|
184 |
|
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 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
|
186 self._test('multilink3', '+valid,-2', '1') |
|
5453
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
187 self.assertEqual(cm.exception.args, |
|
2b4f606d8e72
use exception.args instead of exception.message
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5169
diff
changeset
|
188 ("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
|
189 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
190 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
|
191 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
192 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
|
193 |
|
7b74a5addfea
fix multilink support of try_id_parsing=no and add test for multilink cases.
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
194 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
|
195 |
|
5548
fea11d05110e
Avoid errors from selecting "no selection" on multilink (issue2550722).
Joseph Myers <jsm@polyomino.org.uk>
parents:
5454
diff
changeset
|
196 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
|
197 |
|
1905
dc43e339e607
Centralised conversion of user-input data to hyperdb values
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
198 # vim: set filetype=python ts=4 sw=4 et si |
