def test_folder_data_traversal_dav(self): container = Container('test') request = DAVTestRequest(environ={'URL': 'http://site/test'}) request.maybe_webdav_client = True traversal = DexterityPublishTraverse(container, request) r = traversal.publishTraverse(request, DAV_FOLDER_DATA_ID) self.assertEqual(DAV_FOLDER_DATA_ID, r.__name__) self.assertEqual(container, r.__parent__) self.assertEqual(container, r.aq_parent)
def test_folder_data_traversal_dav(self): container = Container('test') request = DAVTestRequest( environ={'URL': 'http://site/test'} ) request.maybe_webdav_client = True traversal = DexterityPublishTraverse(container, request) r = traversal.publishTraverse(request, DAV_FOLDER_DATA_ID) self.assertEqual(DAV_FOLDER_DATA_ID, r.__name__) self.assertEqual(container, r.__parent__) self.assertEqual(container, r.aq_parent)
def test_browser_default_without_dav(self): class TestContainer(Container): def __browser_default__(self, request): return self, ("foo",) container = TestContainer("container") request = DAVTestRequest(environ={"URL": "http://site/test", "REQUEST_METHOD": "PROPFIND"}) request.maybe_webdav_client = False traversal = DexterityPublishTraverse(container, request) self.replay() self.assertEqual((container, ("foo",)), traversal.browserDefault(request))
def test_browser_default_dav(self): class TestContainer(Container): def __browser_default__(self, request): return self, ('foo',) container = TestContainer('container') request = DAVTestRequest( environ={'URL': 'http://site/test', 'REQUEST_METHOD': 'PROPFIND'} ) request.maybe_webdav_client = True traversal = DexterityPublishTraverse(container, request) self.assertEqual((container, (),), traversal.browserDefault(request))
def test_browser_default_dav(self): class TestContainer(Container): def __browser_default__(self, request): return self, ('foo',) container = TestContainer('container') request = DAVTestRequest( environ={'URL': 'http://site/test', 'REQUEST_METHOD': 'PROPFIND'} ) request.maybe_webdav_client = True traversal = DexterityPublishTraverse(container, request) self.replay() self.assertEqual((container, (),), traversal.browserDefault(request))
def test_acquire_without_dav(self): container = Container('container') outer = Folder('outer') outer._setObject('item', SimpleItem('item')) outer._setOb('container', container) request = DAVTestRequest( environ={'URL': 'http://site/test', 'REQUEST_METHOD': 'GET'} ) request.maybe_webdav_client = False traversal = DexterityPublishTraverse(container.__of__(outer), request) r = traversal.publishTraverse(request, 'item') self.assertEqual(r.aq_base, outer['item'].aq_base) self.assertEqual(container, r.aq_parent)
def test_no_acquire_dav(self): container = Container('container') outer = Folder('outer') outer._setOb('item', SimpleItem('item')) outer._setOb('container', container) request = DAVTestRequest(environ={'URL': 'http://site/test', 'REQUEST_METHOD': 'PUT'}) request.maybe_webdav_client = True traversal = DexterityPublishTraverse(container.__of__(outer), request) self.replay() r = traversal.publishTraverse(request, 'item') self.failUnless(isinstance(r, NullResource)) self.assertEquals(container, r.aq_parent)
def test_folder_data_traversal_without_dav(self): container = Container('test') request = DAVTestRequest(environ={'URL': 'http://site/test'}) request.maybe_webdav_client = False traversal = DexterityPublishTraverse(container, request) self.assertRaises(Forbidden, traversal.publishTraverse, request, DAV_FOLDER_DATA_ID)
def test_acquire_without_dav(self): container = Container("container") outer = Folder("outer") outer._setObject("item", SimpleItem("item")) outer._setOb("container", container) request = DAVTestRequest(environ={"URL": "http://site/test", "REQUEST_METHOD": "GET"}) request.maybe_webdav_client = False traversal = DexterityPublishTraverse(container.__of__(outer), request) self.replay() r = traversal.publishTraverse(request, "item") self.assertEqual(r.aq_base, outer["item"].aq_base) self.assertEqual(container, r.aq_parent)
def test_no_acquire_dav(self): container = Container("container") outer = Folder("outer") outer._setOb("item", SimpleItem("item")) outer._setOb("container", container) request = DAVTestRequest(environ={"URL": "http://site/test", "REQUEST_METHOD": "PUT"}) request.maybe_webdav_client = True traversal = DexterityPublishTraverse(container.__of__(outer), request) self.replay() r = traversal.publishTraverse(request, "item") self.assertTrue(isinstance(r, NullResource)) self.assertEqual(container, r.aq_parent)
def test_acquire_without_dav(self): container = Container('container') outer = Folder('outer') outer._setObject('item', SimpleItem('item')) outer._setOb('container', container) request = DAVTestRequest(environ={ 'URL': 'http://site/test', 'REQUEST_METHOD': 'GET' }) request.maybe_webdav_client = False traversal = DexterityPublishTraverse(container.__of__(outer), request) r = traversal.publishTraverse(request, 'item') self.assertEqual(r.aq_base, outer['item'].aq_base) self.assertEqual(container, r.aq_parent)
def test_no_acquire_dav(self): container = Container('container') outer = Folder('outer') outer._setOb('item', SimpleItem('item')) outer._setOb('container', container) request = DAVTestRequest(environ={ 'URL': 'http://site/test', 'REQUEST_METHOD': 'PUT' }) request.maybe_webdav_client = True traversal = DexterityPublishTraverse(container.__of__(outer), request) r = traversal.publishTraverse(request, 'item') self.assertTrue(isinstance(r, NullResource)) self.assertEqual(container, r.aq_parent)
def publishTraverse(self, request, name): try: # Default Traverser return DexterityPublishTraverse(self.context, request).publishTraverse( request, name) except (LocationError, KeyError): subpath = self.request.get('collective.remoteproxy__subpath', []) subpath.append(name) self.request['collective.remoteproxy__subpath'] = subpath return self.context
def fallbackTraverse(self, request, name): return DexterityPublishTraverse( self.context, request).publishTraverse(request, name)