File:  [Repository] / ExtFile / tests / testPhoto.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, 5 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


    1: #
    2: # Tests interaction with Photo product
    3: #
    4: 
    5: import os, sys
    6: if __name__ == '__main__':
    7:     execfile(os.path.join(sys.path[0], 'framework.py'))
    8: 
    9: from Testing import ZopeTestCase
   10: 
   11: have_photo = ZopeTestCase.hasProduct('Photo')
   12: 
   13: if have_photo:
   14:     ZopeTestCase.installProduct('SiteAccess')
   15:     ZopeTestCase.installProduct('ExtFile')
   16:     ZopeTestCase.installProduct('Photo')
   17: 
   18: from Products.ExtFile.tests.ExtFileTestCase import ExtFileTestCase
   19: from Products.ExtFile.tests.ExtFileTestCase import gifImage
   20: from Products.ExtFile import ExtFile, Config
   21: from Acquisition import aq_base
   22: 
   23: user_name = ZopeTestCase.user_name
   24: photo_perms = ['Add Photos', 'Change Photos', 'Add Documents, Images, and Files']
   25: 
   26: import base64
   27: auth_info = 'Basic %s' % base64.encodestring('%s:secret' % user_name)
   28: 
   29: 
   30: class TestPhoto(ExtFileTestCase):
   31: 
   32:     def testAddPhoto(self):
   33:         factory = self.folder.manage_addProduct['Photo']
   34:         factory.manage_addPhoto('foo', '', open(gifImage, 'rb'), 'image/gif', store='ExtImage', engine='PIL', pregen=0)
   35:         self.folder.foo._original._finish()
   36:         self.failUnless(self._exists('foo.gif'))
   37: 
   38:     def testAddPhotoWithDisplays(self):
   39:         factory = self.folder.manage_addProduct['Photo']
   40:         factory.manage_addPhoto('foo', '', open(gifImage, 'rb'), 'image/gif', store='ExtImage', engine='PIL', pregen=1)
   41:         self.folder.foo._original._finish()
   42:         self.failUnless(self._exists('foo.gif'))
   43: 
   44:         for id in self.folder.foo.displayIds(None):
   45:             self.folder.foo._photos[id]._finish()
   46:         self.failUnless(self._exists('foo_large.gif'))
   47:         self.failUnless(self._exists('foo_medium.gif'))
   48:         self.failUnless(self._exists('foo_small.gif'))
   49:         self.failUnless(self._exists('foo_thumbnail.gif'))
   50:         self.failUnless(self._exists('foo_xlarge.gif'))
   51:         self.failUnless(self._exists('foo_xsmall.gif'))
   52: 
   53: 
   54: class TestPUTPhoto(ExtFileTestCase):
   55: 
   56:     def afterSetUp(self):
   57:         ExtFileTestCase.afterSetUp(self)
   58: 
   59:         if not self.app.objectIds('Virtual Host Monster'):
   60:             factory = self.app.manage_addProduct['SiteAccess']
   61:             factory.manage_addVirtualHostMonster('VHM')
   62: 
   63:         request = self.app.REQUEST
   64:         request['PARENTS'] = [self.app]
   65: 
   66:         # Fake a dav PUT request
   67:         request['BODYFILE'] = open(gifImage, 'rb')
   68:         request.environ['CONTENT_TYPE'] = 'image/gif'
   69:         request.environ['REQUEST_METHOD'] = 'PUT'
   70:         request._auth = auth_info
   71: 
   72:     def afterClear(self):
   73:         ExtFileTestCase.afterClear(self)
   74:         ExtFile.REPOSITORY = Config.FLAT
   75:         ExtFile.ZODB_PATH = Config.VIRTUAL
   76: 
   77:     def testPUTPhoto(self):
   78: 
   79:         def PUT_factory(name, typ, body):
   80:             """Creates a Photo."""
   81:             from Products.Photo.Photo import Photo
   82:             return Photo(name, '', body, content_type=typ, store='ExtImage', engine='PIL', pregen=0)
   83: 
   84:         self.folder.PUT_factory = PUT_factory
   85:         self.setPermissions(photo_perms)
   86: 
   87:         request = self.app.REQUEST
   88:         put = request.traverse('/test_folder_1_/image')
   89:         put(request, request.RESPONSE)
   90:         self.failUnless(hasattr(aq_base(self.folder), 'image'))
   91:         self.folder.image._original._finish()
   92:         self.failUnless(self._exists('image.gif'))
   93: 
   94:     def testPUTPhotoWithDisplays(self):
   95: 
   96:         def PUT_factory(name, typ, body):
   97:             """Creates a Photo."""
   98:             from Products.Photo.Photo import Photo
   99:             return Photo(name, '', body, content_type=typ, store='ExtImage', engine='PIL', pregen=1)
  100: 
  101:         self.folder.PUT_factory = PUT_factory
  102:         self.setPermissions(photo_perms)
  103: 
  104:         request = self.app.REQUEST
  105:         put = request.traverse('/test_folder_1_/image')
  106:         put(request, request.RESPONSE)
  107:         self.failUnless(hasattr(aq_base(self.folder), 'image'))
  108:         self.folder.image._original._finish()
  109:         self.failUnless(self._exists('image.gif'))
  110: 
  111:         for id in self.folder.image.displayIds(None):
  112:             self.folder.image._photos[id]._finish()
  113:         self.failUnless(self._exists('image_large.gif'))
  114:         self.failUnless(self._exists('image_medium.gif'))
  115:         self.failUnless(self._exists('image_small.gif'))
  116:         self.failUnless(self._exists('image_thumbnail.gif'))
  117:         self.failUnless(self._exists('image_xlarge.gif'))
  118:         self.failUnless(self._exists('image_xsmall.gif'))
  119: 
  120:     def testPUTPhotoSyncZodbVirtual(self):
  121: 
  122:         def PUT_factory(name, typ, body):
  123:             """Creates a Photo."""
  124:             from Products.Photo.Photo import Photo
  125:             return Photo(name, '', body, content_type=typ, store='ExtImage', engine='PIL', pregen=0)
  126: 
  127:         self.folder.PUT_factory = PUT_factory
  128:         self.setPermissions(photo_perms)
  129: 
  130:         ExtFile.REPOSITORY = Config.SYNC_ZODB
  131:         ExtFile.ZODB_PATH = Config.VIRTUAL
  132:         request = self.app.REQUEST
  133:         put = request.traverse('/test_folder_1_/image')
  134:         put(request, request.RESPONSE)
  135:         self.failUnless(hasattr(aq_base(self.folder), 'image'))
  136: 
  137:         self.assertEqual(self.folder.image._original.filename, ['test_folder_1_', 'image', 'image.gif'])
  138: 
  139:     def testPUTPhotoSyncZodbPhysical(self):
  140: 
  141:         def PUT_factory(name, typ, body):
  142:             """Creates a Photo."""
  143:             from Products.Photo.Photo import Photo
  144:             return Photo(name, '', body, content_type=typ, store='ExtImage', engine='PIL', pregen=0)
  145: 
  146:         self.folder.PUT_factory = PUT_factory
  147:         self.setPermissions(photo_perms)
  148: 
  149:         ExtFile.REPOSITORY = Config.SYNC_ZODB
  150:         ExtFile.ZODB_PATH = Config.PHYSICAL
  151:         request = self.app.REQUEST
  152:         put = request.traverse('/test_folder_1_/image')
  153:         put(request, request.RESPONSE)
  154:         self.failUnless(hasattr(aq_base(self.folder), 'image'))
  155: 
  156:         self.assertEqual(self.folder.image._original.filename, ['test_folder_1_', 'image', 'image.gif'])
  157: 
  158:     def testPUTPhotoSyncZodbVHMVirtual(self):
  159: 
  160:         def PUT_factory(name, typ, body):
  161:             """Creates a Photo."""
  162:             from Products.Photo.Photo import Photo
  163:             return Photo(name, '', body, content_type=typ, store='ExtImage', engine='PIL', pregen=0)
  164: 
  165:         self.folder.PUT_factory = PUT_factory
  166:         self.setPermissions(photo_perms)
  167: 
  168:         ExtFile.REPOSITORY = Config.SYNC_ZODB
  169:         ExtFile.ZODB_PATH = Config.VIRTUAL
  170:         request = self.app.REQUEST
  171:         put = request.traverse('/VirtualHostBase/http/foo.com:80/VirtualHostRoot/test_folder_1_/image')
  172:         put(request, request.RESPONSE)
  173:         self.failUnless(hasattr(aq_base(self.folder), 'image'))
  174: 
  175:         self.assertEqual(self.folder.image._original.filename, ['test_folder_1_', 'image', 'image.gif'])
  176: 
  177:     def testPUTPhotoSyncZodbVHMPhysical(self):
  178: 
  179:         def PUT_factory(name, typ, body):
  180:             """Creates a Photo."""
  181:             from Products.Photo.Photo import Photo
  182:             return Photo(name, '', body, content_type=typ, store='ExtImage', engine='PIL', pregen=0)
  183: 
  184:         self.folder.PUT_factory = PUT_factory
  185:         self.setPermissions(photo_perms)
  186: 
  187:         ExtFile.REPOSITORY = Config.SYNC_ZODB
  188:         ExtFile.ZODB_PATH = Config.PHYSICAL
  189:         request = self.app.REQUEST
  190:         put = request.traverse('/VirtualHostBase/http/foo.com:80/VirtualHostRoot/test_folder_1_/image')
  191:         put(request, request.RESPONSE)
  192:         self.failUnless(hasattr(aq_base(self.folder), 'image'))
  193: 
  194:         # XXX: Photos always use VIRTUAL
  195:         self.assertEqual(self.folder.image._original.filename, ['test_folder_1_', 'image', 'image.gif'])
  196: 
  197:     def testPUTPhotoSyncZodbVHMSubfolderHostingVirtual(self):
  198: 
  199:         def PUT_factory(name, typ, body):
  200:             """Creates a Photo."""
  201:             from Products.Photo.Photo import Photo
  202:             return Photo(name, '', body, content_type=typ, store='ExtImage', engine='PIL', pregen=0)
  203: 
  204:         self.folder.PUT_factory = PUT_factory
  205:         self.setPermissions(photo_perms)
  206: 
  207:         ExtFile.REPOSITORY = Config.SYNC_ZODB
  208:         ExtFile.ZODB_PATH = Config.VIRTUAL
  209:         request = self.app.REQUEST
  210:         put = request.traverse('/VirtualHostBase/http/foo.com:80/test_folder_1_/VirtualHostRoot/image')
  211:         put(request, request.RESPONSE)
  212:         self.failUnless(hasattr(aq_base(self.folder), 'image'))
  213: 
  214:         self.assertEqual(self.folder.image._original.filename, ['image', 'image.gif'])
  215: 
  216:     def testPUTPhotoSyncZodbVHMSubfolderHostingPhysical(self):
  217: 
  218:         def PUT_factory(name, typ, body):
  219:             """Creates a Photo."""
  220:             from Products.Photo.Photo import Photo
  221:             return Photo(name, '', body, content_type=typ, store='ExtImage', engine='PIL', pregen=0)
  222: 
  223:         self.folder.PUT_factory = PUT_factory
  224:         self.setPermissions(photo_perms)
  225: 
  226:         ExtFile.REPOSITORY = Config.SYNC_ZODB
  227:         ExtFile.ZODB_PATH = Config.PHYSICAL
  228:         request = self.app.REQUEST
  229:         put = request.traverse('/VirtualHostBase/http/foo.com:80/test_folder_1_/VirtualHostRoot/image')
  230:         put(request, request.RESPONSE)
  231:         self.failUnless(hasattr(aq_base(self.folder), 'image'))
  232: 
  233:         # XXX: Photos always use VIRTUAL
  234:         self.assertEqual(self.folder.image._original.filename, ['image', 'image.gif'])
  235: 
  236:     def testPUTPhotoSyncZodbVHMInsideOutHostingVirtual(self):
  237: 
  238:         def PUT_factory(name, typ, body):
  239:             """Creates a Photo."""
  240:             from Products.Photo.Photo import Photo
  241:             return Photo(name, '', body, content_type=typ, store='ExtImage', engine='PIL', pregen=0)
  242: 
  243:         self.folder.PUT_factory = PUT_factory
  244:         self.setPermissions(photo_perms)
  245: 
  246:         ExtFile.REPOSITORY = Config.SYNC_ZODB
  247:         ExtFile.ZODB_PATH = Config.VIRTUAL
  248:         request = self.app.REQUEST
  249:         put = request.traverse('/VirtualHostBase/http/foo.com:80/VirtualHostRoot/_vh_foo/test_folder_1_/image')
  250:         put(request, request.RESPONSE)
  251:         self.failUnless(hasattr(aq_base(self.folder), 'image'))
  252: 
  253:         self.assertEqual(self.folder.image._original.filename, ['test_folder_1_', 'image', 'image.gif'])
  254: 
  255:     def testPUTPhotoSyncZodbVHMInsideOutHostingPhysical(self):
  256: 
  257:         def PUT_factory(name, typ, body):
  258:             """Creates a Photo."""
  259:             from Products.Photo.Photo import Photo
  260:             return Photo(name, '', body, content_type=typ, store='ExtImage', engine='PIL', pregen=0)
  261: 
  262:         self.folder.PUT_factory = PUT_factory
  263:         self.setPermissions(photo_perms)
  264: 
  265:         ExtFile.REPOSITORY = Config.SYNC_ZODB
  266:         ExtFile.ZODB_PATH = Config.PHYSICAL
  267:         request = self.app.REQUEST
  268:         put = request.traverse('/VirtualHostBase/http/foo.com:80/VirtualHostRoot/_vh_foo/test_folder_1_/image')
  269:         put(request, request.RESPONSE)
  270:         self.failUnless(hasattr(aq_base(self.folder), 'image'))
  271: 
  272:         # XXX: Photos always use VIRTUAL
  273:         self.assertEqual(self.folder.image._original.filename, ['test_folder_1_', 'image', 'image.gif'])
  274: 
  275:     def testPUTPhotoSyncZodbVHMSubfolderInsideOutHostingVirtual(self):
  276: 
  277:         def PUT_factory(name, typ, body):
  278:             """Creates a Photo."""
  279:             from Products.Photo.Photo import Photo
  280:             return Photo(name, '', body, content_type=typ, store='ExtImage', engine='PIL', pregen=0)
  281: 
  282:         self.folder.PUT_factory = PUT_factory
  283:         self.setPermissions(photo_perms)
  284: 
  285:         ExtFile.REPOSITORY = Config.SYNC_ZODB
  286:         ExtFile.ZODB_PATH = Config.VIRTUAL
  287:         request = self.app.REQUEST
  288:         put = request.traverse('/VirtualHostBase/http/foo.com:80/test_folder_1_/VirtualHostRoot/_vh_foo/image')
  289:         put(request, request.RESPONSE)
  290:         self.failUnless(hasattr(aq_base(self.folder), 'image'))
  291: 
  292:         self.assertEqual(self.folder.image._original.filename, ['image', 'image.gif'])
  293: 
  294:     def testPUTPhotoSyncZodbVHMSubfolderInsideOutHostingPhysical(self):
  295: 
  296:         def PUT_factory(name, typ, body):
  297:             """Creates a Photo."""
  298:             from Products.Photo.Photo import Photo
  299:             return Photo(name, '', body, content_type=typ, store='ExtImage', engine='PIL', pregen=0)
  300: 
  301:         self.folder.PUT_factory = PUT_factory
  302:         self.setPermissions(photo_perms)
  303: 
  304:         ExtFile.REPOSITORY = Config.SYNC_ZODB
  305:         ExtFile.ZODB_PATH = Config.PHYSICAL
  306:         request = self.app.REQUEST
  307:         put = request.traverse('/VirtualHostBase/http/foo.com:80/test_folder_1_/VirtualHostRoot/_vh_foo/image')
  308:         put(request, request.RESPONSE)
  309:         self.failUnless(hasattr(aq_base(self.folder), 'image'))
  310: 
  311:         # XXX: Photos always use VIRTUAL
  312:         self.assertEqual(self.folder.image._original.filename, ['image', 'image.gif'])
  313: 
  314: 
  315: def test_suite():
  316:     from unittest import TestSuite, makeSuite
  317:     suite = TestSuite()
  318:     if have_photo:
  319:         suite.addTest(makeSuite(TestPhoto))
  320:         suite.addTest(makeSuite(TestPUTPhoto))
  321:     return suite
  322: 
  323: if __name__ == '__main__':
  324:     framework()
  325: 

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