comparison test/test_xmlrpc.py @ 3828:ba6ba8d6bcc1

Initial checkin for new xmlrpc frontend.
author Stefan Seefeld <stefan@seefeld.name>
date Thu, 22 Mar 2007 02:07:44 +0000
parents
children d0ac8188d274
comparison
equal deleted inserted replaced
3827:5e21117e38b2 3828:ba6ba8d6bcc1
1 #
2 # Copyright (C) 2007 Stefan Seefeld
3 # All rights reserved.
4 # Licensed to the public under the terms of the GNU LGPL (>= 2),
5 # see the file COPYING for details.
6 #
7
8 import unittest, os, shutil, errno, sys, difflib, cgi, re
9
10 from roundup.cgi.exceptions import *
11 from roundup import init, instance, password, hyperdb, date
12 from roundup.xmlrpc import RoundupServer
13
14 import db_test_base
15
16 NEEDS_INSTANCE = 1
17
18 class TestCaseBase(unittest.TestCase):
19
20 def setUp(self):
21
22 self.dirname = '_test_xmlrpc'
23 # set up and open a tracker
24 self.instance = db_test_base.setupTracker(self.dirname)
25
26 # open the database
27 self.db = self.instance.open('admin')
28 self.db.user.create(username='joe', password=password.Password('random'),
29 address='random@home.org',
30 realname='Joe Random', roles='User')
31
32 self.db.commit()
33 self.db.close()
34
35 self.server = RoundupServer(self.dirname)
36
37
38 def tearDown(self):
39
40 try:
41 shutil.rmtree(self.dirname)
42 except OSError, error:
43 if error.errno not in (errno.ENOENT, errno.ESRCH): raise
44
45 class AccessTestCase(TestCaseBase):
46
47 def test(self):
48
49 # Retrieve all three users.
50 results = self.server.list('joe', 'random', 'user', 'id')
51 self.assertEqual(len(results), 3)
52 # Obtain data for 'joe'.
53 userid = 'user' + results[-1]
54 results = self.server.display('joe', 'random', userid)
55 self.assertEqual(results['username'], 'joe')
56 self.assertEqual(results['realname'], 'Joe Random')
57 # Reset joe's 'realname'.
58 results = self.server.set('joe', 'random', userid, 'realname=Joe Doe')
59 results = self.server.display('joe', 'random', userid, 'realname')
60 self.assertEqual(results['realname'], 'Joe Doe')
61 # Create test
62 results = self.server.create('joe', 'random', 'issue', 'title=foo')
63 issueid = 'issue' + results
64 results = self.server.display('joe', 'random', issueid, 'title')
65 self.assertEqual(results['title'], 'foo')
66
67 class AuthenticationTestCase(TestCaseBase):
68
69 def test(self):
70
71 # Unknown user (caught in XMLRPC frontend).
72 self.assertRaises(Unauthorised, self.server.list,
73 'nobody', 'nobody', 'user', 'id')
74 # Wrong permissions (caught by roundup security module).
75 results = self.server.list('joe', 'random', 'user', 'id')
76 userid = 'user' + results[0] # admin
77 # FIXME: why doesn't the following raise an exception ?
78 # self.assertRaises(Unauthorised, self.server.set,
79 # 'joe', 'random', userid, 'realname=someone')
80
81
82 def test_suite():
83 suite = unittest.TestSuite()
84 suite.addTest(unittest.makeSuite(AccessTestCase))
85 suite.addTest(unittest.makeSuite(AuthenticationTestCase))
86 return suite
87
88 if __name__ == '__main__':
89 runner = unittest.TextTestRunner()
90 unittest.main(testRunner=runner)

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