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

1.1     ! dwinter     1: #
        !             2: # Tests the ExtFile 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: ZopeTestCase.installProduct('ExtFile')
        !            12: ZopeTestCase.installProduct('PythonScripts')
        !            13: ZopeTestCase.utils.startZServer(4)
        !            14: 
        !            15: from Products.ExtFile.tests.ExtFileTestCase import ExtFileTestCase
        !            16: from Products.ExtFile.tests.ExtFileTestCase import gifImage, jpegImage, tiffImage, notImage
        !            17: from Products.ExtFile.tests.ExtFileTestCase import makeFileUpload
        !            18: from Products.ExtFile.tests.ExtFileTestCase import copymove_perms
        !            19: from Products.ExtFile import transaction
        !            20: from Products.ExtFile import ExtFile, ExtImage, Config
        !            21: from Products.ExtFile.ExtImage import UPLOAD_RESIZE
        !            22: 
        !            23: 
        !            24: class TestExtFileAdd(ExtFileTestCase):
        !            25:     '''Test ExtFile creation'''
        !            26: 
        !            27:     def testAddFileFromFileName(self):
        !            28:         # Add File from file name
        !            29:         self.addExtFile(id='file', file=notImage)
        !            30:         self.file._finish()
        !            31:         self.failUnless(self._exists('file.exe'))
        !            32:         self.assertEqual(self.file.get_size(), self._fsize(notImage))
        !            33: 
        !            34:     def testAddFileFromFileHandle(self):
        !            35:         # Add File from file handle
        !            36:         self.addExtFile(id='file', file=open(notImage, 'rb'))
        !            37:         self.file._finish()
        !            38:         self.failUnless(self._exists('file.exe'))
        !            39:         self.assertEqual(self.file.get_size(), self._fsize(notImage))
        !            40: 
        !            41:     def testAddFileFromFileUpload(self):
        !            42:         # Add File from file upload
        !            43:         self.addExtFile(id='file', file=makeFileUpload(notImage, 'application/octet-stream'))
        !            44:         self.file._finish()
        !            45:         self.failUnless(self._exists('file.exe'))
        !            46:         self.assertEqual(self.file.get_size(), self._fsize(notImage))
        !            47: 
        !            48:     def testAddFileWithIdFromFilename(self):
        !            49:         # Add File without id - should use filename instead
        !            50:         self.addExtFile(id='', file=makeFileUpload(notImage, 'application/octet-stream', filename='foo'))
        !            51:         self.file._finish()
        !            52:         self.assertEqual(self.file.getId(), 'foo')
        !            53:         self.failUnless(self._exists('foo.exe'))
        !            54:         self.assertEqual(self.file.get_size(), self._fsize(notImage))
        !            55: 
        !            56:     def testAddFileWithLatin1Filename(self):
        !            57:         # Add File without id - should use filename instead
        !            58:         self.addExtFile(id='', file=makeFileUpload(notImage, 'application/octet-stream', filename='M\xe4dchen'))
        !            59:         self.file._finish()
        !            60:         self.assertEqual(self.file.getId(), 'Madchen')
        !            61:         self.failUnless(self._exists('Madchen.exe'))
        !            62:         self.assertEqual(self.file.get_size(), self._fsize(notImage))
        !            63: 
        !            64:     def testAddFileWithUTF8Filename(self):
        !            65:         # Add File without id - should use filename instead
        !            66:         self.addExtFile(id='', file=makeFileUpload(notImage, 'application/octet-stream', filename='M\303\244dchen'))
        !            67:         self.file._finish()
        !            68:         self.assertEqual(self.file.getId(), 'Madchen')
        !            69:         self.failUnless(self._exists('Madchen.exe'))
        !            70:         self.assertEqual(self.file.get_size(), self._fsize(notImage))
        !            71: 
        !            72: 
        !            73: class TestExtImageAdd(ExtFileTestCase):
        !            74:     '''Test ExtImage creation'''
        !            75: 
        !            76:     def testAddImageFromName(self):
        !            77:         # Add Image from file name
        !            78:         self.addExtImage(id='image', file=gifImage)
        !            79:         self.image._finish()
        !            80:         self.failUnless(self._exists('image.gif'))
        !            81:         self.assertEqual(self.image.get_size(), self._fsize(gifImage))
        !            82: 
        !            83:     def testAddImageFromFileHandle(self):
        !            84:         # Add Image from file handle
        !            85:         self.addExtImage(id='image', file=open(gifImage, 'rb'))
        !            86:         self.image._finish()
        !            87:         self.failUnless(self._exists('image.gif'))
        !            88:         self.assertEqual(self.image.get_size(), self._fsize(gifImage))
        !            89: 
        !            90:     def testAddImageFromFileUpload(self):
        !            91:         # Add Image from file upload
        !            92:         self.addExtImage(id='image', file=makeFileUpload(gifImage, 'image/gif'))
        !            93:         self.image._finish()
        !            94:         self.failUnless(self._exists('image.gif'))
        !            95:         self.assertEqual(self.image.get_size(), self._fsize(gifImage))
        !            96: 
        !            97:     def testAddImageWithIdFromFilename(self):
        !            98:         # Add File without id - should use filename instead
        !            99:         self.addExtImage(id='', file=makeFileUpload(gifImage, 'image/gif', filename='foo'))
        !           100:         self.image._finish()
        !           101:         self.assertEqual(self.image.getId(), 'foo')
        !           102:         self.failUnless(self._exists('foo.gif'))
        !           103:         self.assertEqual(self.image.get_size(), self._fsize(gifImage))
        !           104: 
        !           105:     def testAddUnwrappedImage(self):
        !           106:         # This is what Photo does with displays...
        !           107:         file = ExtImage.ExtImage('foo')
        !           108:         self.assertRaises(AttributeError,
        !           109:                           file.manage_file_upload, file=gifImage)
        !           110: 
        !           111:     def testAddImageWithLatin1Filename(self):
        !           112:         # Add File without id - should use filename instead
        !           113:         self.addExtImage(id='', file=makeFileUpload(gifImage, 'image/gif', filename='M\xe4dchen'))
        !           114:         self.image._finish()
        !           115:         self.assertEqual(self.image.getId(), 'Madchen')
        !           116:         self.failUnless(self._exists('Madchen.gif'))
        !           117:         self.assertEqual(self.image.get_size(), self._fsize(gifImage))
        !           118: 
        !           119:     def testAddImageWithUTF8Filename(self):
        !           120:         # Add File without id - should use filename instead
        !           121:         self.addExtImage(id='', file=makeFileUpload(gifImage, 'image/gif', filename='M\303\244dchen'))
        !           122:         self.image._finish()
        !           123:         self.assertEqual(self.image.getId(), 'Madchen')
        !           124:         self.failUnless(self._exists('Madchen.gif'))
        !           125:         self.assertEqual(self.image.get_size(), self._fsize(gifImage))
        !           126: 
        !           127: 
        !           128: class TestExtFileUpload(ExtFileTestCase):
        !           129:     '''Test ExtFile upload'''
        !           130: 
        !           131:     def testManageFileUploadFromFileName(self):
        !           132:         # Upload File from file name
        !           133:         self.addExtFile(id='file', file='')
        !           134:         self.file.manage_file_upload(file=notImage)
        !           135:         self.file._finish()
        !           136:         self.failUnless(self._exists('file.exe'))
        !           137:         self.assertEqual(self.file.get_size(), self._fsize(notImage))
        !           138: 
        !           139:     def testManageFileUploadFromFileHandle(self):
        !           140:         # Upload File from file handle
        !           141:         self.addExtFile(id='file', file='')
        !           142:         self.file.manage_file_upload(file=open(notImage, 'rb'))
        !           143:         self.file._finish()
        !           144:         self.failUnless(self._exists('file.exe'))
        !           145:         self.assertEqual(self.file.get_size(), self._fsize(notImage))
        !           146: 
        !           147:     def testManageFileUploadFromFileUpload(self):
        !           148:         # Upload File from file upload
        !           149:         self.addExtFile(id='file', file='')
        !           150:         self.file.manage_file_upload(file=makeFileUpload(notImage, 'application/octet-stream'))
        !           151:         self.file._finish()
        !           152:         self.failUnless(self._exists('file.exe'))
        !           153:         self.assertEqual(self.file.get_size(), self._fsize(notImage))
        !           154: 
        !           155:     def testManageUploadFromStringBuffer(self):
        !           156:         # Upload File from file name
        !           157:         self.addExtFile(id='file', file='')
        !           158:         self.file.manage_upload(file=open(notImage, 'rb').read())
        !           159:         self.file._finish()
        !           160:         self.failUnless(self._exists('file.exe'))
        !           161:         self.assertEqual(self.file.get_size(), self._fsize(notImage))
        !           162: 
        !           163:     def testManageUploadFromFileHandle(self):
        !           164:         # Upload File from file handle
        !           165:         self.addExtFile(id='file', file='')
        !           166:         self.file.manage_upload(file=open(notImage, 'rb'))
        !           167:         self.file._finish()
        !           168:         self.failUnless(self._exists('file.exe'))
        !           169:         self.assertEqual(self.file.get_size(), self._fsize(notImage))
        !           170: 
        !           171:     def testManageUploadFromFileUpload(self):
        !           172:         # Upload File from file upload
        !           173:         self.addExtFile(id='file', file='')
        !           174:         self.file.manage_upload(file=makeFileUpload(notImage, 'application/octet-stream'))
        !           175:         self.file._finish()
        !           176:         self.failUnless(self._exists('file.exe'))
        !           177:         self.assertEqual(self.file.get_size(), self._fsize(notImage))
        !           178: 
        !           179: 
        !           180: class TestExtImageUpload(ExtFileTestCase):
        !           181:     '''Test ExtImage upload'''
        !           182: 
        !           183:     def testManageFileUploadFromFileName(self):
        !           184:         # Upload Image from file name
        !           185:         self.addExtImage(id='image', file='')
        !           186:         self.image.manage_file_upload(file=gifImage)
        !           187:         self.image._finish()
        !           188:         self.failUnless(self._exists('image.gif'))
        !           189:         self.assertEqual(self.image.get_size(), self._fsize(gifImage))
        !           190: 
        !           191:     def testManageFileUploadFromFileHandle(self):
        !           192:         # Upload Image from file handle
        !           193:         self.addExtImage(id='image', file='')
        !           194:         self.image.manage_file_upload(file=open(gifImage, 'rb'))
        !           195:         self.image._finish()
        !           196:         self.failUnless(self._exists('image.gif'))
        !           197:         self.assertEqual(self.image.get_size(), self._fsize(gifImage))
        !           198: 
        !           199:     def testManageFileUploadFromFileUpload(self):
        !           200:         # Upload Image from file upload
        !           201:         self.addExtImage(id='image', file='')
        !           202:         self.image.manage_file_upload(file=makeFileUpload(gifImage, 'image/gif'))
        !           203:         self.image._finish()
        !           204:         self.failUnless(self._exists('image.gif'))
        !           205:         self.assertEqual(self.image.get_size(), self._fsize(gifImage))
        !           206: 
        !           207:     def testManageUploadFromStringBuffer(self):
        !           208:         # Upload Image from file name
        !           209:         self.addExtImage(id='image', file='')
        !           210:         self.image.manage_upload(file=open(gifImage, 'rb').read())
        !           211:         self.image._finish()
        !           212:         self.failUnless(self._exists('image.gif'))
        !           213:         self.assertEqual(self.image.get_size(), self._fsize(gifImage))
        !           214: 
        !           215:     def testManageUploadFromFileHandle(self):
        !           216:         # Upload Image from file handle
        !           217:         self.addExtImage(id='image', file='')
        !           218:         self.image.manage_upload(file=open(gifImage, 'rb'))
        !           219:         self.image._finish()
        !           220:         self.failUnless(self._exists('image.gif'))
        !           221:         self.assertEqual(self.image.get_size(), self._fsize(gifImage))
        !           222: 
        !           223:     def testManageUploadFromFileUpload(self):
        !           224:         # Upload Image from file upload
        !           225:         self.addExtImage(id='image', file='')
        !           226:         self.image.manage_upload(file=makeFileUpload(gifImage, 'image/gif'))
        !           227:         self.image._finish()
        !           228:         self.failUnless(self._exists('image.gif'))
        !           229:         self.assertEqual(self.image.get_size(), self._fsize(gifImage))
        !           230: 
        !           231: 
        !           232: class TestExtFileContentType(ExtFileTestCase):
        !           233:     '''Test ExtFile content-type detection'''
        !           234: 
        !           235:     def testDefaultContentType(self):
        !           236:         # Use default content type
        !           237:         self.addExtFile(id='file', file=notImage)
        !           238:         self.file._finish()
        !           239:         self.assertEqual(self.file.content_type, 'application/octet-stream')
        !           240:         self.failUnless(self._exists('file.exe'))
        !           241: 
        !           242:     def testContentTypeExplicit(self):
        !           243:         # Use passed-in content type
        !           244:         self.addExtFile(id='file', file=notImage, content_type='image/jpeg')
        !           245:         self.file._finish()
        !           246:         self.assertEqual(self.file.content_type, 'image/jpeg')
        !           247:         self.failUnless(self._exists('file.jpg'))
        !           248: 
        !           249:     def testContentTypeFromId(self):
        !           250:         # Detect GIF content type from file id
        !           251:         self.addExtFile(id='file.gif', file=notImage)
        !           252:         self.file._finish()
        !           253:         self.assertEqual(self.file.content_type, 'image/gif')
        !           254:         self.failUnless(self._exists('file.gif'))
        !           255: 
        !           256:     def testContentTypeFromIdExplicit(self):
        !           257:         # Passed-in content type trumps detection by id
        !           258:         self.addExtFile(id='file.gif', file=notImage, content_type='image/jpeg')
        !           259:         self.file._finish()
        !           260:         self.assertEqual(self.file.content_type, 'image/jpeg')
        !           261:         self.failUnless(self._exists('file.jpg'))
        !           262: 
        !           263:     def testContentTypeFromHeaders(self):
        !           264:         # Detect GIF content type from file upload headers
        !           265:         self.addExtFile(id='file', file=makeFileUpload(notImage, 'image/gif'))
        !           266:         self.file._finish()
        !           267:         self.assertEqual(self.file.content_type, 'image/gif')
        !           268:         self.failUnless(self._exists('file.gif'))
        !           269: 
        !           270:     def testContentTypeFromHeadersExplicit(self):
        !           271:         # Passed-in content type trumps detection by headers
        !           272:         self.addExtFile(id='file', file=makeFileUpload(notImage, 'image/gif'), content_type='image/jpeg')
        !           273:         self.file._finish()
        !           274:         self.assertEqual(self.file.content_type, 'image/jpeg')
        !           275:         self.failUnless(self._exists('file.jpg'))
        !           276: 
        !           277:     def testContentTypeFromHttpUpload(self):
        !           278:         # Detect content type from download headers
        !           279:         self.addExtFile(id='file', file=notImage)
        !           280:         self.file.manage_http_upload(url=self.app.TiffImage.absolute_url())
        !           281:         self.file._finish()
        !           282:         self.assertEqual(self.file.content_type, 'image/tiff')
        !           283:         # File is *not* renamed!
        !           284:         self.failUnless(self._exists('file.exe'))
        !           285: 
        !           286:     def testContentTypeFromHttpUploadDefault(self):
        !           287:         # Detect content type from download headers
        !           288:         self.addExtFile(id='file', file=notImage)
        !           289:         self.file.manage_http_upload(url=self.app.NotImage.absolute_url())
        !           290:         self.file._finish()
        !           291:         self.assertEqual(self.file.content_type, 'application/octet-stream')
        !           292:         # File is *not* renamed!
        !           293:         self.failUnless(self._exists('file.exe'))
        !           294: 
        !           295: 
        !           296: class TestExtImageContentType(ExtFileTestCase):
        !           297:     '''Test ExtImage content-type detection'''
        !           298: 
        !           299:     def testDefaultContentType(self):
        !           300:         # Use default content type
        !           301:         self.addExtImage(id='image', file=notImage)
        !           302:         self.image._finish()
        !           303:         self.assertEqual(self.image.content_type, 'application/octet-stream')
        !           304:         self.failUnless(self._exists('image.exe'))
        !           305: 
        !           306:     def testContentTypeExplicit(self):
        !           307:         # Use passed-in content type when we cannot detect from content
        !           308:         self.addExtImage(id='image', file=notImage, content_type='image/jpeg')
        !           309:         self.image._finish()
        !           310:         self.assertEqual(self.image.content_type, 'image/jpeg')
        !           311:         self.failUnless(self._exists('image.jpg'))
        !           312: 
        !           313:     def testContentTypeFromId(self):
        !           314:         # Detect GIF content type from file id
        !           315:         self.addExtImage(id='image.gif', file=notImage)
        !           316:         self.image._finish()
        !           317:         self.assertEqual(self.image.content_type, 'image/gif')
        !           318:         self.failUnless(self._exists('image.gif'))
        !           319: 
        !           320:     def testContentTypeFromIdExplicit(self):
        !           321:         # Passed-in content type trumps detection by id
        !           322:         self.addExtImage(id='image.gif', file=notImage, content_type='image/jpeg')
        !           323:         self.image._finish()
        !           324:         self.assertEqual(self.image.content_type, 'image/jpeg')
        !           325:         self.failUnless(self._exists('image.jpg'))
        !           326: 
        !           327:     def testContentTypeFromHeaders(self):
        !           328:         # Detect GIF content type from file upload headers
        !           329:         self.addExtImage(id='image', file=makeFileUpload(notImage, 'image/gif'))
        !           330:         self.image._finish()
        !           331:         self.assertEqual(self.image.content_type, 'image/gif')
        !           332:         self.failUnless(self._exists('image.gif'))
        !           333: 
        !           334:     def testContentTypeFromHeadersExplicit(self):
        !           335:         # Passed-in content type trumps detection by headers
        !           336:         self.addExtImage(id='image', file=makeFileUpload(notImage, 'image/gif'), content_type='image/jpeg')
        !           337:         self.image._finish()
        !           338:         self.assertEqual(self.image.content_type, 'image/jpeg')
        !           339:         self.failUnless(self._exists('image.jpg'))
        !           340: 
        !           341:     def testContentTypeFromHttpUpload(self):
        !           342:         # Detect content type from download headers
        !           343:         self.addExtImage(id='image', file=notImage)
        !           344:         self.image.manage_http_upload(url=self.app.TiffImage.absolute_url())
        !           345:         self.image._finish()
        !           346:         self.assertEqual(self.image.content_type, 'image/tiff')
        !           347:         # File is *not* renamed!
        !           348:         self.failUnless(self._exists('image.exe'))
        !           349:         # Check TIFF dimension sniffing
        !           350:         self.assertEqual(self.image.width(), 200)
        !           351:         self.assertEqual(self.image.height(), 136)
        !           352: 
        !           353:     def testContentTypeFromGifContent(self):
        !           354:         # Detect GIF content type from file contents
        !           355:         self.addExtImage(id='image', file=gifImage)
        !           356:         self.image._finish()
        !           357:         self.assertEqual(self.image.content_type, 'image/gif')
        !           358:         self.failUnless(self._exists('image.gif'))
        !           359: 
        !           360:     def testContentTypeFromGifContentExplicit(self):
        !           361:         # Detect GIF content type even when passing a content type
        !           362:         self.addExtImage(id='image', file=gifImage, content_type='image/jpeg')
        !           363:         self.image._finish()
        !           364:         self.assertEqual(self.image.content_type, 'image/gif')
        !           365:         self.failUnless(self._exists('image.gif'))
        !           366: 
        !           367:     def testContentTypeFromJpegContent(self):
        !           368:         # Detect JPEG content type from file contents
        !           369:         self.addExtImage(id='image', file=jpegImage)
        !           370:         self.image._finish()
        !           371:         self.assertEqual(self.image.content_type, 'image/jpeg')
        !           372:         self.failUnless(self._exists('image.jpg'))
        !           373: 
        !           374:     def testContentTypeFromJpegContentExplicit(self):
        !           375:         # Detect JPEG content type even when passing a content type
        !           376:         self.addExtImage(id='image', file=jpegImage, content_type='image/tiff')
        !           377:         self.image._finish()
        !           378:         self.assertEqual(self.image.content_type, 'image/jpeg')
        !           379:         self.failUnless(self._exists('image.jpg'))
        !           380: 
        !           381:     def testContentTypeFromGifString(self):
        !           382:         # Detect GIF content type from string buffer
        !           383:         self.addExtImage(id='image', file=notImage)
        !           384:         self.image.manage_upload(file=open(gifImage, 'rb').read())
        !           385:         self.image._finish()
        !           386:         self.assertEqual(self.image.content_type, 'image/gif')
        !           387:         # File is *not* renamed!
        !           388:         self.failUnless(self._exists('image.exe'))
        !           389: 
        !           390:     def testContentTypeFromJpegPUT(self):
        !           391:         # Detect JPEG content type from PUT' image
        !           392:         self.addExtImage(id='image', file=open(notImage, 'rb'))
        !           393:         request = self.app.REQUEST
        !           394:         request['BODYFILE'] = open(jpegImage, 'rb')
        !           395:         self.image.PUT(request, request.RESPONSE)
        !           396:         self.image._finish()
        !           397:         self.assertEqual(self.image.content_type, 'image/jpeg')
        !           398:         # File is *not* renamed!
        !           399:         self.failUnless(self._exists('image.exe'))
        !           400:         # Check PUT works
        !           401:         self.assertEqual(self.image.get_size(), self._fsize(jpegImage))
        !           402: 
        !           403: 
        !           404: class TestExtFileCopyPaste(ExtFileTestCase):
        !           405:     '''Tests cut/copy/paste/rename/clone'''
        !           406: 
        !           407:     def afterSetUp(self):
        !           408:         ExtFileTestCase.afterSetUp(self)
        !           409:         self.folder.manage_addFolder('subfolder')
        !           410:         self.subfolder = self.folder['subfolder']
        !           411:         self.setPermissions(copymove_perms)
        !           412:         self.addExtFile(id='image.gif', file=gifImage)
        !           413:         transaction.savepoint(1) # need a _p_jar
        !           414: 
        !           415:     def testClone(self):
        !           416:         # Clone a file
        !           417:         self.subfolder.manage_clone(self.file, 'image.gif')
        !           418:         self.file._finish()
        !           419:         self.subfolder['image.gif']._finish()
        !           420:         self.failUnless(self._exists('image.gif'))
        !           421:         self.failIf(self._exists('image.gif.undo'))
        !           422:         self.failUnless(self._exists('image.1.gif'))
        !           423: 
        !           424:     def testCopyPaste(self):
        !           425:         # Copy and paste a file
        !           426:         cb = self.folder.manage_copyObjects(['image.gif'])
        !           427:         self.subfolder.manage_pasteObjects(cb)
        !           428:         self.file._finish()
        !           429:         self.subfolder['image.gif']._finish()
        !           430:         self.failUnless(self._exists('image.gif'))
        !           431:         self.failIf(self._exists('image.gif.undo'))
        !           432:         self.failUnless(self._exists('image.1.gif'))
        !           433:         self.assertEqual(self.subfolder['image.gif'].get_size(), self._fsize(gifImage))
        !           434: 
        !           435:     def testCutPaste(self):
        !           436:         # Cut and paste a file
        !           437:         cb = self.folder.manage_cutObjects(['image.gif'])
        !           438:         self.subfolder.manage_pasteObjects(cb)
        !           439:         self.file._finish()
        !           440:         self.subfolder['image.gif']._finish()
        !           441:         self.failUnless(self._exists('image.gif'))
        !           442:         self.failIf(self._exists('image.gif.undo'))
        !           443:         self.failIf(self._exists('image.1.gif'))
        !           444: 
        !           445:     def testRename(self):
        !           446:         # Rename a file
        !           447:         self.folder.manage_renameObject('image.gif', 'image44.gif')
        !           448:         self.file._finish()
        !           449:         self.folder['image44.gif']._finish()
        !           450:         self.failUnless(self._exists('image.gif'))
        !           451:         self.failIf(self._exists('image.gif.undo'))
        !           452:         self.failIf(self._exists('image.1.gif'))
        !           453: 
        !           454:     def testCOPY(self):
        !           455:         # WebDAV copy a file
        !           456:         req = self.app.REQUEST
        !           457:         req.environ['HTTP_DEPTH'] = 'infinity'
        !           458:         req.environ['HTTP_DESTINATION'] = 'http://dummy.org/%s/subfolder/image.gif' % ZopeTestCase.folder_name
        !           459:         self.folder['image.gif'].COPY(req, req.RESPONSE)
        !           460:         self.file._finish()
        !           461:         self.subfolder['image.gif']._finish()
        !           462:         self.failUnless(self._exists('image.gif'))
        !           463:         self.failIf(self._exists('image.gif.undo'))
        !           464:         self.failUnless(self._exists('image.1.gif'))
        !           465:         self.assertEqual(self.subfolder['image.gif'].get_size(), self._fsize(gifImage))
        !           466: 
        !           467:     def testMOVE(self):
        !           468:         # WebDAV move a file
        !           469:         req = self.app.REQUEST
        !           470:         req.environ['HTTP_DEPTH'] = 'infinity'
        !           471:         req.environ['HTTP_DESTINATION'] = 'http://dummy.org/%s/subfolder/image.gif' % ZopeTestCase.folder_name
        !           472:         self.folder['image.gif'].MOVE(req, req.RESPONSE)
        !           473:         self.file._finish()
        !           474:         self.subfolder['image.gif']._finish()
        !           475:         self.failUnless(self._exists('image.gif'))
        !           476:         self.failIf(self._exists('image.gif.undo'))
        !           477:         self.failIf(self._exists('image.1.gif'))
        !           478:         self.failIf(self._exists('image.1.gif.undo'))
        !           479:         self.assertEqual(self.subfolder['image.gif'].get_size(), self._fsize(gifImage))
        !           480: 
        !           481:     def testCopyOfProtection(self):
        !           482:         # Copy and paste a file into the same folder.
        !           483:         # The filenames should not begin with 'copy_of_'
        !           484:         cb = self.folder.manage_copyObjects(['image.gif'])
        !           485:         self.folder.manage_pasteObjects(cb)
        !           486:         self.file._finish()
        !           487:         self.folder['copy_of_image.gif']._finish()
        !           488:         self.failUnless(self._exists('image.gif'))
        !           489:         self.failIf(self._exists('image.gif.undo'))
        !           490:         self.failIf(self._exists('copy_of_image.gif'))
        !           491:         self.failUnless(self._exists('image.1.gif'))
        !           492:         self.assertEqual(self.folder['copy_of_image.gif'].get_size(), self._fsize(gifImage))
        !           493: 
        !           494: 
        !           495: class TestExtImageCopyPaste(ExtFileTestCase):
        !           496:     '''Tests cut/copy/paste/rename/clone'''
        !           497: 
        !           498:     def afterSetUp(self):
        !           499:         ExtFileTestCase.afterSetUp(self)
        !           500:         self.folder.manage_addFolder('subfolder')
        !           501:         self.subfolder = self.folder['subfolder']
        !           502:         self.setPermissions(copymove_perms)
        !           503:         self.addExtImage(id='image.gif', file=gifImage)
        !           504:         # Add a preview image as well
        !           505:         self.folder['image.gif'].manage_file_upload(file=jpegImage, is_preview=1,
        !           506:                                                     create_prev=UPLOAD_RESIZE,
        !           507:                                                     maxx=100, maxy=100, ratio=1)
        !           508:         transaction.savepoint(1) # need a _p_jar
        !           509: 
        !           510:     def testClone(self):
        !           511:         # Clone an image
        !           512:         self.subfolder.manage_clone(self.image, 'image.gif')
        !           513:         self.image._finish()
        !           514:         self.subfolder['image.gif']._finish()
        !           515:         self.failUnless(self._exists('image.gif'))
        !           516:         self.failIf(self._exists('image.gif.undo'))
        !           517:         self.failUnless(self._exists('image.jpg'))
        !           518:         self.failIf(self._exists('image.jpg.undo'))
        !           519:         self.failUnless(self._exists('image.1.gif'))
        !           520:         self.failUnless(self._exists('image.1.jpg'))
        !           521: 
        !           522:     def testCopyPaste(self):
        !           523:         # Copy and paste an image
        !           524:         cb = self.folder.manage_copyObjects(['image.gif'])
        !           525:         self.subfolder.manage_pasteObjects(cb)
        !           526:         self.image._finish()
        !           527:         self.subfolder['image.gif']._finish()
        !           528:         self.failUnless(self._exists('image.gif'))
        !           529:         self.failIf(self._exists('image.gif.undo'))
        !           530:         self.failUnless(self._exists('image.1.gif'))
        !           531:         self.failIf(self._exists('image.1.gif.undo'))
        !           532:         self.failUnless(self._exists('image.jpg'))
        !           533:         self.failUnless(self._exists('image.1.jpg'))
        !           534:         self.assertEqual(self.subfolder['image.gif'].get_size(), self._fsize(gifImage))
        !           535: 
        !           536:     def testCutPaste(self):
        !           537:         # Cut and paste an image
        !           538:         cb = self.folder.manage_cutObjects(['image.gif'])
        !           539:         self.subfolder.manage_pasteObjects(cb)
        !           540:         self.image._finish()
        !           541:         self.subfolder['image.gif']._finish()
        !           542:         self.failUnless(self._exists('image.gif'))
        !           543:         self.failIf(self._exists('image.gif.undo'))
        !           544:         self.failUnless(self._exists('image.jpg'))
        !           545:         self.failIf(self._exists('image.jpg.undo'))
        !           546:         self.failIf(self._exists('image.1.gif'))
        !           547:         self.failIf(self._exists('image.1.jpg'))
        !           548: 
        !           549:     def testRename(self):
        !           550:         # Rename an image
        !           551:         self.folder.manage_renameObject('image.gif', 'image44.gif')
        !           552:         self.image._finish()
        !           553:         self.folder['image44.gif']._finish()
        !           554:         self.failUnless(self._exists('image.gif'))
        !           555:         self.failIf(self._exists('image.gif.undo'))
        !           556:         self.failUnless(self._exists('image.jpg'))
        !           557:         self.failIf(self._exists('image.jpg.undo'))
        !           558:         self.failIf(self._exists('image.1.gif'))
        !           559:         self.failIf(self._exists('image.1.jpg'))
        !           560: 
        !           561:     def testCOPY(self):
        !           562:         # WebDAV copy an image
        !           563:         req = self.app.REQUEST
        !           564:         req.environ['HTTP_DEPTH'] = 'infinity'
        !           565:         req.environ['HTTP_DESTINATION'] = 'http://dummy.org/%s/subfolder/image.gif' % ZopeTestCase.folder_name
        !           566:         self.folder['image.gif'].COPY(req, req.RESPONSE)
        !           567:         self.image._finish()
        !           568:         self.subfolder['image.gif']._finish()
        !           569:         self.failUnless(self._exists('image.gif'))
        !           570:         self.failIf(self._exists('image.gif.undo'))
        !           571:         self.failUnless(self._exists('image.1.gif'))
        !           572:         self.failIf(self._exists('image.1.gif.undo'))
        !           573:         self.failUnless(self._exists('image.jpg'))
        !           574:         self.failUnless(self._exists('image.1.jpg'))
        !           575:         self.assertEqual(self.subfolder['image.gif'].get_size(), self._fsize(gifImage))
        !           576: 
        !           577:     def testMOVE(self):
        !           578:         # WebDAV move an image
        !           579:         req = self.app.REQUEST
        !           580:         req.environ['HTTP_DEPTH'] = 'infinity'
        !           581:         req.environ['HTTP_DESTINATION'] = 'http://dummy.org/%s/subfolder/image.gif' % ZopeTestCase.folder_name
        !           582:         self.folder['image.gif'].MOVE(req, req.RESPONSE)
        !           583:         self.image._finish()
        !           584:         self.subfolder['image.gif']._finish()
        !           585:         self.failUnless(self._exists('image.gif'))
        !           586:         self.failIf(self._exists('image.gif.undo'))
        !           587:         self.failUnless(self._exists('image.jpg'))
        !           588:         self.failIf(self._exists('image.jpg.undo'))
        !           589:         self.failIf(self._exists('image.1.gif'))
        !           590:         self.failIf(self._exists('image.1.jpg'))
        !           591:         self.assertEqual(self.subfolder['image.gif'].get_size(), self._fsize(gifImage))
        !           592: 
        !           593:     def testPUTRecreatesPreview(self):
        !           594:         # PUT an image; the preview should be regenerated.
        !           595:         self.image._finish()
        !           596:         self.failUnless(self._exists('image.gif'))
        !           597:         self.failUnless(self._exists('image.jpg'))  # preview
        !           598:         self.failIf(self._exists('image.gif.tmp'))
        !           599:         self.failIf(self._exists('image.jpg.tmp'))
        !           600:         req = self.app.REQUEST
        !           601:         req['BODYFILE'] = open(gifImage, 'rb')
        !           602:         self.image.PUT(req, req.RESPONSE)
        !           603:         self.failUnless(self._exists('image.gif'))
        !           604:         self.failUnless(self._exists('image.jpg'))  # preview
        !           605:         self.failUnless(self._exists('image.gif.tmp'))  # newly put image
        !           606:         self.failUnless(self._exists('image.jpg.tmp'))  # regenerated preview
        !           607:         self.image._finish()
        !           608:         self.failUnless(self._exists('image.gif'))
        !           609:         self.failUnless(self._exists('image.jpg'))  # regenerated preview
        !           610:         self.failIf(self._exists('image.gif.tmp'))
        !           611:         self.failIf(self._exists('image.jpg.tmp'))
        !           612: 
        !           613:     def testPUTRetainsPreviewBoundaries(self):
        !           614:         # PUT an image; the preview should retain maxx and maxy.
        !           615:         self.failUnless(self.image.has_preview)
        !           616:         self.assertEqual(self.image.prev_width(), 100)
        !           617:         self.assertEqual(self.image.prev_height(), 64)
        !           618:         req = self.app.REQUEST
        !           619:         req['BODYFILE'] = open(tiffImage, 'rb')
        !           620:         self.image.PUT(req, req.RESPONSE)
        !           621:         self.assertEqual(self.image.prev_width(), 100)
        !           622:         self.assertEqual(self.image.prev_height(), 68)
        !           623: 
        !           624:     def testManageHTTPUploadDoesNotAffectPreview(self):
        !           625:         # HTTP upload an image; the preview should not change.
        !           626:         self.failUnless(self.image.has_preview)
        !           627:         self.assertEqual(self.image.prev_width(), 100)
        !           628:         self.assertEqual(self.image.prev_height(), 64)
        !           629:         self.image.manage_http_upload(url=self.app.TiffImage.absolute_url())
        !           630:         self.assertEqual(self.image.prev_width(), 100)
        !           631:         self.assertEqual(self.image.prev_height(), 64)
        !           632: 
        !           633: 
        !           634: class TestRepository(ExtFileTestCase):
        !           635:     '''Test repository directories'''
        !           636: 
        !           637:     def afterClear(self):
        !           638:         ExtFileTestCase.afterClear(self)
        !           639:         ExtFile.REPOSITORY = Config.FLAT
        !           640:         ExtFile.NORMALIZE_CASE = Config.KEEP
        !           641:         ExtFile.CUSTOM_METHOD = 'getExtFilePath'
        !           642: 
        !           643:     def testRepositoryFlat(self):
        !           644:         ExtFile.REPOSITORY = Config.FLAT
        !           645:         self.addExtImage(id='image', file=gifImage)
        !           646:         path = self.image.filename[:-1]
        !           647:         self.assertEqual(path, [])
        !           648: 
        !           649:     def testRepositorySyncZodb(self):
        !           650:         ExtFile.REPOSITORY = Config.SYNC_ZODB
        !           651:         self.addExtImage(id='image', file=gifImage)
        !           652:         path = self.image.filename[:-1]
        !           653:         self.assertEqual(path, [ZopeTestCase.folder_name])
        !           654: 
        !           655:     def testRepositorySliced(self):
        !           656:         ExtFile.REPOSITORY = Config.SLICED
        !           657:         self.addExtImage(id='image', file=gifImage)
        !           658:         path = self.image.filename[:-1]
        !           659:         self.assertEqual(path, ['i', 'm'])
        !           660: 
        !           661:     def testRepositorySlicedReverse(self):
        !           662:         ExtFile.REPOSITORY = Config.SLICED_REVERSE
        !           663:         self.addExtImage(id='image', file=gifImage)
        !           664:         path = self.image.filename[:-1]
        !           665:         self.assertEqual(path, ['e', 'g'])
        !           666: 
        !           667:     def testRepositorySlicedHash(self):
        !           668:         ExtFile.REPOSITORY = Config.SLICED_HASH
        !           669:         self.addExtImage(id='image', file=gifImage)
        !           670:         path = self.image.filename[:-1]
        !           671:         self.assertEqual(path, ['F', 'E'])
        !           672: 
        !           673:     def testRepositorySlicedHashDifferentFolder(self):
        !           674:         # Because the path is part of the hash, the results
        !           675:         # are different from the above test.
        !           676:         ExtFile.REPOSITORY = Config.SLICED_HASH
        !           677:         self.folder.manage_addFolder('subfolder')
        !           678:         self.subfolder = self.folder['subfolder']
        !           679:         self.addExtImage(id='image', file=gifImage, folder=self.subfolder)
        !           680:         path = self.image.filename[:-1]
        !           681:         self.assertEqual(path, ['L', 'd'])
        !           682: 
        !           683:     def testRepositoryCustom(self):
        !           684: 
        !           685:         def getExtFilePath(path, id):
        !           686:             return ['custom', 'path']
        !           687:         setattr(self.folder, 'getExtFilePath', getExtFilePath)
        !           688: 
        !           689:         ExtFile.REPOSITORY = Config.CUSTOM
        !           690:         self.addExtImage(id='image', file=gifImage)
        !           691:         path = self.image.filename[:-1]
        !           692:         self.assertEqual(path, ['custom', 'path'])
        !           693: 
        !           694:     def testRepositoryNormalizeCase(self):
        !           695: 
        !           696:         def getExtFilePath(path, id):
        !           697:             return ['Custom', 'Path']
        !           698:         setattr(self.folder, 'getExtFilePath', getExtFilePath)
        !           699: 
        !           700:         ExtFile.REPOSITORY = Config.CUSTOM
        !           701:         ExtFile.NORMALIZE_CASE = Config.NORMALIZE
        !           702:         self.addExtImage(id='image', file=gifImage)
        !           703:         path = self.image.filename[:-1]
        !           704:         self.assertEqual(path, ['custom', 'path'])
        !           705: 
        !           706:     def testRepositoryCustomScript(self):
        !           707: 
        !           708:         factory = self.folder.manage_addProduct['PythonScripts']
        !           709:         factory.manage_addPythonScript('getExtFilePath')
        !           710:         ps = self.folder.getExtFilePath
        !           711:         ps.ZPythonScript_edit(params='path, id', body="return ['custom', 'path']")
        !           712: 
        !           713:         ExtFile.REPOSITORY = Config.CUSTOM
        !           714:         self.addExtImage(id='image', file=gifImage)
        !           715:         path = self.image.filename[:-1]
        !           716:         self.assertEqual(path, ['custom', 'path'])
        !           717: 
        !           718:     def testRepositoryCustomContainer(self):
        !           719:         from OFS.Folder import Folder
        !           720: 
        !           721:         class CustomContainer(Folder):
        !           722:             def __init__(self, id):
        !           723:                 self.id = id
        !           724:             def getExtFilePath(self, path, id):
        !           725:                 return ['custom', 'path']
        !           726: 
        !           727:         self.folder._setObject('subfolder', CustomContainer('subfolder'))
        !           728:         self.folder = self.folder.subfolder
        !           729: 
        !           730:         ExtFile.REPOSITORY = Config.CUSTOM
        !           731:         self.addExtImage(id='image', file=gifImage)
        !           732:         path = self.image.filename[:-1]
        !           733:         self.assertEqual(path, ['custom', 'path'])
        !           734: 
        !           735:     def testRepositoryCustomContainerContainer(self):
        !           736:         from OFS.Folder import Folder
        !           737: 
        !           738:         class CustomContainer(Folder):
        !           739:             def __init__(self, id):
        !           740:                 self.id = id
        !           741:             def getExtFilePath(self, path, id):
        !           742:                 return ['custom', 'path']
        !           743: 
        !           744:         self.folder._setObject('subfolder', CustomContainer('subfolder'))
        !           745:         self.folder = self.folder.subfolder
        !           746:         self.folder._setObject('subsubfolder', Folder('subsubfolder'))
        !           747:         self.folder = self.folder.subsubfolder
        !           748: 
        !           749:         ExtFile.REPOSITORY = Config.CUSTOM
        !           750:         self.addExtImage(id='image', file=gifImage)
        !           751:         path = self.image.filename[:-1]
        !           752:         self.assertEqual(path, ['custom', 'path'])
        !           753: 
        !           754:     def testRepositoryCustomSubclass(self):
        !           755: 
        !           756:         class CustomImage(ExtImage.ExtImage):
        !           757:             def getExtFilePath(self, path, id):
        !           758:                 return ['custom', 'path']
        !           759: 
        !           760:         ExtFile.REPOSITORY = Config.CUSTOM
        !           761:         self.folder._setObject('image', CustomImage('image'))
        !           762:         self.folder.image.manage_file_upload(gifImage)
        !           763:         path = self.folder.image.filename[:-1]
        !           764:         self.assertEqual(path, ['custom', 'path'])
        !           765: 
        !           766:     def testRepositoryCustomPrivateMethod(self):
        !           767: 
        !           768:         def _getExtFilePath(path, id):
        !           769:             return ['custom', 'path']
        !           770:         setattr(self.folder, '_getExtFilePath', _getExtFilePath)
        !           771: 
        !           772:         ExtFile.REPOSITORY = Config.CUSTOM
        !           773:         ExtFile.CUSTOM_METHOD = '_getExtFilePath'
        !           774:         self.addExtImage(id='image', file=gifImage)
        !           775:         path = self.image.filename[:-1]
        !           776:         self.assertEqual(path, ['custom', 'path'])
        !           777: 
        !           778: 
        !           779: class TestRepositoryFiles(ExtFileTestCase):
        !           780:     '''Test repository files'''
        !           781: 
        !           782:     def afterSetUp(self):
        !           783:         ExtFileTestCase.afterSetUp(self)
        !           784:         self.folder.manage_addFolder('subfolder')
        !           785:         self.subfolder = self.folder['subfolder']
        !           786: 
        !           787:     def testUniqueFileName(self):
        !           788:         # Create a unique file name
        !           789:         self.addExtImage(id='image', file=gifImage)
        !           790:         self.image._finish()
        !           791:         self.addExtImage(id='image', file=gifImage, folder=self.subfolder)
        !           792:         self.image._finish()
        !           793:         self.failUnless(self._exists('image.gif'))
        !           794:         self.failIf(self._exists('image.gif.undo'))
        !           795:         self.failUnless(self._exists('image.1.gif'))
        !           796:         self.failIf(self._exists('image.1.gif.undo'))
        !           797: 
        !           798:     def testUniquePreviewName(self):
        !           799:         # Create a unique preview name
        !           800:         self.addExtImage(id='image', file=jpegImage)
        !           801:         self.image.manage_create_prev(100, 100, ratio=1)
        !           802:         self.image._finish()
        !           803:         self.failUnless(self._exists('image.jpg'))
        !           804:         self.failIf(self._exists('image.jpg.undo'))
        !           805:         self.failUnless(self._exists('image.1.jpg')) # Generated previews are always jpeg
        !           806:         self.failIf(self._exists('image.1.jpg.undo'))
        !           807: 
        !           808:     def testUndoNameOnDelete(self):
        !           809:         # Create a .undo file on delete
        !           810:         self.addExtImage(id='image', file=gifImage)
        !           811:         self.folder.manage_delObjects(['image'])
        !           812:         self.failIf(self._exists('image.gif'))
        !           813:         self.failUnless(self._exists('image.gif.undo'))
        !           814: 
        !           815:     def testUndoNameOnDeletePreview(self):
        !           816:         # Create a .undo file for the preview image on delete
        !           817:         self.addExtImage(id='image', file=gifImage)
        !           818:         self.image.manage_create_prev(100, 100, ratio=1)
        !           819:         self.image._finish()
        !           820:         self.failUnless(self._exists('image.gif'))
        !           821:         self.failUnless(self._exists('image.jpg'))  # Generated previews are always jpeg
        !           822:         self.folder.manage_delObjects(['image'])
        !           823:         self.failIf(self._exists('image.gif'))
        !           824:         self.failUnless(self._exists('image.gif.undo'))
        !           825:         self.failIf(self._exists('image.jpg'))
        !           826:         self.failUnless(self._exists('image.jpg.undo'))
        !           827: 
        !           828:     def testUndoNameOnUpload(self):
        !           829:         # Do not create a .undo file on upload
        !           830:         self.addExtImage(id='image', file=gifImage)
        !           831:         self.image.manage_file_upload(file=gifImage)
        !           832:         self.image._finish()
        !           833:         self.failUnless(self._exists('image.gif'))
        !           834:         self.failIf(self._exists('image.gif.undo'))
        !           835:         self.failIf(self._exists('image.1.gif'))
        !           836: 
        !           837:     def testUndoNameIsNotReused(self):
        !           838:         # If an .undo file exists the name is not reused
        !           839:         self.addExtImage(id='image', file=gifImage)
        !           840:         self.folder.manage_delObjects(['image'])
        !           841:         self.addExtImage(id='image', file=gifImage)
        !           842:         self.image._finish()
        !           843:         self.failIf(self._exists('image.gif'))
        !           844:         self.failUnless(self._exists('image.gif.undo'))
        !           845:         self.failUnless(self._exists('image.1.gif'))
        !           846: 
        !           847: 
        !           848: class TestRepositoryExtensions(ExtFileTestCase):
        !           849:     '''Test repository file extensions'''
        !           850: 
        !           851:     def afterClear(self):
        !           852:         ExtFileTestCase.afterClear(self)
        !           853:         ExtFile.REPOSITORY_EXTENSIONS = Config.MIMETYPE_REPLACE
        !           854: 
        !           855:     def testDefaultContentType(self):
        !           856:         # Use default content type
        !           857:         self.addExtImage(id='image', file=notImage)
        !           858:         self.image._finish()
        !           859:         self.failUnless(self._exists('image.exe'))
        !           860: 
        !           861:     def testDefaultContentTypeKeepsExistingExtension(self):
        !           862:         # Retain existing file extension if content type is octet-stream
        !           863:         self.addExtImage(id='image.foo', file=notImage)
        !           864:         self.image._finish()
        !           865:         self.failUnless(self._exists('image.foo'))
        !           866: 
        !           867:     def testDefaultContentTypeMimetypeAppend(self):
        !           868:         # Use default content type
        !           869:         ExtFile.REPOSITORY_EXTENSIONS = Config.MIMETYPE_APPEND
        !           870:         self.testDefaultContentType()
        !           871: 
        !           872:     def testDefaultContentTypeKeepsExistingExtensionMimetypeAppend(self):
        !           873:         # Retain existing file extension if content type is octet-stream
        !           874:         ExtFile.REPOSITORY_EXTENSIONS = Config.MIMETYPE_APPEND
        !           875:         self.testDefaultContentTypeKeepsExistingExtension()
        !           876: 
        !           877: 
        !           878: class TestDownloadPermission(ExtFileTestCase):
        !           879:     '''Tests the DownloadPermission'''
        !           880: 
        !           881:     def testPermissionExists(self):
        !           882:         # DownloadPermission should exist
        !           883:         perms = self.app.permissionsOfRole('Manager')
        !           884:         perms = [x['name'] for x in perms if x['selected']]
        !           885:         self.failUnless(ExtFile.DownloadPermission in perms)
        !           886: 
        !           887:     def testDownloadPermissionCheck(self):
        !           888:         # The use_download_permission_check property
        !           889:         # should control whether we can see the full image.
        !           890:         self.addExtImage(id='image', file=gifImage)
        !           891:         self.failUnless(self.image._access_permitted())
        !           892:         self.image.use_download_permission_check = 1
        !           893:         self.failIf(self.image._access_permitted())
        !           894: 
        !           895:     def testShowPreviewIfNoDownloadPermission(self):
        !           896:         # If we don't have the permission we should only
        !           897:         # see the preview.
        !           898:         self.addExtImage(id='image', file=gifImage)
        !           899:         self.image.use_download_permission_check = 1
        !           900:         self.image.manage_create_prev(maxx=10, maxy=10, ratio=1)
        !           901:         dummy, dummy, dummy, preview = self.image._get_file_to_serve()
        !           902:         self.failUnless(preview)
        !           903: 
        !           904:     def testShowIconIfNoDownloadPermission(self):
        !           905:         # If we don't have the permission, and there is no preview,
        !           906:         # we should only see the icon.
        !           907:         self.addExtImage(id='image', file=gifImage)
        !           908:         self.image.use_download_permission_check = 1
        !           909:         dummy, dummy, icon, dummy = self.image._get_file_to_serve()
        !           910:         self.failUnless(icon)
        !           911: 
        !           912:     def testPreviewTagIfNoDownloadPermission(self):
        !           913:         # If we don't have the permission we should only
        !           914:         # see the preview.
        !           915:         self.addExtImage(id='image', file=gifImage)
        !           916:         self.image.use_download_permission_check = 1
        !           917:         self.image.manage_create_prev(maxx=10, maxy=10, ratio=1)
        !           918:         tag = self.image.tag()
        !           919:         # Permission is not checked in static mode
        !           920:         if self.image.static_mode():
        !           921:             self.failUnless(tag.find('/static/image.jpg')>=0)
        !           922:         else:
        !           923:             self.failUnless(tag.find('/image?preview=1')>=0)
        !           924: 
        !           925:     def testIconTagIfNoDownloadPermission(self):
        !           926:         # If we don't have the permission, and there is no preview,
        !           927:         # we should only see the icon.
        !           928:         self.addExtImage(id='image', file=gifImage)
        !           929:         self.image.use_download_permission_check = 1
        !           930:         tag = self.image.tag()
        !           931:         self.failUnless(tag.find('/image?icon=1')>=0)
        !           932: 
        !           933:     def testPreviewTagIfNotWebviewable(self):
        !           934:         # If the image is not webviewable we should only
        !           935:         # see the preview.
        !           936:         self.addExtImage(id='image', file=tiffImage)
        !           937:         self.image.manage_create_prev(maxx=10, maxy=10, ratio=1)
        !           938:         tag = self.image.tag()
        !           939:         # Permission is not checked in static mode
        !           940:         if self.image.static_mode():
        !           941:             self.failUnless(tag.find('/static/image.jpg')>=0)
        !           942:         else:
        !           943:             self.failUnless(tag.find('/image?preview=1')>=0)
        !           944: 
        !           945: 
        !           946: class TestGetOwner(ExtFileTestCase):
        !           947: 
        !           948:     def afterSetUp(self):
        !           949:         ExtFileTestCase.afterSetUp(self)
        !           950:         self.addExtFile(id='file.zip', file=gifImage)
        !           951:         self.addExtImage(id='image.gif', file=gifImage)
        !           952: 
        !           953:     def testFileOwner(self):
        !           954:         self.assertEqual(self.file.getOwner().getId(), ZopeTestCase.user_name)
        !           955:         self.assertEqual(self.file.getOwnerTuple(),
        !           956:                          ([ZopeTestCase.folder_name, 'acl_users'], ZopeTestCase.user_name))
        !           957: 
        !           958:     def testImageOwner(self):
        !           959:         self.assertEqual(self.image.getOwner().getId(), ZopeTestCase.user_name)
        !           960:         self.assertEqual(self.image.getOwnerTuple(),
        !           961:                          ([ZopeTestCase.folder_name, 'acl_users'], ZopeTestCase.user_name))
        !           962: 
        !           963: 
        !           964: class TestFTPget(ExtFileTestCase):
        !           965: 
        !           966:     def afterSetUp(self):
        !           967:         ExtFileTestCase.afterSetUp(self)
        !           968:         self.addExtFile(id='file.zip', file=gifImage)
        !           969:         self.addExtImage(id='image.gif', file=gifImage)
        !           970: 
        !           971:     def testFTPgetFile(self):
        !           972:         from StringIO import StringIO
        !           973:         response = self.app.REQUEST.RESPONSE
        !           974:         response.stdout = StringIO() # Shut up
        !           975:         result = self.file.manage_FTPget()
        !           976:         #self.assertEqual(result, '')
        !           977:         self.assertEqual(response.headers.get('content-type'), 'application/zip')
        !           978:         self.assertEqual(response.headers.get('content-length'), '%s' % self._fsize(gifImage))
        !           979: 
        !           980:     def testFTPgetImage(self):
        !           981:         from StringIO import StringIO
        !           982:         response = self.app.REQUEST.RESPONSE
        !           983:         response.stdout = StringIO() # Shut up
        !           984:         result = self.image.manage_FTPget()
        !           985:         #self.assertEqual(result, '')
        !           986:         self.assertEqual(response.headers.get('content-type'), 'image/gif')
        !           987:         self.assertEqual(response.headers.get('content-length'), '%s' % self._fsize(gifImage))
        !           988: 
        !           989: 
        !           990: class TestPublish(ZopeTestCase.Functional, ExtFileTestCase):
        !           991: 
        !           992:     def afterSetUp(self):
        !           993:         ExtFileTestCase.afterSetUp(self)
        !           994:         self.addExtFile(id='file.zip', file=gifImage)
        !           995:         self.addExtImage(id='image.gif', file=gifImage)
        !           996: 
        !           997:     def testPublishFile(self):
        !           998:         folder_path = self.folder.absolute_url(1)
        !           999:         response = self.publish(folder_path+'/file.zip')
        !          1000:         self.assertEqual(response.getStatus(), 200)
        !          1001:         self.failUnless(response.getHeader('Content-Type').startswith('application/zip'))
        !          1002: 
        !          1003:     def testPublishImage(self):
        !          1004:         folder_path = self.folder.absolute_url(1)
        !          1005:         response = self.publish(folder_path+'/image.gif')
        !          1006:         self.assertEqual(response.getStatus(), 200)
        !          1007:         self.failUnless(response.getHeader('Content-Type').startswith('image/gif'))
        !          1008: 
        !          1009: 
        !          1010: def test_suite():
        !          1011:     from unittest import TestSuite, makeSuite
        !          1012:     suite = TestSuite()
        !          1013:     suite.addTest(makeSuite(TestExtFileAdd))
        !          1014:     suite.addTest(makeSuite(TestExtImageAdd))
        !          1015:     suite.addTest(makeSuite(TestExtFileUpload))
        !          1016:     suite.addTest(makeSuite(TestExtImageUpload))
        !          1017:     suite.addTest(makeSuite(TestExtFileContentType))
        !          1018:     suite.addTest(makeSuite(TestExtImageContentType))
        !          1019:     suite.addTest(makeSuite(TestExtFileCopyPaste))
        !          1020:     suite.addTest(makeSuite(TestExtImageCopyPaste))
        !          1021:     suite.addTest(makeSuite(TestRepository))
        !          1022:     suite.addTest(makeSuite(TestRepositoryFiles))
        !          1023:     suite.addTest(makeSuite(TestRepositoryExtensions))
        !          1024:     suite.addTest(makeSuite(TestDownloadPermission))
        !          1025:     suite.addTest(makeSuite(TestGetOwner))
        !          1026:     suite.addTest(makeSuite(TestFTPget))
        !          1027:     suite.addTest(makeSuite(TestPublish))
        !          1028:     return suite
        !          1029: 
        !          1030: if __name__ == '__main__':
        !          1031:     framework()
        !          1032: 

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