Mercurial > p > roundup > code
diff test/test_xmlrpc.py @ 4781:6e9b9743de89
Implementation for:
http://issues.roundup-tracker.org/issue2550731
Add mechanism for the detectors to be able to tell the source of the
data changes.
Support for tx_Source property on database handle. Can be
used by detectors to find out the source of a change in an auditor to
block changes arriving by unauthenticated mechanisms (e.g. plain email
where headers can be faked). The property db.tx_Source has the
following values:
* None - Default value set to None. May be valid if it's a script
that is created by the user. Otherwise it's an error and indicates
that some code path is not properly setting the tx_Source property.
* "cli" - this string value is set when using roundup-admin and
supplied scripts.
* "web" - this string value is set when using any web based
technique: html interface, xmlrpc ....
* "email" - this string value is set when using an unauthenticated
email based technique.
* "email-sig-openpgp" - this string value is set when email with a
valid pgp signature is used. (*NOTE* the testing for this mode
is incomplete. If you have a pgp infrastructure you should test
and verify that this is properly set.)
This also includes some (possibly incomplete) tests cases for the
modes above and an example of using ts_Source in the customization.txt
document.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Tue, 23 Apr 2013 23:06:09 -0400 |
| parents | 17f796a78647 |
| children | d9e5539303bd |
line wrap: on
line diff
--- a/test/test_xmlrpc.py Fri Mar 22 15:53:27 2013 +0100 +++ b/test/test_xmlrpc.py Tue Apr 23 23:06:09 2013 -0400 @@ -10,6 +10,7 @@ from roundup import init, instance, password, hyperdb, date from roundup.xmlrpc import RoundupInstance from roundup.backends import list_backends +from roundup.hyperdb import String import db_test_base @@ -26,6 +27,8 @@ # open the database self.db = self.instance.open('admin') + + # Get user id (user4 maybe). Used later to get data from db. self.joeid = 'user' + self.db.user.create(username='joe', password=password.Password('random'), address='random@home.org', realname='Joe Random', roles='User') @@ -33,6 +36,20 @@ self.db.commit() self.db.close() self.db = self.instance.open('joe') + + self.db.tx_Source = 'web' + + self.db.issue.addprop(tx_Source=hyperdb.String()) + self.db.msg.addprop(tx_Source=hyperdb.String()) + + self.db.post_init() + + vars = dict(globals()) + vars['db'] = self.db + vars = {} + execfile("test/tx_Source_detector.py", vars) + vars['init'](self.db) + self.server = RoundupInstance(self.db, self.instance.actions, None) def tearDown(self): @@ -66,6 +83,7 @@ issueid = 'issue' + results results = self.server.display(issueid, 'title') self.assertEqual(results['title'], 'foo') + self.assertEqual(self.db.issue.get('1', "tx_Source"), 'web') def testFileCreate(self): results = self.server.create('file', 'content=hello\r\nthere') @@ -183,6 +201,12 @@ self.db.close() self.db = self.instance.open('chef') + self.db.tx_Source = 'web' + + self.db.issue.addprop(tx_Source=hyperdb.String()) + self.db.msg.addprop(tx_Source=hyperdb.String()) + self.db.post_init() + self.server = RoundupInstance(self.db, self.instance.actions, None) # Filter on keyword works for role 'Project':
