Annotation of ExtFile/tests/ExtFileTestCase.py, revision 1.1

1.1     ! dwinter     1: 
        !             2: from Testing import ZopeTestCase
        !             3: 
        !             4: import os, sys, tempfile
        !             5: 
        !             6: from Products.ExtFile import transaction
        !             7: 
        !             8: # Repository configuration
        !             9: from Products.ExtFile import ExtFile, Config
        !            10: ExtFile.ExtFile._repository = ['reposit']
        !            11: ExtFile.REPOSITORY = Config.FLAT
        !            12: ExtFile.NORMALIZE_CASE = Config.KEEP
        !            13: ExtFile.ZODB_PATH = Config.VIRTUAL
        !            14: ExtFile.REPOSITORY_EXTENSIONS = Config.MIMETYPE_REPLACE
        !            15: ExtFile.UNDO_POLICY = Config.BACKUP_ON_DELETE
        !            16:             
        !            17: # File names of test data
        !            18: from Globals import package_home
        !            19: here = package_home(globals())
        !            20: gifImage = os.path.join(here, 'data', 'Folder_icon.gif')
        !            21: jpegImage = os.path.join(here, 'data', 'Teneriffa_small.jpg')
        !            22: tiffImage = os.path.join(here, 'data', 'Mountain_cmyk.tif')
        !            23: notImage = os.path.join(here, 'data', 'Binary.foo')
        !            24: 
        !            25: # Define some permission sets
        !            26: standard_perms = ZopeTestCase.standard_permissions
        !            27: copymove_perms = ['View management screens', 'Add ExtImages', 'Add ExtFiles', 'Delete objects']
        !            28: access_perms = ['View management screens']
        !            29: change_perms = ['Change ExtFile/ExtImage']
        !            30: 
        !            31: # Put some Zope objects into the test ZODB
        !            32: app = ZopeTestCase.app()
        !            33: factory = app.manage_addProduct['OFSP']
        !            34: factory.manage_addImage('GifImage', file=open(gifImage, 'rb'))
        !            35: factory.manage_addImage('JpegImage', file=open(jpegImage, 'rb'), content_type='image/jpeg')
        !            36: factory.manage_addImage('TiffImage', file=open(tiffImage, 'rb'), content_type='image/tiff')
        !            37: factory.manage_addFile('NotImage', file=open(notImage, 'rb'))
        !            38: transaction.commit()
        !            39: ZopeTestCase.close(app)
        !            40: 
        !            41: # Load ZCML to get events configured
        !            42: try:
        !            43:     import Products.Five
        !            44:     import OFS.subscribers
        !            45: except ImportError:
        !            46:     pass
        !            47: else:
        !            48:     from Products.Five import zcml
        !            49:     zcml.load_config('configure.zcml', Products.Five)
        !            50:             
        !            51:         
        !            52: class LocalInstanceHome:
        !            53:             
        !            54:     local_home = here #tempfile.gettempdir()
        !            55:             
        !            56:     def afterSetUp(self):
        !            57:         try:
        !            58:             import App.config
        !            59:         except ImportError:
        !            60:             # Modify builtins
        !            61:             b = getattr(__builtins__, '__dict__', __builtins__)
        !            62:             self._ih = INSTANCE_HOME
        !            63:             b['INSTANCE_HOME'] = self.local_home
        !            64:         else:
        !            65:             # Zope 2.7+
        !            66:             cfg = App.config.getConfiguration()
        !            67:             self._ih = cfg.instancehome
        !            68:             cfg.instancehome = self.local_home
        !            69:             App.config.setConfiguration(cfg)
        !            70: 
        !            71:     def afterClear(self):
        !            72:         try:
        !            73:             import App.config
        !            74:         except ImportError:
        !            75:             # Restore builtins
        !            76:             b = getattr(__builtins__, '__dict__', __builtins__)
        !            77:             if hasattr(self, '_ih'):
        !            78:                 b['INSTANCE_HOME'] = self._ih
        !            79:         else:
        !            80:             # Zope 2.7+
        !            81:             cfg = App.config.getConfiguration()
        !            82:             if hasattr(self, '_ih'):
        !            83:                 cfg.instancehome = self._ih
        !            84:             App.config.setConfiguration(cfg)
        !            85: 
        !            86: 
        !            87: class ExtFileTestCase(LocalInstanceHome, ZopeTestCase.ZopeTestCase):
        !            88:         
        !            89:     def afterSetUp(self):
        !            90:         LocalInstanceHome.afterSetUp(self)
        !            91:         self._nuke_reposit = 1
        !            92: 
        !            93:     def afterClear(self):
        !            94:         if getattr(self, '_nuke_reposit', 0):
        !            95:             # Remove repository
        !            96:             repository = os.path.join(INSTANCE_HOME, 'reposit')
        !            97:             if os.path.isdir(repository): 
        !            98:                 import shutil
        !            99:                 shutil.rmtree(repository, 1)
        !           100:             del self._nuke_reposit
        !           101:         LocalInstanceHome.afterClear(self)
        !           102:         
        !           103:     def _fsname(self, id):
        !           104:         return os.path.join(INSTANCE_HOME, 'reposit', id)
        !           105:         
        !           106:     def _exists(self, id):
        !           107:         return os.path.isfile(self._fsname(id))
        !           108:         
        !           109:     def _listdir(self):
        !           110:         return os.listdir(os.path.join(INSTANCE_HOME, 'reposit'))
        !           111:         
        !           112:     def _fsize(self, id):
        !           113:         return os.stat(id)[6]
        !           114:         
        !           115:     def addExtFile(self, id, file, content_type='', folder=None):
        !           116:         # Add an ExtFile
        !           117:         if folder is None:
        !           118:             folder = self.folder
        !           119:         id = folder.manage_addProduct['ExtFile'].manage_addExtFile(id=id, file=file, content_type=content_type)
        !           120:         self.file = folder[id]
        !           121:         return self.file
        !           122:         
        !           123:     def addExtImage(self, id, file, content_type='', folder=None):
        !           124:         # Add an ExtImage
        !           125:         if folder is None:
        !           126:             folder = self.folder
        !           127:         id = folder.manage_addProduct['ExtFile'].manage_addExtImage(id=id, file=file, content_type=content_type)
        !           128:         self.image = folder[id]
        !           129:         return self.image
        !           130: 
        !           131: 
        !           132: # FileUpload factory
        !           133: from ZPublisher.HTTPRequest import FileUpload
        !           134: 
        !           135: class DummyFieldStorage:
        !           136:     '''Quacks like a FieldStorage'''
        !           137: 
        !           138:     def __init__(self, file, filename, headers):
        !           139:         self.file = file
        !           140:         self.filename = filename
        !           141:         self.headers = headers
        !           142: 
        !           143: def makeFileUpload(file, content_type='', filename=''):
        !           144:     headers = {}
        !           145:     if type(file) == type(''):
        !           146:         file = open(file, 'rb')
        !           147:     if content_type:
        !           148:         headers['content-type'] = content_type
        !           149:     fs = DummyFieldStorage(file, filename, headers)
        !           150:     return FileUpload(fs)
        !           151: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>