Annotation of ExtFile/tests/testPhoto.py, revision 1.1
1.1 ! dwinter 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>