#
# Tests the PUT_factory() and PUT() method, especially with
# SYNC_ZODB repository type.
#
import os, sys
if __name__ == '__main__':
execfile(os.path.join(sys.path[0], 'framework.py'))
from Testing import ZopeTestCase
ZopeTestCase.installProduct('SiteAccess')
ZopeTestCase.installProduct('ExternalMethod')
ZopeTestCase.installProduct('ExtFile')
from Products.ExtFile.tests.ExtFileTestCase import ExtFileTestCase
from Products.ExtFile.tests.ExtFileTestCase import gifImage
from Products.ExtFile.tests.ExtFileTestCase import copymove_perms
from Products.ExtFile import ExtFile, Config
from webdav.NullResource import NullResource
from Acquisition import aq_base
user_name = ZopeTestCase.user_name
user_password = ZopeTestCase.user_password
import base64
auth_info = 'Basic %s' % base64.encodestring('%s:%s' % (user_name, user_password)).rstrip()
from os.path import join
class TestPUTFactory(ExtFileTestCase):
def afterSetUp(self):
ExtFileTestCase.afterSetUp(self)
self.setPermissions(copymove_perms)
if not self.app.objectIds('Virtual Host Monster'):
factory = self.app.manage_addProduct['SiteAccess']
factory.manage_addVirtualHostMonster('VHM')
factory = self.folder.manage_addProduct['ExternalMethod']
factory.manage_addExternalMethod('PUT_factory', '', 'ExtFile.PUT_factory', 'PUT_factory')
self.folder.manage_addFolder('subfolder')
self.subfolder = self.folder.subfolder
request = self.app.REQUEST
request['PARENTS'] = [self.app]
# Fake a dav PUT request
request['BODYFILE'] = open(gifImage, 'rb')
request.environ['CONTENT_TYPE'] = 'image/gif'
request.environ['REQUEST_METHOD'] = 'PUT'
request._auth = auth_info
def afterClear(self):
ExtFileTestCase.afterClear(self)
ExtFile.REPOSITORY = Config.FLAT
ExtFile.ZODB_PATH = Config.VIRTUAL
def testPUT_factoryAddsImageNoTraverse(self):
request = self.app.REQUEST
new = NullResource(self.folder, 'image', request).__of__(self.folder)
new.PUT(request, request.RESPONSE)
self.failUnless(hasattr(aq_base(self.folder), 'image'))
self.failUnless(self._exists('image.gif.tmp'))
def testPUT_factoryAddsImageFlat(self):
ExtFile.REPOSITORY = Config.FLAT
request = self.app.REQUEST
put = request.traverse('/test_folder_1_/image')
put(request, request.RESPONSE)
self.failUnless(hasattr(aq_base(self.folder), 'image'))
self.failUnless(self._exists('image.gif.tmp'))
def testPUT_factoryAddsImageSyncZodb(self):
ExtFile.REPOSITORY = Config.SYNC_ZODB
request = self.app.REQUEST
put = request.traverse('/test_folder_1_/image')
put(request, request.RESPONSE)
self.failUnless(hasattr(aq_base(self.folder), 'image'))
self.failUnless(self._exists(join('test_folder_1_', 'image.gif.tmp')))
def testPUT_factoryAddsImageSyncZodbSubfolder(self):
ExtFile.REPOSITORY = Config.SYNC_ZODB
request = self.app.REQUEST
put = request.traverse('/test_folder_1_/subfolder/image')
put(request, request.RESPONSE)
self.failUnless(hasattr(aq_base(self.subfolder), 'image'))
self.failUnless(self._exists(join('test_folder_1_', 'subfolder', 'image.gif.tmp')))
def testPUT_factoryAddsImageSyncZodbVHM(self):
ExtFile.REPOSITORY = Config.SYNC_ZODB
request = self.app.REQUEST
put = request.traverse('/VirtualHostBase/http/foo.com:80/VirtualHostRoot/test_folder_1_/subfolder/image')
put(request, request.RESPONSE)
self.failUnless(hasattr(aq_base(self.subfolder), 'image'))
self.failUnless(self._exists(join('test_folder_1_', 'subfolder', 'image.gif.tmp')))
def testPUT_factoryAddsImageSyncZodbVHMSubfolderHostingVirtual(self):
ExtFile.REPOSITORY = Config.SYNC_ZODB
request = self.app.REQUEST
put = request.traverse('/VirtualHostBase/http/foo.com:80/test_folder_1_/VirtualHostRoot/subfolder/image')
put(request, request.RESPONSE)
self.failUnless(hasattr(aq_base(self.subfolder), 'image'))
self.failUnless(self._exists(join('subfolder', 'image.gif.tmp')))
def testPUT_factoryAddsImageSyncZodbVHMInsideOutHostingVirtual(self):
ExtFile.REPOSITORY = Config.SYNC_ZODB
request = self.app.REQUEST
put = request.traverse('/VirtualHostBase/http/foo.com:80/VirtualHostRoot/_vh_foo/test_folder_1_/subfolder/image')
put(request, request.RESPONSE)
self.failUnless(hasattr(aq_base(self.subfolder), 'image'))
self.failUnless(self._exists(join('test_folder_1_', 'subfolder', 'image.gif.tmp')))
def testPUT_factoryAddsImageSyncZodbVHMSubfolderInsideOutHostingVirtual(self):
ExtFile.REPOSITORY = Config.SYNC_ZODB
request = self.app.REQUEST
put = request.traverse('/VirtualHostBase/http/foo.com:80/test_folder_1_/VirtualHostRoot/_vh_foo/subfolder/image')
put(request, request.RESPONSE)
self.failUnless(hasattr(aq_base(self.subfolder), 'image'))
self.failUnless(self._exists(join('subfolder', 'image.gif.tmp')))
def testPUT_factoryAddsImageSyncZodbVHMSubfolderHostingPhysical(self):
ExtFile.REPOSITORY = Config.SYNC_ZODB
ExtFile.ZODB_PATH = Config.PHYSICAL
request = self.app.REQUEST
put = request.traverse('/VirtualHostBase/http/foo.com:80/test_folder_1_/VirtualHostRoot/subfolder/image')
put(request, request.RESPONSE)
self.failUnless(hasattr(aq_base(self.subfolder), 'image'))
self.failUnless(self._exists(join('test_folder_1_', 'subfolder', 'image.gif.tmp')))
def testPUT_factoryAddsImageSyncZodbVHMInsideOutHostingPhysical(self):
ExtFile.REPOSITORY = Config.SYNC_ZODB
ExtFile.ZODB_PATH = Config.PHYSICAL
request = self.app.REQUEST
put = request.traverse('/VirtualHostBase/http/foo.com:80/VirtualHostRoot/_vh_foo/test_folder_1_/subfolder/image')
put(request, request.RESPONSE)
self.failUnless(hasattr(aq_base(self.subfolder), 'image'))
self.failUnless(self._exists(join('test_folder_1_', 'subfolder', 'image.gif.tmp')))
def testPUT_factoryAddsImageSyncZodbVHMSubfolderInsideOutHostingPhysical(self):
ExtFile.REPOSITORY = Config.SYNC_ZODB
ExtFile.ZODB_PATH = Config.PHYSICAL
request = self.app.REQUEST
put = request.traverse('/VirtualHostBase/http/foo.com:80/test_folder_1_/VirtualHostRoot/_vh_foo/subfolder/image')
put(request, request.RESPONSE)
self.failUnless(hasattr(aq_base(self.subfolder), 'image'))
self.failUnless(self._exists(join('test_folder_1_', 'subfolder', 'image.gif.tmp')))
def test_suite():
from unittest import TestSuite, makeSuite
suite = TestSuite()
suite.addTest(makeSuite(TestPUTFactory))
return suite
if __name__ == '__main__':
framework()
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>