Mercurial > p > roundup > code
annotate test/test_hyperdbvals.py @ 8412:0663a7bcef6c reauth-confirm_id
feat: finish reauth docs, enhance code.
Decided to keep name Reauth for now.
admin_guide.txt:
add reference mark to roundup admin help. Used for template command
reference in upgrading.txt.
customizing.txt:
added worked example of adding a reauth auditor for address and password.
Also links to OWASP recommendations.
Added link to example code in design.doc on detectors.
glossary.txt:
reference using roundup-admin template command in def for tracker
templates.
pydoc.txt:
Added methods for Client class.
Added class and methods for (cgi) Action, LoginAction and ReauthAction.
reference.txt
Edited and restructured detector section.
Added section on registering a detector and priority use/execution order.
(reference to design doc was used before).
Added/enhanced description of exception an auditor can
raise (includes Reauth).
Added section on Reauth implementation and use (Confirming the User).
Also has paragraph on future ideas.
upgrading.txt
Stripped down the original section. Moved a lot to reference.txt.
Referenced customizing example, mention installation of
_generic.reauth.html and reference reference.txt.
cgi/actions.py:
fixed bad ReST that was breaking pydoc.txt processing
changed doc on limitations of Reauth code.
added docstring for Reauth::verifyPassword
cgi/client.py:
fix ReST for a method breaking pydoc.py processing
cgi/templating.py:
fix docstring on embed_form_fields
templates/*/html/_generic.reauth.html
disable spelling for password field
add timing info to the javascript function that processes file data.
reformat javascript IIFE
templates/jinja2/html/_generic.reauth.html
create a valid jinja2 template. Looks like my original jinja
template got overwritten and committed.
feature parity with the other reauth templates.
test/test_liveserver.py
add test case for Reauth workflow.
Makefile
add doc.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Wed, 13 Aug 2025 23:52:49 -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 |
