annotate test/test_actions.py @ 4657:baddbae588ad

Fix typo in 'devel' and 'issues' templates (issue2550768)
author John Kristensen <john@jerrykan.com>
date Mon, 27 Aug 2012 23:19:32 +1000
parents df7a4400c2ce
children 9cc6d463cfbe
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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: \
3855
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
249 ({'messages':hyperdb.Multilink('msg')
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
250 ,'content':hyperdb.String()
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
251 ,'files':hyperdb.Multilink('file')
4304
df7a4400c2ce Fix linking of an existing item to a newly created item...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3855
diff changeset
252 ,'msg':hyperdb.Link('msg')
3855
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
253 })
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
254 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
255
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 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
257 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
258 [ ('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
259 , ('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
260 ]
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 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
262 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
263 ( {('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
264 , [('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
265 )
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 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
267 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
268 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
269 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
270 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
271
3855
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
272 def testFileAttach(self):
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
273 expect = \
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
274 [('create',(),{'content':'t','type':'text/plain','name':'t.txt'})
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
275 ,('set',('4711',),{'files':['23','42','17']})
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
276 ]
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
277 self.client.db.classes.get = lambda a, b:['23','42']
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
278 self.client.parsePropsFromForm = lambda: \
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
279 ( {('file','-1'):{'content':'t','type':'text/plain','name':'t.txt'}
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
280 ,('issue','4711'):{}
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
281 }
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
282 , [('issue','4711','messages',[('msg','-1')])
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
283 ,('issue','4711','files',[('file','-1')])
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
284 ,('msg','-1','files',[('file','-1')])
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
285 ]
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
286 )
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
287 try :
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
288 self.action.handle()
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
289 except Redirect, msg:
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
290 pass
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
291 self.assertEqual(expect, self.result)
de4c2e538e06 Bug-Fix: File attachments from the web-interface didn't work.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3852
diff changeset
292
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
293 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
294 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
295 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
296 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
297 ( {('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
298 , [('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
299 )
0dd05c9e5fff New test for linking of non-existing and existing properties via a form.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3635
diff changeset
300 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
301 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
302 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
303 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
304 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
305
4304
df7a4400c2ce Fix linking of an existing item to a newly created item...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3855
diff changeset
306 def testLinkNewToExisting(self):
df7a4400c2ce Fix linking of an existing item to a newly created item...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3855
diff changeset
307 expect = [('create',(),{'msg':'1','title':'TEST'})]
df7a4400c2ce Fix linking of an existing item to a newly created item...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3855
diff changeset
308 self.client.db.classes.get = lambda a, b:['23','42']
df7a4400c2ce Fix linking of an existing item to a newly created item...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3855
diff changeset
309 self.client.parsePropsFromForm = lambda: \
df7a4400c2ce Fix linking of an existing item to a newly created item...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3855
diff changeset
310 ( {('issue','-1'):{'title':'TEST'},('msg','1'):{}}
df7a4400c2ce Fix linking of an existing item to a newly created item...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3855
diff changeset
311 , [('issue','-1','msg',[('msg','1')])]
df7a4400c2ce Fix linking of an existing item to a newly created item...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3855
diff changeset
312 )
df7a4400c2ce Fix linking of an existing item to a newly created item...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3855
diff changeset
313 try :
df7a4400c2ce Fix linking of an existing item to a newly created item...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3855
diff changeset
314 self.action.handle()
df7a4400c2ce Fix linking of an existing item to a newly created item...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3855
diff changeset
315 except Redirect, msg:
df7a4400c2ce Fix linking of an existing item to a newly created item...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3855
diff changeset
316 pass
df7a4400c2ce Fix linking of an existing item to a newly created item...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3855
diff changeset
317 self.assertEqual(expect, self.result)
df7a4400c2ce Fix linking of an existing item to a newly created item...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3855
diff changeset
318
2515
f8dafdd91bf5 remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2514
diff changeset
319 def test_suite():
f8dafdd91bf5 remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2514
diff changeset
320 suite = unittest.TestSuite()
f8dafdd91bf5 remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2514
diff changeset
321 suite.addTest(unittest.makeSuite(RetireActionTestCase))
f8dafdd91bf5 remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2514
diff changeset
322 suite.addTest(unittest.makeSuite(StandardSearchActionTestCase))
f8dafdd91bf5 remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2514
diff changeset
323 suite.addTest(unittest.makeSuite(FakeFilterVarsTestCase))
f8dafdd91bf5 remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2514
diff changeset
324 suite.addTest(unittest.makeSuite(ShowActionTestCase))
f8dafdd91bf5 remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2514
diff changeset
325 suite.addTest(unittest.makeSuite(CollisionDetectionTestCase))
2930
4b5d7b4bc089 applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2515
diff changeset
326 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
327 suite.addTest(unittest.makeSuite(EditItemActionTestCase))
2515
f8dafdd91bf5 remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2514
diff changeset
328 return suite
f8dafdd91bf5 remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2514
diff changeset
329
f8dafdd91bf5 remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2514
diff changeset
330 if __name__ == '__main__':
f8dafdd91bf5 remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2514
diff changeset
331 runner = unittest.TextTestRunner()
f8dafdd91bf5 remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2514
diff changeset
332 unittest.main(testRunner=runner)
f8dafdd91bf5 remove extra CRs
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2514
diff changeset
333
2930
4b5d7b4bc089 applied patch [SF#1067690];
Alexander Smishlajev <a1s@users.sourceforge.net>
parents: 2515
diff changeset
334 # vim: set et sts=4 sw=4 :

Roundup Issue Tracker: http://roundup-tracker.org/