#from Products.ERP5.Document.Image import Image #from Products.ERP5Type.tests.utils import FileUpload import Image from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase import transaction from zLOG import LOG,INFO,ERROR import json from cStringIO import StringIO import os class FileUpload(file): """Act as an uploaded file. """ __allow_access_to_unprotected_subobjects__ = 1 def __init__(self, path, name): self.filename = name file.__init__(self, path) self.headers = {} def makeFilePath(name): return os.path.join(os.path.dirname(__file__), 'tmp', name) def makeFileUpload(name, as_name=None): if as_name is None: as_name = name path = makeFilePath(name) return FileUpload(path, as_name) class TestSafeImage(ERP5TypeTestCase): def getBusinessTemplateList(self): return ('erp5_base', 'erp5_dms', 'erp5_safeimage' ) def afterSetUp(self): portal = self.getPortalObject() self.image_module = self.portal.getDefaultModule(portal_type = 'Image Module') self.assertTrue(self.image_module is not None) if getattr(self.image_module,'testImage',None) is not None: self.image_module.manage_delObjects(ids=['testImage']) if getattr(self.image_module,'testTile',None) is not None: self.image_module.manage_delObjects(ids=['testTile']) if getattr(self.image_module,'testTileTransformed',None) is not None: self.image_module.manage_delObjects(ids=['testTileTransformed']) transaction.commit() self.tic() def _createImage(self): portal = self.getPortalObject() _image = makeFileUpload('image_test.jpg') image = self.image_module.newContent(portal_type='Image',title='testImage', id='testImage',file=_image,filename='testImage') return image def _createTileImage(self): portal = self.getPortalObject() tile_image = makeFileUpload('image_test.jpg') tile = self.image_module.newContent(portal_type='Image Tile',title='testTile', id='testTile',file=tile_image,filename='testTile') return tile def _createTileImageTransformed(self): portal = self.getPortalObject() tile_image_transformed = makeFileUpload('image_test.jpg') tile_transformed = self.image_module.newContent(portal_type='Image Tile Transformed', title='testTileTransformed',id='testTileTransformed', file=tile_image_transformed,filename='testTileTransformed') return tile_transformed def test_01_CreateImage(self): image = self._createImage() self.assertTrue(image.hasData()) transaction.commit() self.tic() self.assertNotEqual(image,None) def test_02_CreateTileImage(self): """" We are going to check that tile image has following structure 1/ 1/Image Tile Group 1/Image Tile Group/0-0-0 1/Image Tile Group/1-0-0 1/ImageProperties.xml """ tile = self._createTileImage() transaction.commit() self.tic() self.assertNotEqual(tile,None) image_property = getattr(tile, "ImageProperties.xml", None) self.assertEquals(image_property.getData(), """<IMAGE_PROPERTIES WIDTH="660" HEIGHT="495" NUMTILES="9" NUMIMAGES="1" VERSION="1.8" TILESIZE="256" />""") self.assertNotEqual(image_property, None) self.assertEquals("Embedded File", image_property.getPortalType()) image_group = getattr(tile, "TileGroup0", None) self.assertNotEquals(image_group, None) self.assertEquals("Image Tile Group",image_group.getPortalType()) splitted_image_list = image_group.objectValues(portal_type="Image") self.assertEquals(set(['0-0-0','1-0-0','1-1-0','2-0-0','2-0-1','2-1-0','2-1-1','2-2-0','2-2-1']), set([x.getId() for x in splitted_image_list])) for x in splitted_image_list: self.assertTrue(x.hasData()) self.assertEquals(123,image_group['0-0-0'].getHeight()) self.assertEquals(165,image_group['0-0-0'].getWidth()) def test_03_CreateTileImageTransformed(self): """" We are going to check that tile image has following structure 1/ 1/Image Tile Group 1/Image Tile Group/0-0-0 1/Image Tile Group/1-0-0 1/ImageProperties.xml 1/TransformFile.txt """ tile_transformed = self._createTileImageTransformed() transaction.commit() self.tic() self.assertNotEqual(tile_transformed,None) image_property = getattr(tile_transformed, "ImageProperties.xml", None) self.assertEquals(image_property.getData(), """<IMAGE_PROPERTIES WIDTH="660" HEIGHT="495" NUMTILES="9" NUMIMAGES="1" VERSION="1.8" TILESIZE="256" />""") self.assertNotEqual(image_property, None) self.assertEquals("Embedded File", image_property.getPortalType()) image_transform = getattr(tile_transformed, "TransformFile.txt", None) self.assertTrue(image_transform.getData().split()[1],'2-0-0') self.assertNotEqual(image_transform, None) self.assertEquals("Embedded File", image_transform.getPortalType()) image_group = getattr(tile_transformed, "TileGroup0", None) self.assertNotEquals(image_group, None) self.assertEquals("Image Tile Group",image_group.getPortalType()) splitted_image_list = image_group.objectValues(portal_type="Image") self.assertEquals(set(['0-0-0','1-0-0','1-1-0','2-0-0','2-0-1','2-1-0','2-1-1','2-2-0','2-2-1']), set([x.getId() for x in splitted_image_list])) for x in splitted_image_list: self.assertTrue(x.hasData()) self.assertEquals(123,image_group['0-0-0'].getHeight()) self.assertEquals(165,image_group['0-0-0'].getWidth()) if getattr(self.image_module,'testTileTransformed',None) is not None: self.image_module.manage_delObjects(ids=['testTileTransformed']) transaction.commit() self.tic()