diff --git a/test/db_test_base.py b/test/db_test_base.py
index 241fd9528e067f8c4368c3c55a0ed864fec4307c..356fb7e56ef19e248b19a7898188394570dbf2cb 100644 (file)
--- a/test/db_test_base.py
+++ b/test/db_test_base.py
priority.create(name="bug", order="1")
db.commit()
+ # nosy tests require this
+ db.security.addPermissionToRole('User', 'View', 'msg')
+
class MyTestCase(unittest.TestCase):
def tearDown(self):
if hasattr(self, 'db'):
# XXX add sorting tests for other types
+ # nuke and re-create db for restore
+ def nukeAndCreate(self):
+ # shut down this db and nuke it
+ self.db.close()
+ self.nuke_database()
+
+ # open a new, empty database
+ os.makedirs(config.DATABASE + '/files')
+ self.db = self.module.Database(config, 'admin')
+ setupSchema(self.db, 0, self.module)
+
+
def testImportExport(self):
# use the filtering setup to create a bunch of items
ae, filt = self.filteringSetup()
klass.export_files('_test_export', id)
journals[cn] = klass.export_journals()
- # shut down this db and nuke it
- self.db.close()
- self.nuke_database()
-
- # open a new, empty database
- os.makedirs(config.DATABASE + '/files')
- self.db = self.module.Database(config, 'admin')
- setupSchema(self.db, 0, self.module)
+ self.nukeAndCreate()
# import
for cn, items in export.items():
newid = self.db.user.create(username='testing')
assert newid > maxid
+ # test import/export via admin interface
+ def testAdminImportExport(self):
+ import roundup.admin
+ import csv
+ # use the filtering setup to create a bunch of items
+ ae, filt = self.filteringSetup()
+ # create large field
+ self.db.priority.create(name = 'X' * 500)
+ self.db.config.CSV_FIELD_SIZE = 400
+ self.db.commit()
+ output = []
+ # ugly hack to get stderr output and disable stdout output
+ # during regression test. Depends on roundup.admin not using
+ # anything but stdout/stderr from sys (which is currently the
+ # case)
+ def stderrwrite(s):
+ output.append(s)
+ roundup.admin.sys = MockNull ()
+ try:
+ roundup.admin.sys.stderr.write = stderrwrite
+ tool = roundup.admin.AdminTool()
+ home = '.'
+ tool.tracker_home = home
+ tool.db = self.db
+ tool.verbose = False
+ tool.do_export (['_test_export'])
+ self.assertEqual(len(output), 2)
+ self.assertEqual(output [1], '\n')
+ self.failUnless(output [0].startswith
+ ('Warning: config csv_field_size should be at least'))
+ self.failUnless(int(output[0].split()[-1]) > 500)
+
+ if hasattr(roundup.admin.csv, 'field_size_limit'):
+ self.nukeAndCreate()
+ self.db.config.CSV_FIELD_SIZE = 400
+ tool = roundup.admin.AdminTool()
+ tool.tracker_home = home
+ tool.db = self.db
+ tool.verbose = False
+ self.assertRaises(csv.Error, tool.do_import, ['_test_export'])
+
+ self.nukeAndCreate()
+ self.db.config.CSV_FIELD_SIZE = 3200
+ tool = roundup.admin.AdminTool()
+ tool.tracker_home = home
+ tool.db = self.db
+ tool.verbose = False
+ tool.do_import(['_test_export'])
+ finally:
+ roundup.admin.sys = sys
+ shutil.rmtree('_test_export')
+
def testAddProperty(self):
self.db.issue.create(title="spam", status='1')
self.db.commit()
messages = [m], nosy = [db.user.lookup("fred")])
db.issue.nosymessage(i, m, {})
- mail_msg = res["mail_msg"].getvalue()
+ mail_msg = str(res["mail_msg"])
self.assertEqual(res["mail_to"], ["fred@example.com"])
self.failUnless("From: admin" in mail_msg)
self.failUnless("Subject: [issue1] spam" in mail_msg)