Mercurial > p > roundup > code
annotate test/test_memorydb.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 | 6e3e4f24c753 |
| children | 63c79c0992ae |
| rev | line source |
|---|---|
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1 import unittest, os, shutil, time |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2 |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3 from roundup import hyperdb |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
4 |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
5 from db_test_base import DBTest, ROTest, SchemaTest, config, setupSchema |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
6 import memorydb |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
7 |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
8 class memorydbOpener: |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
9 module = memorydb |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
10 |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
11 def nuke_database(self): |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
12 # really kill it |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
13 self.db = None |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
14 |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
15 db = None |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
16 def open_database(self): |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
17 if self.db is None: |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
18 self.db = self.module.Database(config, 'admin') |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
19 return self.db |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
20 |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
21 def setUp(self): |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
22 self.open_database() |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
23 setupSchema(self.db, 1, self.module) |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
24 |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
25 def tearDown(self): |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
26 if self.db is not None: |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
27 self.db.close() |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
28 |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
29 # nuke and re-create db for restore |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
30 def nukeAndCreate(self): |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
31 self.db.close() |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
32 self.nuke_database() |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
33 self.db = self.module.Database(config, 'admin') |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
34 setupSchema(self.db, 0, self.module) |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
35 |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
36 class memorydbDBTest(memorydbOpener, DBTest): |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
37 pass |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
38 |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
39 class memorydbROTest(memorydbOpener, ROTest): |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
40 def setUp(self): |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
41 self.db = self.module.Database(config) |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
42 setupSchema(self.db, 0, self.module) |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
43 |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
44 class memorydbSchemaTest(memorydbOpener, SchemaTest): |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
45 pass |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
46 |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
47 from session_common import DBMTest |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
48 class memorydbSessionTest(memorydbOpener, DBMTest): |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
49 def setUp(self): |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
50 self.db = self.module.Database(config, 'admin') |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
51 setupSchema(self.db, 1, self.module) |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
52 self.sessions = self.db.sessions |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
53 |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
54 def test_suite(): |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
55 suite = unittest.TestSuite() |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
56 print 'Including memorydb tests' |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
57 suite.addTest(unittest.makeSuite(memorydbDBTest)) |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
58 suite.addTest(unittest.makeSuite(memorydbROTest)) |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
59 suite.addTest(unittest.makeSuite(memorydbSchemaTest)) |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
60 suite.addTest(unittest.makeSuite(memorydbSessionTest)) |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
61 return suite |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
62 |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
63 if __name__ == '__main__': |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
64 runner = unittest.TextTestRunner() |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
65 unittest.main(testRunner=runner) |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
66 |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
67 |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
68 # vim: set filetype=python ts=4 sw=4 et si |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
69 |
