File:  [Repository] / ExtFile / tests / testPUT_factory.py
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Jan 24 16:53:50 2007 UTC (17 years, 3 months ago) by dwinter
Branches: first, MAIN
CVS tags: release, HEAD
Auf der Basis http://www.zope.org/Members/shh/ExtFile Version 1.5.4

mit zlog ersetzt durch logging


#
# 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>