Mercurial > p > roundup > code
annotate test/test_actions.py @ 3852:0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
The idea of the test is to track all create and set operations and
afterwards compare that they occurred as expected. Sorry for the
peculiar syntax for the expected updates to the database -- this should
be one line for each update...
An a bug-fix: I've reverted a change from April in
roundup/cgi/actions.py that broke linking of messages to issues. The
tests above now catch that. I couldn't figure out what the change was
meant for, sorry if I broke something here.
| author | Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net> |
|---|---|
| date | Tue, 08 May 2007 20:54:56 +0000 |
| parents | 53987aa153d2 |
| children | de4c2e538e06 |
| rev | line source |
|---|---|
|
2515
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
1 from __future__ import nested_scopes |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
2 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
3 import unittest |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
4 from cgi import FieldStorage, MiniFieldStorage |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
5 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
6 from roundup import hyperdb |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
7 from roundup.date import Date, Interval |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
8 from roundup.cgi.actions import * |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
9 from roundup.cgi.exceptions import Redirect, Unauthorised, SeriousError |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
10 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
11 from mocknull import MockNull |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
12 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
13 def true(*args, **kwargs): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
14 return 1 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
15 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
16 class ActionTestCase(unittest.TestCase): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
17 def setUp(self): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
18 self.form = FieldStorage() |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
19 self.client = MockNull() |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
20 self.client.form = self.form |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
21 class TemplatingUtils: |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
22 pass |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
23 self.client.instance.interfaces.TemplatingUtils = TemplatingUtils |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
24 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
25 class ShowActionTestCase(ActionTestCase): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
26 def assertRaisesMessage(self, exception, callable, message, *args, |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
27 **kwargs): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
28 """An extension of assertRaises, which also checks the exception |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
29 message. We need this because we rely on exception messages when |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
30 redirecting. |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
31 """ |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
32 try: |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
33 callable(*args, **kwargs) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
34 except exception, msg: |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
35 self.assertEqual(str(msg), message) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
36 else: |
|
2930
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
37 if hasattr(exception, '__name__'): |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
38 excName = exception.__name__ |
|
2515
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
39 else: |
|
2930
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
40 excName = str(exception) |
|
2515
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
41 raise self.failureException, excName |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
42 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
43 def testShowAction(self): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
44 self.client.base = 'BASE/' |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
45 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
46 action = ShowAction(self.client) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
47 self.assertRaises(ValueError, action.handle) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
48 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
49 self.form.value.append(MiniFieldStorage('@type', 'issue')) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
50 self.assertRaises(SeriousError, action.handle) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
51 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
52 self.form.value.append(MiniFieldStorage('@number', '1')) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
53 self.assertRaisesMessage(Redirect, action.handle, 'BASE/issue1') |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
54 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
55 def testShowActionNoType(self): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
56 action = ShowAction(self.client) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
57 self.assertRaises(ValueError, action.handle) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
58 self.form.value.append(MiniFieldStorage('@number', '1')) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
59 self.assertRaisesMessage(ValueError, action.handle, |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
60 'No type specified') |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
61 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
62 class RetireActionTestCase(ActionTestCase): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
63 def testRetireAction(self): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
64 self.client.db.security.hasPermission = true |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
65 self.client.ok_message = [] |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
66 RetireAction(self.client).handle() |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
67 self.assert_(len(self.client.ok_message) == 1) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
68 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
69 def testNoPermission(self): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
70 self.assertRaises(Unauthorised, RetireAction(self.client).execute) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
71 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
72 def testDontRetireAdminOrAnonymous(self): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
73 self.client.db.security.hasPermission=true |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
74 # look up the user class |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
75 self.client.classname = 'user' |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
76 # but always look up admin, regardless of nodeid |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
77 self.client.db.user.get = lambda a,b: 'admin' |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
78 self.assertRaises(ValueError, RetireAction(self.client).handle) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
79 # .. or anonymous |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
80 self.client.db.user.get = lambda a,b: 'anonymous' |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
81 self.assertRaises(ValueError, RetireAction(self.client).handle) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
82 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
83 class SearchActionTestCase(ActionTestCase): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
84 def setUp(self): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
85 ActionTestCase.setUp(self) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
86 self.action = SearchAction(self.client) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
87 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
88 class StandardSearchActionTestCase(SearchActionTestCase): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
89 def testNoPermission(self): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
90 self.assertRaises(Unauthorised, self.action.execute) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
91 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
92 def testQueryName(self): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
93 self.assertEqual(self.action.getQueryName(), '') |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
94 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
95 self.form.value.append(MiniFieldStorage('@queryname', 'foo')) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
96 self.assertEqual(self.action.getQueryName(), 'foo') |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
97 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
98 class FakeFilterVarsTestCase(SearchActionTestCase): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
99 def setUp(self): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
100 SearchActionTestCase.setUp(self) |
|
3635
53987aa153d2
Transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3188
diff
changeset
|
101 self.client.db.classes.get_transitive_prop = lambda x: \ |
|
53987aa153d2
Transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3188
diff
changeset
|
102 hyperdb.Multilink('foo') |
|
2515
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
103 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
104 def assertFilterEquals(self, expected): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
105 self.action.fakeFilterVars() |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
106 self.assertEqual(self.form.getvalue('@filter'), expected) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
107 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
108 def testEmptyMultilink(self): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
109 self.form.value.append(MiniFieldStorage('foo', '')) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
110 self.form.value.append(MiniFieldStorage('foo', '')) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
111 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
112 self.assertFilterEquals(None) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
113 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
114 def testNonEmptyMultilink(self): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
115 self.form.value.append(MiniFieldStorage('foo', '')) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
116 self.form.value.append(MiniFieldStorage('foo', '1')) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
117 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
118 self.assertFilterEquals('foo') |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
119 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
120 def testEmptyKey(self): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
121 self.form.value.append(MiniFieldStorage('foo', '')) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
122 self.assertFilterEquals(None) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
123 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
124 def testStandardKey(self): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
125 self.form.value.append(MiniFieldStorage('foo', '1')) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
126 self.assertFilterEquals('foo') |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
127 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
128 def testStringKey(self): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
129 self.client.db.classes.getprops = lambda: {'foo': hyperdb.String()} |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
130 self.form.value.append(MiniFieldStorage('foo', 'hello')) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
131 self.assertFilterEquals('foo') |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
132 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
133 def testTokenizedStringKey(self): |
|
3635
53987aa153d2
Transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3188
diff
changeset
|
134 self.client.db.classes.get_transitive_prop = lambda x: hyperdb.String() |
|
2515
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
135 self.form.value.append(MiniFieldStorage('foo', 'hello world')) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
136 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
137 self.assertFilterEquals('foo') |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
138 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
139 # The single value gets replaced with the tokenized list. |
|
2930
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
140 self.assertEqual([x.value for x in self.form['foo']], |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
141 ['hello', 'world']) |
|
2515
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
142 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
143 class CollisionDetectionTestCase(ActionTestCase): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
144 def setUp(self): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
145 ActionTestCase.setUp(self) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
146 self.action = EditItemAction(self.client) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
147 self.now = Date('.') |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
148 # round off for testing |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
149 self.now.second = int(self.now.second) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
150 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
151 def testLastUserActivity(self): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
152 self.assertEqual(self.action.lastUserActivity(), None) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
153 |
|
2930
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
154 self.client.form.value.append( |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
155 MiniFieldStorage('@lastactivity', str(self.now))) |
|
2515
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
156 self.assertEqual(self.action.lastUserActivity(), self.now) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
157 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
158 def testLastNodeActivity(self): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
159 self.action.classname = 'issue' |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
160 self.action.nodeid = '1' |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
161 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
162 def get(nodeid, propname): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
163 self.assertEqual(nodeid, '1') |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
164 self.assertEqual(propname, 'activity') |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
165 return self.now |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
166 self.client.db.issue.get = get |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
167 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
168 self.assertEqual(self.action.lastNodeActivity(), self.now) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
169 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
170 def testCollision(self): |
|
3188
7faae85e1e33
merge from branch
Richard Jones <richard@users.sourceforge.net>
parents:
3018
diff
changeset
|
171 # fake up an actual change |
|
7faae85e1e33
merge from branch
Richard Jones <richard@users.sourceforge.net>
parents:
3018
diff
changeset
|
172 self.action.classname = 'test' |
|
7faae85e1e33
merge from branch
Richard Jones <richard@users.sourceforge.net>
parents:
3018
diff
changeset
|
173 self.action.nodeid = '1' |
|
7faae85e1e33
merge from branch
Richard Jones <richard@users.sourceforge.net>
parents:
3018
diff
changeset
|
174 self.client.parsePropsFromForm = lambda: ({('test','1'):{1:1}}, []) |
|
7faae85e1e33
merge from branch
Richard Jones <richard@users.sourceforge.net>
parents:
3018
diff
changeset
|
175 self.failUnless(self.action.detectCollision(self.now, |
|
7faae85e1e33
merge from branch
Richard Jones <richard@users.sourceforge.net>
parents:
3018
diff
changeset
|
176 self.now + Interval("1d"))) |
|
7faae85e1e33
merge from branch
Richard Jones <richard@users.sourceforge.net>
parents:
3018
diff
changeset
|
177 self.failIf(self.action.detectCollision(self.now, |
|
7faae85e1e33
merge from branch
Richard Jones <richard@users.sourceforge.net>
parents:
3018
diff
changeset
|
178 self.now - Interval("1d"))) |
|
2515
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
179 self.failIf(self.action.detectCollision(None, self.now)) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
180 |
|
2930
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
181 class LoginTestCase(ActionTestCase): |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
182 def setUp(self): |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
183 ActionTestCase.setUp(self) |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
184 self.client.error_message = [] |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
185 |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
186 # set the db password to 'right' |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
187 self.client.db.user.get = lambda a,b: 'right' |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
188 |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
189 # unless explicitly overridden, we should never get here |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
190 self.client.opendb = lambda a: self.fail( |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
191 "Logged in, but we shouldn't be.") |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
192 |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
193 def assertLoginLeavesMessages(self, messages, username=None, password=None): |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
194 if username is not None: |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
195 self.form.value.append(MiniFieldStorage('__login_name', username)) |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
196 if password is not None: |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
197 self.form.value.append( |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
198 MiniFieldStorage('__login_password', password)) |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
199 |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
200 LoginAction(self.client).handle() |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
201 self.assertEqual(self.client.error_message, messages) |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
202 |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
203 def testNoUsername(self): |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
204 self.assertLoginLeavesMessages(['Username required']) |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
205 |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
206 def testInvalidUsername(self): |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
207 def raiseKeyError(a): |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
208 raise KeyError |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
209 self.client.db.user.lookup = raiseKeyError |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
210 self.assertLoginLeavesMessages(['Invalid login'], 'foo') |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
211 |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
212 def testInvalidPassword(self): |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
213 self.assertLoginLeavesMessages(['Invalid login'], 'foo', 'wrong') |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
214 |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
215 def testNoWebAccess(self): |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
216 self.assertLoginLeavesMessages(['You do not have permission to login'], |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
217 'foo', 'right') |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
218 |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
219 def testCorrectLogin(self): |
|
3018
e665582ec099
Fix failing test: mock lambda now also takes keyword arguments.
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents:
2930
diff
changeset
|
220 self.client.db.security.hasPermission = lambda *args, **kwargs: True |
|
2930
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
221 |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
222 def opendb(username): |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
223 self.assertEqual(username, 'foo') |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
224 self.client.opendb = opendb |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
225 |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
226 self.assertLoginLeavesMessages([], 'foo', 'right') |
|
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
227 |
|
3852
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
228 class EditItemActionTestCase(ActionTestCase): |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
229 def setUp(self): |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
230 ActionTestCase.setUp(self) |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
231 self.result = [] |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
232 class AppendResult: |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
233 def __init__(inner_self, name): |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
234 inner_self.name = name |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
235 def __call__(inner_self, *args, **kw): |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
236 self.result.append((inner_self.name, args, kw)) |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
237 if inner_self.name == 'set': |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
238 return kw |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
239 return '17' |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
240 |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
241 self.client.db.security.hasPermission = true |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
242 self.client.classname = 'issue' |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
243 self.client.base = 'http://tracker/' |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
244 self.client.nodeid = '4711' |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
245 self.client.template = 'item' |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
246 self.client.db.classes.create = AppendResult('create') |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
247 self.client.db.classes.set = AppendResult('set') |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
248 self.client.db.classes.getprops = lambda: \ |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
249 ({'messages':hyperdb.Multilink('msg'), 'content':hyperdb.String()}) |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
250 self.action = EditItemAction(self.client) |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
251 |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
252 def testMessageAttach(self): |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
253 expect = \ |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
254 [ ('create',(),{'content':'t'}) |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
255 , ('set',('4711',), {'messages':['23','42','17']}) |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
256 ] |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
257 self.client.db.classes.get = lambda a, b:['23','42'] |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
258 self.client.parsePropsFromForm = lambda: \ |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
259 ( {('msg','-1'):{'content':'t'},('issue','4711'):{}} |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
260 , [('issue','4711','messages',[('msg','-1')])] |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
261 ) |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
262 try : |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
263 self.action.handle() |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
264 except Redirect, msg: |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
265 pass |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
266 self.assertEqual(expect, self.result) |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
267 |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
268 def testLinkExisting(self): |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
269 expect = [('set',('4711',),{'messages':['23','42','1']})] |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
270 self.client.db.classes.get = lambda a, b:['23','42'] |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
271 self.client.parsePropsFromForm = lambda: \ |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
272 ( {('issue','4711'):{},('msg','1'):{}} |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
273 , [('issue','4711','messages',[('msg','1')])] |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
274 ) |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
275 try : |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
276 self.action.handle() |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
277 except Redirect, msg: |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
278 pass |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
279 self.assertEqual(expect, self.result) |
|
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
280 |
|
2515
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
281 def test_suite(): |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
282 suite = unittest.TestSuite() |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
283 suite.addTest(unittest.makeSuite(RetireActionTestCase)) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
284 suite.addTest(unittest.makeSuite(StandardSearchActionTestCase)) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
285 suite.addTest(unittest.makeSuite(FakeFilterVarsTestCase)) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
286 suite.addTest(unittest.makeSuite(ShowActionTestCase)) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
287 suite.addTest(unittest.makeSuite(CollisionDetectionTestCase)) |
|
2930
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
288 suite.addTest(unittest.makeSuite(LoginTestCase)) |
|
3852
0dd05c9e5fff
New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3635
diff
changeset
|
289 suite.addTest(unittest.makeSuite(EditItemActionTestCase)) |
|
2515
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
290 return suite |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
291 |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
292 if __name__ == '__main__': |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
293 runner = unittest.TextTestRunner() |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
294 unittest.main(testRunner=runner) |
|
f8dafdd91bf5
remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2514
diff
changeset
|
295 |
|
2930
4b5d7b4bc089
applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2515
diff
changeset
|
296 # vim: set et sts=4 sw=4 : |
