comparison test/test_actions.py @ 2930:4b5d7b4bc089

applied patch [SF#1067690]; wrap long lines, add vim modeline, fix ShowActionTestCase.assertRaisesMessage()
author Alexander Smishlajev <a1s@users.sourceforge.net>
date Thu, 18 Nov 2004 16:33:08 +0000
parents f8dafdd91bf5
children e665582ec099
comparison
equal deleted inserted replaced
2929:7a8a02646d4e 2930:4b5d7b4bc089
32 try: 32 try:
33 callable(*args, **kwargs) 33 callable(*args, **kwargs)
34 except exception, msg: 34 except exception, msg:
35 self.assertEqual(str(msg), message) 35 self.assertEqual(str(msg), message)
36 else: 36 else:
37 if hasattr(excClass,'__name__'): 37 if hasattr(exception, '__name__'):
38 excName = excClass.__name__ 38 excName = exception.__name__
39 else: 39 else:
40 excName = str(excClass) 40 excName = str(exception)
41 raise self.failureException, excName 41 raise self.failureException, excName
42 42
43 def testShowAction(self): 43 def testShowAction(self):
44 self.client.base = 'BASE/' 44 self.client.base = 'BASE/'
45 45
96 self.assertEqual(self.action.getQueryName(), 'foo') 96 self.assertEqual(self.action.getQueryName(), 'foo')
97 97
98 class FakeFilterVarsTestCase(SearchActionTestCase): 98 class FakeFilterVarsTestCase(SearchActionTestCase):
99 def setUp(self): 99 def setUp(self):
100 SearchActionTestCase.setUp(self) 100 SearchActionTestCase.setUp(self)
101 self.client.db.classes.getprops = lambda: {'foo': hyperdb.Multilink('foo')} 101 self.client.db.classes.getprops = lambda: {'foo':
102 hyperdb.Multilink('foo')}
102 103
103 def assertFilterEquals(self, expected): 104 def assertFilterEquals(self, expected):
104 self.action.fakeFilterVars() 105 self.action.fakeFilterVars()
105 self.assertEqual(self.form.getvalue('@filter'), expected) 106 self.assertEqual(self.form.getvalue('@filter'), expected)
106 107
134 self.form.value.append(MiniFieldStorage('foo', 'hello world')) 135 self.form.value.append(MiniFieldStorage('foo', 'hello world'))
135 136
136 self.assertFilterEquals('foo') 137 self.assertFilterEquals('foo')
137 138
138 # The single value gets replaced with the tokenized list. 139 # The single value gets replaced with the tokenized list.
139 self.assertEqual([x.value for x in self.form['foo']], ['hello', 'world']) 140 self.assertEqual([x.value for x in self.form['foo']],
141 ['hello', 'world'])
140 142
141 class CollisionDetectionTestCase(ActionTestCase): 143 class CollisionDetectionTestCase(ActionTestCase):
142 def setUp(self): 144 def setUp(self):
143 ActionTestCase.setUp(self) 145 ActionTestCase.setUp(self)
144 self.action = EditItemAction(self.client) 146 self.action = EditItemAction(self.client)
147 self.now.second = int(self.now.second) 149 self.now.second = int(self.now.second)
148 150
149 def testLastUserActivity(self): 151 def testLastUserActivity(self):
150 self.assertEqual(self.action.lastUserActivity(), None) 152 self.assertEqual(self.action.lastUserActivity(), None)
151 153
152 self.client.form.value.append(MiniFieldStorage('@lastactivity', str(self.now))) 154 self.client.form.value.append(
155 MiniFieldStorage('@lastactivity', str(self.now)))
153 self.assertEqual(self.action.lastUserActivity(), self.now) 156 self.assertEqual(self.action.lastUserActivity(), self.now)
154 157
155 def testLastNodeActivity(self): 158 def testLastNodeActivity(self):
156 self.action.classname = 'issue' 159 self.action.classname = 'issue'
157 self.action.nodeid = '1' 160 self.action.nodeid = '1'
163 self.client.db.issue.get = get 166 self.client.db.issue.get = get
164 167
165 self.assertEqual(self.action.lastNodeActivity(), self.now) 168 self.assertEqual(self.action.lastNodeActivity(), self.now)
166 169
167 def testCollision(self): 170 def testCollision(self):
168 self.failUnless(self.action.detectCollision(self.now, self.now + Interval("1d"))) 171 self.failUnless(self.action.detectCollision(
169 self.failIf(self.action.detectCollision(self.now, self.now - Interval("1d"))) 172 self.now, self.now + Interval("1d")))
173 self.failIf(self.action.detectCollision(
174 self.now, self.now - Interval("1d")))
170 self.failIf(self.action.detectCollision(None, self.now)) 175 self.failIf(self.action.detectCollision(None, self.now))
176
177 class LoginTestCase(ActionTestCase):
178 def setUp(self):
179 ActionTestCase.setUp(self)
180 self.client.error_message = []
181
182 # set the db password to 'right'
183 self.client.db.user.get = lambda a,b: 'right'
184
185 # unless explicitly overridden, we should never get here
186 self.client.opendb = lambda a: self.fail(
187 "Logged in, but we shouldn't be.")
188
189 def assertLoginLeavesMessages(self, messages, username=None, password=None):
190 if username is not None:
191 self.form.value.append(MiniFieldStorage('__login_name', username))
192 if password is not None:
193 self.form.value.append(
194 MiniFieldStorage('__login_password', password))
195
196 LoginAction(self.client).handle()
197 self.assertEqual(self.client.error_message, messages)
198
199 def testNoUsername(self):
200 self.assertLoginLeavesMessages(['Username required'])
201
202 def testInvalidUsername(self):
203 def raiseKeyError(a):
204 raise KeyError
205 self.client.db.user.lookup = raiseKeyError
206 self.assertLoginLeavesMessages(['Invalid login'], 'foo')
207
208 def testInvalidPassword(self):
209 self.assertLoginLeavesMessages(['Invalid login'], 'foo', 'wrong')
210
211 def testNoWebAccess(self):
212 self.assertLoginLeavesMessages(['You do not have permission to login'],
213 'foo', 'right')
214
215 def testCorrectLogin(self):
216 self.client.db.security.hasPermission = lambda a,b,c: True
217
218 def opendb(username):
219 self.assertEqual(username, 'foo')
220 self.client.opendb = opendb
221
222 self.assertLoginLeavesMessages([], 'foo', 'right')
171 223
172 def test_suite(): 224 def test_suite():
173 suite = unittest.TestSuite() 225 suite = unittest.TestSuite()
174 suite.addTest(unittest.makeSuite(RetireActionTestCase)) 226 suite.addTest(unittest.makeSuite(RetireActionTestCase))
175 suite.addTest(unittest.makeSuite(StandardSearchActionTestCase)) 227 suite.addTest(unittest.makeSuite(StandardSearchActionTestCase))
176 suite.addTest(unittest.makeSuite(FakeFilterVarsTestCase)) 228 suite.addTest(unittest.makeSuite(FakeFilterVarsTestCase))
177 suite.addTest(unittest.makeSuite(ShowActionTestCase)) 229 suite.addTest(unittest.makeSuite(ShowActionTestCase))
178 suite.addTest(unittest.makeSuite(CollisionDetectionTestCase)) 230 suite.addTest(unittest.makeSuite(CollisionDetectionTestCase))
231 suite.addTest(unittest.makeSuite(LoginTestCase))
179 return suite 232 return suite
180 233
181 if __name__ == '__main__': 234 if __name__ == '__main__':
182 runner = unittest.TextTestRunner() 235 runner = unittest.TextTestRunner()
183 unittest.main(testRunner=runner) 236 unittest.main(testRunner=runner)
184 237
238 # vim: set et sts=4 sw=4 :

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