|
14 | 14 |
|
15 | 15 | NEEDS_INSTANCE = 1 |
16 | 16 |
|
17 | | -class TestCaseBase(unittest.TestCase): |
18 | | - |
| 17 | +class TestCase(unittest.TestCase): |
19 | 18 | def setUp(self): |
20 | | - |
21 | 19 | self.dirname = '_test_xmlrpc' |
22 | 20 | # set up and open a tracker |
23 | 21 | self.instance = db_test_base.setupTracker(self.dirname) |
24 | 22 |
|
25 | 23 | # open the database |
26 | 24 | self.db = self.instance.open('admin') |
27 | | - self.db.user.create(username='joe', password=password.Password('random'), |
28 | | - |
29 | | - realname='Joe Random', roles='User') |
| 25 | + self.joeid = 'user' + self.db.user.create(username='joe', |
| 26 | + password=password.Password('random'), address='[email protected]', |
| 27 | + realname='Joe Random', roles='User') |
30 | 28 |
|
31 | 29 | self.db.commit() |
32 | 30 | self.db.close() |
33 | | - |
34 | | - self.server = RoundupServer(self.dirname) |
35 | 31 |
|
| 32 | + self.server = RoundupServer(self.dirname) |
36 | 33 |
|
37 | 34 | def tearDown(self): |
38 | | - |
39 | 35 | try: |
40 | 36 | shutil.rmtree(self.dirname) |
41 | 37 | except OSError, error: |
42 | 38 | if error.errno not in (errno.ENOENT, errno.ESRCH): raise |
43 | 39 |
|
44 | | -class AccessTestCase(TestCaseBase): |
45 | | - |
46 | | - def test(self): |
47 | | - |
| 40 | + def testAccess(self): |
48 | 41 | # Retrieve all three users. |
49 | 42 | results = self.server.list('joe', 'random', 'user', 'id') |
50 | 43 | self.assertEqual(len(results), 3) |
| 44 | + |
51 | 45 | # Obtain data for 'joe'. |
52 | | - userid = 'user' + results[-1] |
53 | | - results = self.server.display('joe', 'random', userid) |
| 46 | + results = self.server.display('joe', 'random', self.joeid) |
54 | 47 | self.assertEqual(results['username'], 'joe') |
55 | 48 | self.assertEqual(results['realname'], 'Joe Random') |
| 49 | + |
| 50 | + def testChange(self): |
56 | 51 | # Reset joe's 'realname'. |
57 | | - results = self.server.set('joe', 'random', userid, 'realname=Joe Doe') |
58 | | - results = self.server.display('joe', 'random', userid, 'realname') |
| 52 | + results = self.server.set('joe', 'random', self.joeid, |
| 53 | + 'realname=Joe Doe') |
| 54 | + results = self.server.display('joe', 'random', self.joeid, |
| 55 | + 'realname') |
59 | 56 | self.assertEqual(results['realname'], 'Joe Doe') |
60 | | - # Create test |
| 57 | + |
| 58 | + def testCreate(self): |
61 | 59 | results = self.server.create('joe', 'random', 'issue', 'title=foo') |
62 | 60 | issueid = 'issue' + results |
63 | 61 | results = self.server.display('joe', 'random', issueid, 'title') |
64 | 62 | self.assertEqual(results['title'], 'foo') |
65 | 63 |
|
66 | | -class AuthenticationTestCase(TestCaseBase): |
67 | | - |
68 | | - def test(self): |
69 | | - |
| 64 | + def testAuthUnknown(self): |
70 | 65 | # Unknown user (caught in XMLRPC frontend). |
71 | 66 | self.assertRaises(Unauthorised, self.server.list, |
72 | | - 'nobody', 'nobody', 'user', 'id') |
| 67 | + 'nobody', 'nobody', 'user', 'id') |
| 68 | + |
| 69 | + def testAuthDeniedEdit(self): |
73 | 70 | # Wrong permissions (caught by roundup security module). |
74 | | - results = self.server.list('joe', 'random', 'user', 'id') |
75 | | - userid = 'user' + results[0] # admin |
76 | 71 | self.assertRaises(Unauthorised, self.server.set, |
77 | | - 'joe', 'random', userid, 'realname=someone') |
| 72 | + 'joe', 'random', 'user1', 'realname=someone') |
78 | 73 |
|
| 74 | + def testAuthDeniedCreate(self): |
| 75 | + self.assertRaises(Unauthorised, self.server.create, |
| 76 | + 'joe', 'random', 'user', {'username': 'blah'}) |
| 77 | + |
| 78 | + def testAuthAllowedEdit(self): |
| 79 | + try: |
| 80 | + self.server.set('admin', 'sekrit', 'user2', 'realname=someone') |
| 81 | + except Unauthorised, err: |
| 82 | + self.fail('raised %s'%err) |
| 83 | + |
| 84 | + def testAuthAllowedCreate(self): |
| 85 | + try: |
| 86 | + self.server.create('admin', 'sekrit', 'user', 'username=blah') |
| 87 | + except Unauthorised, err: |
| 88 | + self.fail('raised %s'%err) |
79 | 89 |
|
80 | 90 | def test_suite(): |
81 | 91 | suite = unittest.TestSuite() |
82 | | - suite.addTest(unittest.makeSuite(AccessTestCase)) |
83 | | - suite.addTest(unittest.makeSuite(AuthenticationTestCase)) |
| 92 | + suite.addTest(unittest.makeSuite(TestCase)) |
84 | 93 | return suite |
85 | 94 |
|
86 | 95 | if __name__ == '__main__': |
87 | 96 | runner = unittest.TextTestRunner() |
88 | 97 | unittest.main(testRunner=runner) |
| 98 | + |
0 commit comments