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

1.1     ! dwinter     1: #
        !             2: # Tests transactional behavior of ExtFiles
        !             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.utils.startZServer(4)
        !            13: 
        !            14: from Products.ExtFile.tests.ExtFileTestCase import ExtFileTestCase
        !            15: from Products.ExtFile.tests.ExtFileTestCase import gifImage, jpegImage, notImage
        !            16: from Products.ExtFile.tests.ExtFileTestCase import copymove_perms
        !            17: from Products.ExtFile.ExtImage import NO_PREVIEW, GENERATE, UPLOAD_NORESIZE, UPLOAD_RESIZE
        !            18: from Products.ExtFile import transaction, TM
        !            19: from Acquisition import aq_base
        !            20: 
        !            21: 
        !            22: class TestTransactions(ExtFileTestCase):
        !            23:     '''Test ExtFile/ExtImage transaction awareness.'''
        !            24: 
        !            25:     def beforeClose(self):
        !            26:         transaction.commit()  # Commit the cleaned-up fixture
        !            27: 
        !            28:     def testAddFileCommit(self):
        !            29:         self.addExtFile(id='file', file=gifImage)
        !            30:         transaction.commit()
        !            31:         self.failUnless(self._exists('file.exe'))
        !            32: 
        !            33:     def testAddFileAbort(self):
        !            34:         # Aborting the transaction leaves the repository empty
        !            35:         self.addExtFile(id='file', file=gifImage)
        !            36:         transaction.savepoint(1)   # Wuhuu, force object rollback
        !            37:         transaction.abort()
        !            38:         self.failIf(hasattr(aq_base(self.folder), 'file'))
        !            39:         self.failIf(self._exists('file.exe'))
        !            40:         self.failIf(self._exists('file.exe.tmp'))
        !            41: 
        !            42:     def testAddImageCommit(self):
        !            43:         self.addExtImage(id='image', file=gifImage)
        !            44:         transaction.commit()
        !            45:         self.failUnless(self._exists('image.gif'))
        !            46: 
        !            47:     def testAddImageAbort(self):
        !            48:         # Aborting the transaction leaves the repository empty
        !            49:         self.addExtImage(id='image', file=gifImage)
        !            50:         transaction.savepoint(1)   # Wuhuu, force object rollback
        !            51:         transaction.abort()
        !            52:         self.failIf(hasattr(aq_base(self.folder), 'image'))
        !            53:         self.failIf(self._exists('image.gif'))
        !            54:         self.failIf(self._exists('image.gif.tmp'))
        !            55: 
        !            56:     def testAddImageAbortWithPreview(self):
        !            57:         # Aborting the transaction leaves the repository empty
        !            58:         self.addExtImage(id='image', file=gifImage)
        !            59:         self.image.manage_create_prev(maxx=10, maxy=10)
        !            60:         transaction.savepoint(1)   # Wuhuu, force object rollback
        !            61:         transaction.abort()
        !            62:         self.failIf(hasattr(aq_base(self.folder), 'image'))
        !            63:         self.failIf(self._exists('image.gif'))
        !            64:         self.failIf(self._exists('image.gif.tmp'))
        !            65:         self.failIf(self._exists('image.jpg'))
        !            66:         self.failIf(self._exists('image.jpg.tmp'))
        !            67: 
        !            68:     def testAddMoreThanOneFileInSeparateTransactions(self):
        !            69:         # First file
        !            70:         self.addExtFile(id='fred', file=notImage)
        !            71:         transaction.commit()
        !            72:         self.failUnless(self._exists('fred.exe'))
        !            73:         self.failIf(self._exists('fred.exe.tmp'))
        !            74:         # Second file
        !            75:         self.addExtFile(id='barney', file=notImage)
        !            76:         transaction.commit()
        !            77:         self.failUnless(self._exists('barney.exe'))
        !            78:         self.failIf(self._exists('barney.exe.tmp'))
        !            79:         # Third file
        !            80:         self.addExtFile(id='betty', file=notImage)
        !            81:         transaction.commit()
        !            82:         self.failUnless(self._exists('betty.exe'))
        !            83:         self.failIf(self._exists('betty.exe.tmp'))
        !            84: 
        !            85:     def testUploadFileIntoExistingInSeparateTransactions(self):
        !            86:         # Create a file 'fred'
        !            87:         self.addExtFile(id='fred', file=notImage)
        !            88:         self.failUnless(TM.contains(self.file))
        !            89:         self.failUnless(self._exists('fred.exe.tmp'))
        !            90:         transaction.commit()
        !            91:         self.failIf(TM.contains(self.file))
        !            92:         self.failUnless(self._exists('fred.exe'))
        !            93:         self.failIf(self._exists('fred.exe.tmp'))
        !            94:         # Upload new file into 'fred'
        !            95:         self.file.manage_file_upload(file=gifImage)
        !            96:         self.failUnless(TM.contains(self.file))
        !            97:         self.failUnless(self._exists('fred.exe'))
        !            98:         self.failUnless(self._exists('fred.exe.tmp'))
        !            99:         transaction.commit()
        !           100:         self.failIf(TM.contains(self.file))
        !           101:         self.failUnless(self._exists('fred.exe'))
        !           102:         self.failIf(self._exists('fred.exe.tmp'))
        !           103: 
        !           104: 
        !           105: class TestTransactionManager(ExtFileTestCase):
        !           106: 
        !           107:     def afterSetUp(self):
        !           108:         ExtFileTestCase.afterSetUp(self)
        !           109:         self.addExtFile(id='file', file=notImage)
        !           110:         self.file._register()
        !           111: 
        !           112:     def beforeClose(self):
        !           113:         transaction.commit()  # Commit the cleaned-up fixture
        !           114: 
        !           115:     def testBegin(self):
        !           116:         self.assertEqual(self.file._v_begin_called, 1)
        !           117: 
        !           118:     def testFinish(self):
        !           119:         transaction.commit()
        !           120:         self.assertEqual(self.file._v_finish_called, 1)
        !           121: 
        !           122:     def testAbort(self):
        !           123:         transaction.abort()
        !           124:         self.assertEqual(self.file._v_abort_called, 1)
        !           125: 
        !           126: 
        !           127: class TestExtFileTransactions(ExtFileTestCase):
        !           128: 
        !           129:     def afterSetUp(self):
        !           130:         ExtFileTestCase.afterSetUp(self)
        !           131:         self.setPermissions(copymove_perms)
        !           132:         self.folder.manage_addFolder('subfolder')
        !           133:         self.subfolder = self.folder.subfolder
        !           134: 
        !           135:     def beforeClose(self):
        !           136:         transaction.commit()  # Commit the cleaned-up fixture
        !           137: 
        !           138:     def testManageFileUploadCreatesTempFile(self):
        !           139:         self.addExtFile(id='file', file='')
        !           140:         self.file.manage_file_upload(file=notImage)
        !           141:         self.failUnless(self._exists('file.exe.tmp'), 'Missing .tmp file')
        !           142:         self.failIf(self._exists('file.exe'), 'No .tmp file used')
        !           143: 
        !           144:     def testManageHTTPUploadCreatesTempFile(self):
        !           145:         self.addExtFile(id='file', file='')
        !           146:         self.file.manage_http_upload(url=self.app.NotImage.absolute_url())
        !           147:         self.failUnless(self._exists('file.exe.tmp'), 'Missing .tmp file')
        !           148:         self.failIf(self._exists('file.exe'), 'No .tmp file used')
        !           149: 
        !           150:     def testPUTCreatesTempFile(self):
        !           151:         self.addExtFile(id='file', file='')
        !           152:         request = self.app.REQUEST
        !           153:         request['BODYFILE'] = open(notImage, 'rb')
        !           154:         self.file.PUT(request, request.RESPONSE)
        !           155:         self.failUnless(self._exists('file.exe.tmp'), 'Missing .tmp file')
        !           156:         self.failIf(self._exists('file.exe'), 'No .tmp file used')
        !           157: 
        !           158:     def testFinishCommitsTempFile(self):
        !           159:         self.addExtFile(id='file', file=notImage)
        !           160:         self.failUnless(self._exists('file.exe.tmp'))
        !           161:         self.file._finish()
        !           162:         self.failUnless(self._exists('file.exe'))
        !           163:         self.failIf(self._exists('file.exe.tmp'))
        !           164: 
        !           165:     def testAbortNukesTempFile(self):
        !           166:         self.addExtFile(id='file', file=notImage)
        !           167:         self.failUnless(self._exists('file.exe.tmp'))
        !           168:         self.file._abort()
        !           169:         self.failIf(self._exists('file.exe.tmp'))
        !           170:         self.failIf(self._exists('file.exe'))
        !           171: 
        !           172:     def testUndoCreatesTempFile(self):
        !           173:         self.addExtFile(id='file', file=notImage)
        !           174:         self.file._finish()
        !           175:         os.rename(self._fsname('file.exe'), self._fsname('file.exe.undo'))
        !           176:         self.file._undo()
        !           177:         self.failIf(self._exists('file.exe.undo'))
        !           178:         self.failUnless(self._exists('file.exe.tmp'))
        !           179: 
        !           180:     def testIsBrokenUsesTempFile(self):
        !           181:         self.addExtFile(id='file', file=notImage)
        !           182:         self.failUnless(self._exists('file.exe.tmp'))
        !           183:         self.failIf(self._exists('file.exe'))
        !           184:         self.failIf(self.file.is_broken())
        !           185: 
        !           186:     def testIsBrokenUsesMainFileIfTempFileNotPresent(self):
        !           187:         self.addExtFile(id='file', file=notImage)
        !           188:         self.file._finish()
        !           189:         self.failUnless(self._exists('file.exe'))
        !           190:         self.failIf(self._exists('file.exe.tmp'))
        !           191:         self.failIf(self.file.is_broken())
        !           192: 
        !           193:     def testIsBrokenTriesToUndoIfMainFileNotPresent(self):
        !           194:         self.addExtFile(id='file', file=notImage)
        !           195:         os.rename(self._fsname('file.exe.tmp'), self._fsname('file.exe.undo'))
        !           196:         self.failUnless(self._exists('file.exe.undo'))
        !           197:         self.failIf(self._exists('file.exe'))
        !           198:         self.failIf(self.file.is_broken())
        !           199:         self.failUnless(self._exists('file.exe.tmp'))
        !           200:         self.failIf(self._exists('file.exe.undo'))
        !           201: 
        !           202:     def testIsBrokenReturnsTrueIfBroken(self):
        !           203:         self.addExtFile(id='file', file=notImage)
        !           204:         os.remove(self._fsname('file.exe.tmp'))
        !           205:         self.failUnless(self.file.is_broken())
        !           206: 
        !           207:     def testGetSizeUsesTempFile(self):
        !           208:         self.addExtFile(id='file', file=notImage)
        !           209:         self.failUnless(self._exists('file.exe.tmp'))
        !           210:         self.failIf(self._exists('file.exe'))
        !           211:         self.failIfEqual(self.file.get_size(), 0)
        !           212: 
        !           213:     def testGetSizeUsesMainFileIfTempFileNotPresent(self):
        !           214:         self.addExtFile(id='file', file=notImage)
        !           215:         self.file._finish()
        !           216:         self.failUnless(self._exists('file.exe'))
        !           217:         self.failIf(self._exists('file.exe.tmp'))
        !           218:         self.failIfEqual(self.file.get_size(), 0)
        !           219: 
        !           220:     def testGetSizeTriesToUndoIfMainFileNotPresent(self):
        !           221:         self.addExtFile(id='file', file=notImage)
        !           222:         self.file._finish()
        !           223:         os.rename(self._fsname('file.exe'), self._fsname('file.exe.undo'))
        !           224:         self.failUnless(self._exists('file.exe.undo'))
        !           225:         self.failIf(self._exists('file.exe'))
        !           226:         self.failIfEqual(self.file.get_size(), 0)
        !           227:         self.failUnless(self._exists('file.exe.tmp'))
        !           228:         self.failIf(self._exists('file.exe.undo'))
        !           229: 
        !           230:     def testGetSizeReturnsZeroIfBroken(self):
        !           231:         self.addExtFile(id='file', file=notImage)
        !           232:         os.remove(self._fsname('file.exe.tmp'))
        !           233:         self.assertEqual(self.file.get_size(), 0)
        !           234: 
        !           235:     def testManageFileUploadRegistersWithTM(self):
        !           236:         self.addExtFile(id='file', file='')
        !           237:         self.assertEqual(getattr(self.file, '_v_begin_called', 0), 0)
        !           238:         self.file.manage_file_upload(file=notImage)
        !           239:         self.assertEqual(getattr(self.file, '_v_begin_called', 0), 1)
        !           240: 
        !           241:     def testManageHTTPUploadRegistersWithTM(self):
        !           242:         self.addExtFile(id='file', file='')
        !           243:         self.assertEqual(getattr(self.file, '_v_begin_called', 0), 0)
        !           244:         self.file.manage_http_upload(url=self.app.NotImage.absolute_url())
        !           245:         self.assertEqual(getattr(self.file, '_v_begin_called', 0), 1)
        !           246: 
        !           247:     def testPUTRegistersWithTM(self):
        !           248:         self.addExtFile(id='file', file='')
        !           249:         request = self.app.REQUEST
        !           250:         request['BODYFILE'] = open(notImage, 'rb')
        !           251:         self.assertEqual(getattr(self.file, '_v_begin_called', 0), 0)
        !           252:         self.file.PUT(request, request.RESPONSE)
        !           253:         self.assertEqual(getattr(self.file, '_v_begin_called', 0), 1)
        !           254: 
        !           255:     def testUndoRegistersWithTM(self):
        !           256:         self.addExtFile(id='file', file=notImage)
        !           257:         os.rename(self._fsname('file.exe.tmp'), self._fsname('file.exe.undo'))
        !           258:         self.file._v_begin_called = 0   # Clear
        !           259:         TM.remove(self.file)            # Clear
        !           260:         self.assertEqual(getattr(self.file, '_v_begin_called', 0), 0)
        !           261:         self.file._undo()
        !           262:         self.assertEqual(getattr(self.file, '_v_begin_called', 0), 1)
        !           263:         self.failUnless(self._exists('file.exe.tmp'))
        !           264: 
        !           265:     def testGetNewUfnSkipsTempFile(self):
        !           266:         self.addExtFile(id='file', file=notImage)
        !           267:         self.failUnless(self._exists('file.exe.tmp'))
        !           268:         fn = self.file._get_new_ufn(self.file.filename)
        !           269:         self.assertEqual(fn, ['file.1.exe'])
        !           270: 
        !           271:     def testGetFileToServeDoesNotUseTempFile(self):
        !           272:         self.addExtFile(id='file', file=notImage)
        !           273:         self.failUnless(self._exists('file.exe.tmp'))
        !           274:         fn = self.file._get_file_to_serve()[0]
        !           275:         self.assertEqual(fn, ['file.exe'])
        !           276: 
        !           277:     def testManageBeforeDeleteUsesTempFile(self):
        !           278:         self.addExtFile(id='file', file=notImage)
        !           279:         self.failUnless(self._exists('file.exe.tmp'))
        !           280:         self.folder._delObject('file')
        !           281:         self.failUnless(self._exists('file.exe.undo'))
        !           282:         self.failIf(self._exists('file.exe'))
        !           283: 
        !           284:     def testManageBeforeDeleteNukesMainFileIfTempFilePresent(self):
        !           285:         self.addExtFile(id='file', file=notImage)
        !           286:         self.file._finish()
        !           287:         self.file.manage_file_upload(file=notImage)
        !           288:         self.failUnless(self._exists('file.exe'))
        !           289:         self.failUnless(self._exists('file.exe.tmp'))
        !           290:         self.folder._delObject('file')
        !           291:         self.failUnless(self._exists('file.exe.undo'))
        !           292:         self.failIf(self._exists('file.exe'))
        !           293: 
        !           294:     def testManageBeforeDeleteUsesMainFileIfTempFileNotPresent(self):
        !           295:         self.addExtFile(id='file', file=notImage)
        !           296:         self.file._finish()
        !           297:         self.failUnless(self._exists('file.exe'))
        !           298:         self.failIf(self._exists('file.exe.tmp'))
        !           299:         self.folder._delObject('file')
        !           300:         self.failUnless(self._exists('file.exe.undo'))
        !           301:         self.failIf(self._exists('file.exe'))
        !           302: 
        !           303:     def testManageAfterCloneCreatesTempFile(self):
        !           304:         self.addExtFile(id='file', file=notImage)
        !           305:         self.file._finish()
        !           306:         transaction.savepoint(1) # Need a _p_oid
        !           307:         cb = self.folder.manage_copyObjects(['file'])
        !           308:         self.subfolder.manage_pasteObjects(cb)
        !           309:         self.failUnless(self._exists('file.exe'))       # original
        !           310:         self.failUnless(self._exists('file.1.exe.tmp'))  # copy
        !           311:         self.assertEqual(self.subfolder.file.filename, ['file.1.exe'])
        !           312: 
        !           313:     def testManageAfterCloneUsesTempFileAsSource(self):
        !           314:         self.addExtFile(id='file', file=notImage)
        !           315:         transaction.savepoint(1) # Need a _p_oid
        !           316:         self.subfolder.manage_clone(self.file, 'file')
        !           317:         self.failUnless(self._exists('file.exe.tmp'))   # original
        !           318:         self.failUnless(self._exists('file.1.exe.tmp'))  # copy
        !           319: 
        !           320:     def testManageAfterCloneUsesMainFileIfTempFileNotPresent(self):
        !           321:         self.addExtFile(id='file', file=notImage)
        !           322:         self.file._finish()
        !           323:         transaction.savepoint(1) # Need a _p_oid
        !           324:         self.subfolder.manage_clone(self.file, 'file')
        !           325:         self.failUnless(self._exists('file.exe'))       # original
        !           326:         self.failUnless(self._exists('file.1.exe.tmp'))  # copy
        !           327: 
        !           328:     def testManageAfterCloneTriesToUndoIfTempFileNotPresent(self):
        !           329:         self.addExtFile(id='file', file=notImage)
        !           330:         self.file._finish()
        !           331:         os.rename(self._fsname('file.exe'), self._fsname('file.exe.undo'))
        !           332:         transaction.savepoint(1) # Need a _p_oid
        !           333:         self.subfolder.manage_clone(self.file, 'file')
        !           334:         self.failUnless(self._exists('file.exe.tmp'))   # restored original
        !           335:         self.failUnless(self._exists('file.1.exe.tmp'))  # copy
        !           336: 
        !           337:     def testManageAfterCloneRegistersWithTM(self):
        !           338:         self.addExtFile(id='file', file=notImage)
        !           339:         self.file._finish()
        !           340:         self.file._v_begin_called = 0   # Clear
        !           341:         TM.remove(self.file)            # Clear
        !           342:         transaction.savepoint(1) # Need a _p_oid
        !           343:         self.assertEqual(getattr(self.subfolder.file, '_v_begin_called', 0), 0)
        !           344:         self.subfolder.manage_clone(self.file, 'file')
        !           345:         self.assertEqual(getattr(self.subfolder.file, '_v_begin_called', 0), 1)
        !           346: 
        !           347: 
        !           348: class TestExtImageTransactions(ExtFileTestCase):
        !           349: 
        !           350:     def afterSetUp(self):
        !           351:         ExtFileTestCase.afterSetUp(self)
        !           352:         self.setPermissions(copymove_perms)
        !           353:         self.folder.manage_addFolder('subfolder')
        !           354:         self.subfolder = self.folder.subfolder
        !           355: 
        !           356:     def beforeClose(self):
        !           357:         transaction.commit()  # Commit the cleaned-up fixture
        !           358: 
        !           359:     def testManageFileUploadCreatesTempImage(self):
        !           360:         self.addExtImage(id='image', file='')
        !           361:         self.image.manage_file_upload(file=gifImage)
        !           362:         self.failUnless(self._exists('image.gif.tmp'), 'Missing .tmp file')
        !           363:         self.failIf(self._exists('image.gif'), 'No .tmp file used')
        !           364: 
        !           365:     def testManageFileUploadCreatesTempPreview(self):
        !           366:         self.addExtImage(id='image', file='')
        !           367:         self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           368:         self.failUnless(self._exists('image.jpg.tmp'), 'Missing .tmp file')
        !           369:         self.failIf(self._exists('image.jpg'), 'No .tmp file used')
        !           370: 
        !           371:     def testManageFileUploadCreatesTempPreviewIfResize(self):
        !           372:         self.addExtImage(id='image', file='')
        !           373:         self.image.manage_file_upload(file=jpegImage, is_preview=1, create_prev=UPLOAD_RESIZE, maxx=10, maxy=10)
        !           374:         self.failUnless(self._exists('image.jpg.tmp'), 'Missing .tmp file')
        !           375:         self.failIf(self._exists('image.jpg'), 'No .tmp file used')
        !           376: 
        !           377:     def testManageFileUploadCreatesTempPreviewIfGenerate(self):
        !           378:         self.addExtImage(id='image', file='')
        !           379:         self.image.manage_file_upload(file=jpegImage, create_prev=GENERATE, maxx=10, maxy=10)
        !           380:         self.failUnless(self._exists('image.jpg.tmp'), 'Missing .tmp file') # main image
        !           381:         self.failIf(self._exists('image.jpg'), 'No .tmp file used')
        !           382:         self.failUnless(self._exists('image.1.jpg.tmp'), 'Missing .tmp file') # preview
        !           383:         self.failIf(self._exists('image.1.jpg'), 'No .tmp file used')
        !           384: 
        !           385:     def testManageHTTPUploadCreatesTempImage(self):
        !           386:         self.addExtImage(id='image', file='')
        !           387:         self.image.manage_http_upload(url=self.app.GifImage.absolute_url())
        !           388:         self.failUnless(self._exists('image.gif.tmp'), 'Missing .tmp file')
        !           389:         self.failIf(self._exists('image.gif'), 'No .tmp file used')
        !           390: 
        !           391:     def testManageHTTPUploadCreatesTempPreview(self):
        !           392:         self.addExtImage(id='image', file='')
        !           393:         self.image.manage_http_upload(url=self.app.GifImage.absolute_url(), is_preview=1)
        !           394:         self.failUnless(self._exists('image.gif.tmp'), 'Missing .tmp file')
        !           395:         self.failIf(self._exists('image.gif'), 'No .tmp file used')
        !           396: 
        !           397:     #def testManageHTTPUploadCreatesTempPreviewIfAutogen(self):
        !           398:     #    self.addExtImage(id='image', file='')
        !           399:     #    self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           400:     #    preview_size = self.image.get_prev_size()
        !           401:     #    self.image.manage_http_upload(url=self.app.GifImage.absolute_url())
        !           402:     #    self.failUnless(self._exists('image.gif.tmp'), 'Missing .tmp file') # main image
        !           403:     #    self.failIf(self._exists('image.gif'), 'No .tmp file used')
        !           404:     #    self.failUnless(self._exists('image.jpg.tmp'), 'Missing .tmp file') # preview
        !           405:     #    self.failIf(self._exists('image.jpg'), 'No .tmp file used')
        !           406:     #    # The preview file should no longer be the same
        !           407:     #    self.failIfEqual(preview_size, self.image.get_prev_size())
        !           408: 
        !           409:     def testPUTCreatesTempImage(self):
        !           410:         self.addExtImage(id='image', file='')
        !           411:         request = self.app.REQUEST
        !           412:         request['BODYFILE'] = open(jpegImage, 'rb')
        !           413:         self.image.PUT(request, request.RESPONSE)
        !           414:         self.failUnless(self._exists('image.jpg.tmp'), 'Missing .tmp file')
        !           415:         self.failIf(self._exists('image.jpg'), 'No .tmp file used')
        !           416: 
        !           417:     def testPUTCreatesTempPreviewIfAutogen(self):
        !           418:         self.addExtImage(id='image', file='')
        !           419:         self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           420:         preview_size = self.image.get_prev_size()
        !           421:         request = self.app.REQUEST
        !           422:         request['BODYFILE'] = open(gifImage, 'rb')
        !           423:         self.image.PUT(request, request.RESPONSE)
        !           424:         self.failUnless(self._exists('image.gif.tmp'), 'Missing .tmp file') # main image
        !           425:         self.failIf(self._exists('image.gif'), 'No .tmp file used')
        !           426:         self.failUnless(self._exists('image.jpg.tmp'), 'Missing .tmp file') # preview
        !           427:         self.failIf(self._exists('image.jpg'), 'No .tmp file used')
        !           428:         # The preview file should no longer be the same
        !           429:         self.failIfEqual(preview_size, self.image.get_prev_size())
        !           430: 
        !           431:     def testFinishCommitsTempImage(self):
        !           432:         self.addExtImage(id='image', file=jpegImage)
        !           433:         self.failUnless(self._exists('image.jpg.tmp'))
        !           434:         self.image._finish()
        !           435:         self.failUnless(self._exists('image.jpg'))
        !           436:         self.failIf(self._exists('image.jpg.tmp'))
        !           437: 
        !           438:     def testFinishCommitsTempPreview(self):
        !           439:         self.addExtImage(id='image', file=jpegImage)
        !           440:         self.image.manage_create_prev(maxx=10, maxy=10)
        !           441:         self.failUnless(self._exists('image.jpg.tmp'))
        !           442:         self.failUnless(self._exists('image.1.jpg.tmp'))
        !           443:         self.image._finish()
        !           444:         self.failUnless(self._exists('image.jpg'))
        !           445:         self.failIf(self._exists('image.jpg.tmp'))
        !           446:         self.failUnless(self._exists('image.1.jpg'))
        !           447:         self.failIf(self._exists('image.1.jpg.tmp'))
        !           448: 
        !           449:     def testAbortNukesTempImage(self):
        !           450:         self.addExtImage(id='image', file=jpegImage)
        !           451:         self.failUnless(self._exists('image.jpg.tmp'))
        !           452:         self.image._abort()
        !           453:         self.failIf(self._exists('image.jpg'))
        !           454:         self.failIf(self._exists('image.jpg.tmp'))
        !           455: 
        !           456:     def testAbortNukesTempPreview(self):
        !           457:         self.addExtImage(id='image', file=jpegImage)
        !           458:         self.image.manage_create_prev(maxx=10, maxy=10)
        !           459:         self.failUnless(self._exists('image.jpg.tmp'))
        !           460:         self.failUnless(self._exists('image.1.jpg.tmp'))
        !           461:         self.image._abort()
        !           462:         self.failIf(self._exists('image.jpg'))
        !           463:         self.failIf(self._exists('image.jpg.tmp'))
        !           464:         self.failIf(self._exists('image.1.jpg'))
        !           465:         self.failIf(self._exists('image.1.jpg.tmp'))
        !           466: 
        !           467:     def testUndoCreatesTempImage(self):
        !           468:         self.addExtImage(id='image', file=jpegImage)
        !           469:         self.image._finish()
        !           470:         os.rename(self._fsname('image.jpg'), self._fsname('image.jpg.undo'))
        !           471:         self.image._undo()
        !           472:         self.failIf(self._exists('image.jpg.undo'))
        !           473:         self.failUnless(self._exists('image.jpg.tmp'))
        !           474: 
        !           475:     def testUndoCreatesTempPreview(self):
        !           476:         self.addExtImage(id='image', file=jpegImage)
        !           477:         self.image.manage_create_prev(maxx=10, maxy=10)
        !           478:         self.image._finish()
        !           479:         os.rename(self._fsname('image.jpg'), self._fsname('image.jpg.undo'))
        !           480:         os.rename(self._fsname('image.1.jpg'), self._fsname('image.1.jpg.undo'))
        !           481:         self.image._undo()
        !           482:         self.failIf(self._exists('image.jpg.undo'))
        !           483:         self.failUnless(self._exists('image.jpg.tmp'))
        !           484:         self.failIf(self._exists('image.1.jpg.undo'))
        !           485:         self.failUnless(self._exists('image.1.jpg.tmp'))
        !           486: 
        !           487:     def testIsBrokenReturnsTrueIfPreviewBroken(self):
        !           488:         self.addExtImage(id='image', file=jpegImage)
        !           489:         self.image.manage_create_prev(maxx=10, maxy=10)
        !           490:         os.remove(self._fsname('image.1.jpg.tmp'))
        !           491:         self.failUnless(self.image.is_broken())
        !           492: 
        !           493:     def testManageFileUploadRegistersPreviewWithTM(self):
        !           494:         self.addExtImage(id='image', file='')
        !           495:         self.assertEqual(getattr(self.image, '_v_begin_called', 0), 0)
        !           496:         self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           497:         self.assertEqual(getattr(self.image, '_v_begin_called', 0), 1)
        !           498: 
        !           499:     def testManageFileUploadRegistersPreviewWithTMIfResize(self):
        !           500:         self.addExtImage(id='image', file='')
        !           501:         self.assertEqual(getattr(self.image, '_v_begin_called', 0), 0)
        !           502:         self.image.manage_file_upload(file=jpegImage, is_preview=1, create_prev=UPLOAD_RESIZE, maxx=10, maxy=10)
        !           503:         self.assertEqual(getattr(self.image, '_v_begin_called', 0), 1)
        !           504: 
        !           505:     # XXX: Not testable atm
        !           506:     def DISABLED_testManageFileUploadRegistersPreviewWithTMIfGenerate(self):
        !           507:         self.addExtImage(id='image', file='')
        !           508:         self.assertEqual(getattr(self.image, '_v_begin_called', 0), 0)
        !           509:         self.image.manage_file_upload(file=jpegImage, create_prev=GENERATE, maxx=10, maxy=10)
        !           510:         self.assertEqual(getattr(self.image, '_v_begin_called', 0), 1)
        !           511: 
        !           512:     def testManageHTTPUploadRegistersPreviewWithTM(self):
        !           513:         self.addExtImage(id='image', file='')
        !           514:         self.assertEqual(getattr(self.image, '_v_begin_called', 0), 0)
        !           515:         self.image.manage_http_upload(url=self.app.GifImage.absolute_url(), is_preview=1)
        !           516:         self.assertEqual(getattr(self.image, '_v_begin_called', 0), 1)
        !           517: 
        !           518:     # XXX: Not testable atm
        !           519:     def DISABLED_testManageHTTPUploadRegistersPreviewWithTMIfAutogen(self):
        !           520:         self.addExtImage(id='image', file='')
        !           521:         self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           522:         self.image._v_begin_called = 0  # Clear
        !           523:         TM.remove(self.image)           # Clear
        !           524:         self.assertEqual(getattr(self.image, '_v_begin_called', 0), 0)
        !           525:         self.image.manage_http_upload(url=self.app.GifImage.absolute_url())
        !           526:         self.assertEqual(getattr(self.image, '_v_begin_called', 0), 1)
        !           527: 
        !           528:     # XXX: Not testable atm
        !           529:     def DISABLED_testPUTRegistersPreviewWithTMIfAutogen(self):
        !           530:         self.addExtImage(id='image', file='')
        !           531:         self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           532:         self.image._v_begin_called = 0  # Clear
        !           533:         TM.remove(self.image)           # Clear
        !           534:         request = self.app.REQUEST
        !           535:         request['BODYFILE'] = open(jpegImage, 'rb')
        !           536:         self.assertEqual(getattr(self.image, '_v_begin_called', 0), 0)
        !           537:         self.image.PUT(request, request.RESPONSE)
        !           538:         self.assertEqual(getattr(self.image, '_v_begin_called', 0), 1)
        !           539: 
        !           540:     def testUndoRegistersPreviewWithTM(self):
        !           541:         self.addExtImage(id='image', file='')
        !           542:         self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           543:         os.rename(self._fsname('image.jpg.tmp'), self._fsname('image.jpg.undo'))
        !           544:         self.image._v_begin_called = 0  # Clear
        !           545:         TM.remove(self.image)           # Clear
        !           546:         self.assertEqual(getattr(self.image, '_v_begin_called', 0), 0)
        !           547:         self.image._undo()
        !           548:         self.assertEqual(getattr(self.image, '_v_begin_called', 0), 1)
        !           549:         self.failUnless(self._exists('image.jpg.tmp'))
        !           550: 
        !           551:     def testManageBeforeDeleteUsesTempPreview(self):
        !           552:         self.addExtImage(id='image', file='')
        !           553:         self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           554:         self.failUnless(self._exists('image.jpg.tmp'))
        !           555:         self.folder._delObject('image')
        !           556:         self.failUnless(self._exists('image.jpg.undo'))
        !           557:         self.failIf(self._exists('image.jpg.tmp'))
        !           558:         self.failIf(self._exists('image.jpg'))
        !           559: 
        !           560:     def testManageBeforeDeleteNukesPreviewIfTempPreviewPresent(self):
        !           561:         self.addExtImage(id='image', file='')
        !           562:         self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           563:         self.image._finish()
        !           564:         self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           565:         self.failUnless(self._exists('image.jpg'))
        !           566:         self.failUnless(self._exists('image.jpg.tmp'))
        !           567:         self.folder._delObject('image')
        !           568:         self.failUnless(self._exists('image.jpg.undo'))
        !           569:         self.failIf(self._exists('image.jpg.tmp'))
        !           570:         self.failIf(self._exists('image.jpg'))
        !           571: 
        !           572:     def testManageBeforeDeleteUsesPreviewIfTempPreviewNotPresent(self):
        !           573:         self.addExtImage(id='image', file='')
        !           574:         self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           575:         self.image._finish()
        !           576:         self.failUnless(self._exists('image.jpg'))
        !           577:         self.failIf(self._exists('image.jpg.tmp'))
        !           578:         self.folder._delObject('image')
        !           579:         self.failUnless(self._exists('image.jpg.undo'))
        !           580:         self.failIf(self._exists('image.jpg.tmp'))
        !           581:         self.failIf(self._exists('image.jpg'))
        !           582: 
        !           583:     def testManageAfterCloneCreatesTempPreview(self):
        !           584:         self.addExtImage(id='image', file='')
        !           585:         self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           586:         self.image._finish()
        !           587:         transaction.savepoint(1) # Need a _p_oid
        !           588:         cb = self.folder.manage_copyObjects(['image'])
        !           589:         self.subfolder.manage_pasteObjects(cb)
        !           590:         self.failUnless(self._exists('image.jpg'))      # original
        !           591:         self.failUnless(self._exists('image.1.jpg.tmp')) # copy
        !           592:         self.assertEqual(self.subfolder.image.prev_filename, ['image.1.jpg'])
        !           593: 
        !           594:     def testManageAfterCloneUsesTempPreviewAsSource(self):
        !           595:         self.addExtImage(id='image', file='')
        !           596:         self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           597:         transaction.savepoint(1) # Need a _p_oid
        !           598:         self.subfolder.manage_clone(self.image, 'image')
        !           599:         self.failUnless(self._exists('image.jpg.tmp'))  # original
        !           600:         self.failUnless(self._exists('image.1.jpg.tmp')) # copy
        !           601: 
        !           602:     def testManageAfterCloneUsesPreviewIfTempPreviewNotPresent(self):
        !           603:         self.addExtImage(id='image', file='')
        !           604:         self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           605:         self.image._finish()
        !           606:         transaction.savepoint(1) # Need a _p_oid
        !           607:         self.subfolder.manage_clone(self.image, 'image')
        !           608:         self.failUnless(self._exists('image.jpg'))      # original
        !           609:         self.failUnless(self._exists('image.1.jpg.tmp')) # copy
        !           610: 
        !           611:     def testManageAfterCloneTriesToUndoIfTempPreviewNotPresent(self):
        !           612:         self.addExtImage(id='image', file='')
        !           613:         self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           614:         self.image._finish()
        !           615:         os.rename(self._fsname('image.jpg'), self._fsname('image.jpg.undo'))
        !           616:         transaction.savepoint(1) # Need a _p_oid
        !           617:         self.subfolder.manage_clone(self.image, 'image')
        !           618:         self.failUnless(self._exists('image.jpg.tmp'))  # restored original
        !           619:         self.failUnless(self._exists('image.1.jpg.tmp')) # copy
        !           620: 
        !           621:     def testManageAfterCloneUsesTempPreviewIfOneFile(self):
        !           622:         # XXX: Fishy. It seems this tests an impossible state
        !           623:         self.addExtImage(id='image', file=jpegImage)
        !           624:         self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           625:         # Simulate main and preview being one file
        !           626:         self.image.prev_filename = ['image.2.jpg']
        !           627:         transaction.savepoint(1) # Need a _p_oid
        !           628:         self.subfolder.manage_clone(self.image, 'image')
        !           629:         self.failUnless(self._exists('image.jpg.tmp'))  # original
        !           630:         self.failUnless(self._exists('image.1.jpg.tmp')) # original preview
        !           631:         self.failUnless(self._exists('image.2.jpg.tmp')) # copy
        !           632:         self.assertEqual(self.subfolder.image.prev_filename, ['image.2.jpg'])
        !           633:         self.assertEqual(self.subfolder.image.filename, ['image.2.jpg'])
        !           634: 
        !           635:     # XXX: Not testable atm
        !           636:     def DISABLED_testManageAfterCloneRegistersWithTM(self):
        !           637:         pass
        !           638: 
        !           639:     def testManageCreatePrevCreatesTempFile(self):
        !           640:         self.addExtImage(id='image', file=jpegImage)
        !           641:         self.image.manage_create_prev(maxx=10, maxy=10)
        !           642:         self.failUnless(self._exists('image.jpg.tmp'))
        !           643:         self.failUnless(self._exists('image.1.jpg.tmp')) # preview
        !           644:         self.assertEqual(self.image.prev_filename, ['image.1.jpg'])
        !           645: 
        !           646:     def testCreatePrevRegistersWithTM(self):
        !           647:         self.addExtImage(id='image', file=jpegImage)
        !           648:         self.assertEqual(getattr(self.image, '_v_begin_called', 0), 1)
        !           649:         self.image._v_begin_called = 0  # Clear
        !           650:         TM.remove(self.image)           # Clear
        !           651:         self.assertEqual(getattr(self.image, '_v_begin_called', 0), 0)
        !           652:         self.image.manage_create_prev(maxx=10, maxy=10)
        !           653:         self.assertEqual(getattr(self.image, '_v_begin_called', 0), 1)
        !           654: 
        !           655:     def testManageDelPrevUsesTempFile(self):
        !           656:         self.addExtImage(id='image', file='')
        !           657:         self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           658:         self.failUnless(self._exists('image.jpg.tmp'))
        !           659:         self.image.manage_del_prev()
        !           660:         self.failUnless(self._exists('image.jpg.undo'))
        !           661:         self.failIf(self._exists('image.jpg.tmp'))
        !           662:         self.failIf(self._exists('image.jpg'))
        !           663: 
        !           664:     def testManageDelPrevNukesPreviewIfTempPreviewPresent(self):
        !           665:         self.addExtImage(id='image', file='')
        !           666:         self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           667:         self.image._finish()
        !           668:         self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           669:         self.failUnless(self._exists('image.jpg'))
        !           670:         self.failUnless(self._exists('image.jpg.tmp'))
        !           671:         self.image.manage_del_prev()
        !           672:         self.failUnless(self._exists('image.jpg.undo'))
        !           673:         self.failIf(self._exists('image.jpg.tmp'))
        !           674:         self.failIf(self._exists('image.jpg'))
        !           675: 
        !           676:     def testManageDelPrevUsesPreviewIfTempPreviewNotPresent(self):
        !           677:         self.addExtImage(id='image', file='')
        !           678:         self.image.manage_file_upload(file=jpegImage, is_preview=1)
        !           679:         self.image._finish()
        !           680:         self.failUnless(self._exists('image.jpg'))
        !           681:         self.failIf(self._exists('image.jpg.tmp'))
        !           682:         self.image.manage_del_prev()
        !           683:         self.failUnless(self._exists('image.jpg.undo'))
        !           684:         self.failIf(self._exists('image.jpg.tmp'))
        !           685:         self.failIf(self._exists('image.jpg'))
        !           686: 
        !           687: 
        !           688: def test_suite():
        !           689:     from unittest import TestSuite, makeSuite
        !           690:     suite = TestSuite()
        !           691:     suite.addTest(makeSuite(TestTransactions))
        !           692:     suite.addTest(makeSuite(TestTransactionManager))
        !           693:     suite.addTest(makeSuite(TestExtFileTransactions))
        !           694:     suite.addTest(makeSuite(TestExtImageTransactions))
        !           695:     return suite
        !           696: 
        !           697: if __name__ == '__main__':
        !           698:     framework()
        !           699: 

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