def test_ftp(self): from ZODB.tests.util import DB from zope.app.server.ftp import FTPRequestFactory db = DB() factory = FTPRequestFactory(db) request = factory(BytesIO(b''), {'credentials': None, 'path': '/'}) self.assertTrue(request.publication.db is db) db.close()
class TestBootstrapSubscriber(PlacefulSetup, unittest.TestCase): def setUp(self): PlacefulSetup.setUp(self) self.db = DB() def tearDown(self): PlacefulSetup.tearDown(self) self.db.close() def createRootFolder(self): cx = self.db.open() root = cx.root() self.root_folder = rootFolder() root[ZopePublication.root_name] = self.root_folder transaction.commit() cx.close() def createRFAndSM(self): cx = self.db.open() root = cx.root() self.root_folder = rootFolder() root[ZopePublication.root_name] = self.root_folder self.site_manager = LocalSiteManager(self.root_folder) self.root_folder.setSiteManager(self.site_manager) sub_folder = Folder() self.root_folder["sub_folder"] = sub_folder sub_site_manager = LocalSiteManager(sub_folder) sub_folder.setSiteManager(sub_site_manager) transaction.commit() cx.close() def test_notify(self): for setup in (lambda: None), self.createRootFolder, self.createRFAndSM: setup() bootStrapSubscriber(EventStub(self.db)) cx = self.db.open() root = cx.root() root_folder = root.get(ZopePublication.root_name, None) self.assert_(IRootFolder.providedBy(root_folder)) package_name = '/++etc++site/default' package = traverse(root_folder, package_name) cx.close() def test_ensureUtilityForSubSite(self): self.createRFAndSM() db, connection, root, root_folder = getInformationFromEvent( EventStub(self.db)) sub_folder = root_folder['sub_folder'] ensureUtility(sub_folder, IErrorReportingUtility, 'ErrorReporting', ErrorReportingUtility, 'ErrorReporting') # Make sure it was created on the sub folder, not the root folder got_utility = zapi.getUtility(IErrorReportingUtility, name='ErrorReporting', context=sub_folder) got_path = zapi.getPath(got_utility) self.assertEquals("/sub_folder/++etc++site/default/ErrorReporting", got_path) def test_ensureUtility(self): self.createRFAndSM() db, connection, root, root_folder = getInformationFromEvent( EventStub(self.db)) # TODO: check EventSub root_folder = self.root_folder for i in range(2): cx = self.db.open() name = ensureUtility(root_folder, IErrorReportingUtility, 'ErrorReporting', ErrorReportingUtility, 'ErrorReporting') if i == 0: self.assertEqual(name, 'ErrorReporting') else: self.assertEqual(name, None) root = cx.root() root_folder = root[ZopePublication.root_name] package_name = '/++etc++site/default' package = traverse(self.root_folder, package_name) self.assert_(IErrorReportingUtility.providedBy( traverse(package, 'ErrorReporting'))) transaction.commit() cx.close()
class TestBootstrapSubscriber(unittest.TestCase): layer = layer def setUp(self): self.db = DB() def tearDown(self): transaction.abort() self.db.close() def createRootFolder(self): cx = self.db.open() root = cx.root() self.root_folder = rootFolder() root[ZopePublication.root_name] = self.root_folder transaction.commit() cx.close() def createRFAndSM(self): cx = self.db.open() root = cx.root() self.root_folder = rootFolder() root[ZopePublication.root_name] = self.root_folder self.site_manager = LocalSiteManager(self.root_folder) self.root_folder.setSiteManager(self.site_manager) sub_folder = Folder() self.root_folder["sub_folder"] = sub_folder sub_site_manager = LocalSiteManager(sub_folder) sub_folder.setSiteManager(sub_site_manager) transaction.commit() cx.close() def test_notify(self): for setup in (lambda: None), self.createRootFolder, self.createRFAndSM: setup() bootStrapSubscriber(EventStub(self.db)) cx = self.db.open() root = cx.root() root_folder = root.get(ZopePublication.root_name, None) self.assert_(IRootFolder.providedBy(root_folder)) package_name = '/++etc++site/default' package = traverse(root_folder, package_name) cx.close() def test_ensureUtilityForSubSite(self): self.createRFAndSM() db, connection, root, root_folder = getInformationFromEvent( EventStub(self.db)) sub_folder = root_folder['sub_folder'] ensureUtility(sub_folder, IErrorReportingUtility, 'ErrorReporting', ErrorReportingUtility, 'ErrorReporting') # Make sure it was created on the sub folder, not the root folder got_utility = zope.component.getUtility(IErrorReportingUtility, name='ErrorReporting', context=sub_folder) got_path = getPath(got_utility) self.assertEquals("/sub_folder/++etc++site/default/ErrorReporting", got_path) def test_ensureUtility(self): self.createRFAndSM() db, connection, root, root_folder = getInformationFromEvent( EventStub(self.db)) # TODO: check EventSub root_folder = self.root_folder for i in range(2): cx = self.db.open() utility = ensureUtility(root_folder, IErrorReportingUtility, 'ErrorReporting', ErrorReportingUtility, 'ErrorReporting') utility2 = ensureUtility(root_folder, IErrorReportingUtility, 'ErrorReporting2', ErrorReportingUtility, 'ErrorReporting2') if utility != None: name = utility.__name__ name2 = utility2.__name__ else: name = None name2 = None if i == 0: self.assertEqual(name, 'ErrorReporting') self.assertEqual(name2, 'ErrorReporting2') else: self.assertEqual(name, None) self.assertEqual(name2, None) root = cx.root() root_folder = root[ZopePublication.root_name] package_name = '/++etc++site/default' package = traverse(self.root_folder, package_name) self.assert_(IErrorReportingUtility.providedBy( traverse(package, 'ErrorReporting'))) self.assert_(IErrorReportingUtility.providedBy( traverse(package, 'ErrorReporting2'))) transaction.commit() cx.close() def test_errorReportingSetup(self): """Error reporting is set up by an event handler in this package. We test whether the event handler works. """ self.createRFAndSM() event = DatabaseOpened(self.db) # this will open and close the database by itself errorlogBootStrapSubscriber(event) # this will re-open the database db, connection, root, root_folder = getInformationFromEvent(event) got_utility = zope.component.getUtility(IErrorReportingUtility, context=root_folder) self.failUnless(IErrorReportingUtility.providedBy(got_utility)) # we need to close again in the end connection.close() def test_bootstrapSusbcriber(self): self.createRFAndSM() event = DatabaseOpened(self.db) # this will open and close the database by itself sessionBootstrapSubscriber(event) db, connection, root, root_folder = getInformationFromEvent(event) got_utility = zope.component.getUtility(IClientIdManager, context=root_folder) self.failUnless(IClientIdManager.providedBy(got_utility)) got_utility = zope.component.getUtility(ISessionDataContainer, context=root_folder) self.failUnless(ISessionDataContainer.providedBy(got_utility)) # we need to close again in the end connection.close()