Mercurial > p > roundup > code
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 : |
