def testTransactionAnnotation(self): from zope.interface import directlyProvides from zope.app.location.traversing import LocationPhysicallyLocatable from zope.app.location.interfaces import ILocation from zope.app.traversing.interfaces import IPhysicallyLocatable from zope.app.traversing.interfaces import IContainmentRoot ztapi.provideAdapter(ILocation, IPhysicallyLocatable, LocationPhysicallyLocatable) root = self.db.open().root() root['foo'] = foo = LocatableObject() root['bar'] = bar = LocatableObject() bar.__name__ = 'bar' foo.__name__ = 'foo' bar.__parent__ = foo foo.__parent__ = root directlyProvides(root, IContainmentRoot) from zope.publisher.interfaces import IRequest expected_path = "/foo/bar" expected_user = "******" + self.user.id expected_request = IRequest.__module__ + '.' + IRequest.getName() self.publication.afterCall(self.request, bar) txn_info = self.db.undoInfo()[0] self.assertEqual(txn_info['location'], expected_path) self.assertEqual(txn_info['user_name'], expected_user) self.assertEqual(txn_info['request_type'], expected_request) # also, assert that we still get the right location when # passing an instance method as object. self.publication.afterCall(self.request, bar.foo) self.assertEqual(txn_info['location'], expected_path)
def testTransactionAnnotation(self): from zope.interface import directlyProvides from zope.location.traversing import LocationPhysicallyLocatable from zope.location.interfaces import ILocation from zope.traversing.interfaces import IPhysicallyLocatable from zope.traversing.interfaces import IContainmentRoot ztapi.provideAdapter(ILocation, IPhysicallyLocatable, LocationPhysicallyLocatable) root = self.db.open().root() root['foo'] = foo = LocatableObject() root['bar'] = bar = LocatableObject() bar.__name__ = 'bar' foo.__name__ = 'foo' bar.__parent__ = foo foo.__parent__ = root directlyProvides(root, IContainmentRoot) from zope.publisher.interfaces import IRequest expected_path = "/foo/bar" expected_user = "******" + self.user.id expected_request = IRequest.__module__ + '.' + IRequest.getName() self.publication.afterCall(self.request, bar) txn_info = self.storage.undoInfo()[0] self.assertEqual(txn_info['location'], expected_path) self.assertEqual(txn_info['user_name'], expected_user) self.assertEqual(txn_info['request_type'], expected_request) # also, assert that we still get the right location when # passing an instance method as object. self.publication.afterCall(self.request, bar.foo) self.assertEqual(txn_info['location'], expected_path)
def testTransactionAnnotation(self): from zope.interface import directlyProvides from zope.location.traversing import LocationPhysicallyLocatable from zope.location.interfaces import ILocation from zope.traversing.interfaces import IPhysicallyLocatable from zope.traversing.interfaces import IContainmentRoot component.provideAdapter(LocationPhysicallyLocatable, (ILocation,), IPhysicallyLocatable) def get_txn_info(): if hasattr(self.storage, "iterator"): # ZODB 3.9 txn_id = self.storage.lastTransaction() txn = list(self.storage.iterator(txn_id, txn_id))[0] txn_info = dict( location=txn.extension["location"], user_name=txn.user, request_type=txn.extension["request_type"] ) else: # ZODB 3.8 txn_info = self.storage.undoInfo()[0] return txn_info root = self.db.open().root() root["foo"] = foo = LocatableObject() root["bar"] = bar = LocatableObject() bar.__name__ = "bar" foo.__name__ = "foo" bar.__parent__ = foo foo.__parent__ = root directlyProvides(root, IContainmentRoot) from zope.publisher.interfaces import IRequest expected_path = "/foo/bar" expected_user = "******" + self.user.id expected_request = IRequest.__module__ + "." + IRequest.getName() self.publication.afterCall(self.request, bar) txn_info = get_txn_info() self.assertEqual(txn_info["location"], expected_path) self.assertEqual(txn_info["user_name"], expected_user) self.assertEqual(txn_info["request_type"], expected_request) # also, assert that we still get the right location when # passing an instance method as object. self.publication.afterCall(self.request, bar.foo) txn_info = get_txn_info() self.assertEqual(txn_info["location"], expected_path)
def testTransactionAnnotation(self): from zope.interface import directlyProvides from zope.location.traversing import LocationPhysicallyLocatable from zope.location.interfaces import ILocation from zope.traversing.interfaces import IPhysicallyLocatable from zope.traversing.interfaces import IContainmentRoot component.provideAdapter(LocationPhysicallyLocatable, (ILocation, ), IPhysicallyLocatable) def get_txn_info(): if hasattr(self.storage, 'iterator'): # ZODB 3.9 txn_id = self.storage.lastTransaction() txn = list(self.storage.iterator(txn_id, txn_id))[0] txn_info = dict(location=txn.extension['location'], user_name=txn.user, request_type=txn.extension['request_type']) else: # ZODB 3.8 txn_info = self.storage.undoInfo()[0] return txn_info root = self.db.open().root() root['foo'] = foo = LocatableObject() root['bar'] = bar = LocatableObject() bar.__name__ = 'bar' foo.__name__ = 'foo' bar.__parent__ = foo foo.__parent__ = root directlyProvides(root, IContainmentRoot) from zope.publisher.interfaces import IRequest expected_path = "/foo/bar" expected_user = "******" + self.user.id expected_request = IRequest.__module__ + '.' + IRequest.getName() self.publication.afterCall(self.request, bar) txn_info = get_txn_info() self.assertEqual(txn_info['location'], expected_path) self.assertEqual(txn_info['user_name'], expected_user) self.assertEqual(txn_info['request_type'], expected_request) # also, assert that we still get the right location when # passing an instance method as object. self.publication.afterCall(self.request, bar.foo) txn_info = get_txn_info() self.assertEqual(txn_info['location'], expected_path)
def testTransactionAnnotation(self): from zope.interface import directlyProvides from zope.location.traversing import LocationPhysicallyLocatable from zope.location.interfaces import ILocation from zope.traversing.interfaces import IPhysicallyLocatable from zope.traversing.interfaces import IContainmentRoot component.provideAdapter(LocationPhysicallyLocatable, (ILocation,), IPhysicallyLocatable) def get_txn_info(): txn_id = self.storage.lastTransaction() txn = list(self.storage.iterator(txn_id, txn_id))[0] txn_info = dict(location=txn.extension['location'], user_name=txn.user, request_type=txn.extension['request_type']) return txn_info root = self.db.open().root() root['foo'] = foo = LocatableObject() root['bar'] = bar = LocatableObject() bar.__name__ = 'bar' foo.__name__ = 'foo' bar.__parent__ = foo foo.__parent__ = root directlyProvides(root, IContainmentRoot) from zope.publisher.interfaces import IRequest expected_path = "/foo/bar" expected_user = "******".format(self.user.id).encode('utf-8') expected_request = IRequest.__module__ + '.' + IRequest.getName() self.publication.afterCall(self.request, bar) txn_info = get_txn_info() self.assertEqual(txn_info['location'], expected_path) self.assertEqual(txn_info['user_name'], expected_user) self.assertEqual(txn_info['request_type'], expected_request) # also, assert that we still get the right location when # passing an instance method as object. self.publication.afterCall(self.request, bar.foo) txn_info = get_txn_info() self.assertEqual(txn_info['location'], expected_path)