[Erp5-report] r38448 jerome - /erp5/trunk/products/ERP5/tests/testERP5WebWithDms.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Sep 17 13:07:36 CEST 2010


Author: jerome
Date: Fri Sep 17 13:07:35 2010
New Revision: 38448

URL: http://svn.erp5.org?rev=38448&view=rev
Log:
Tests html preview of an OOo document with images as extensible content.


Modified:
    erp5/trunk/products/ERP5/tests/testERP5WebWithDms.py

Modified: erp5/trunk/products/ERP5/tests/testERP5WebWithDms.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testERP5WebWithDms.py?rev=38448&r1=38447&r2=38448&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testERP5WebWithDms.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testERP5WebWithDms.py [utf8] Fri Sep 17 13:07:35 2010
@@ -30,6 +30,9 @@
 import unittest
 import os
 import transaction
+from lxml import etree
+from StringIO import StringIO
+
 from AccessControl import Unauthorized
 from AccessControl.SecurityManagement import newSecurityManager
 from Testing import ZopeTestCase
@@ -561,6 +564,76 @@ class TestERP5WebWithDms(ERP5TypeTestCas
     self.assertEquals(response.getHeader('content-type'),
                                          'text/html; charset=utf-8')
 
+  def test_PreviewOOoDocumentWithEmbeddedImage(self):
+    """Tests html preview of an OOo document with images as extensible content.
+    """
+    portal = self.portal
+    request = portal.REQUEST
+    request['PARENTS'] = [self.app]
+    website = self.setupWebSite()
+    web_section_portal_type = 'Web Section'
+    web_section = website.newContent(portal_type=web_section_portal_type)
+
+    document_reference = 'tiolive-ERP5.Freedom.TioLive'
+    upload_file = makeFileUpload('tiolive-ERP5.Freedom.TioLive-001-en.odp')
+    document = self.portal.document_module.newContent(
+                                          portal_type='Presentation',
+                                          reference=document_reference,
+                                          file=upload_file)
+    transaction.commit()
+    self.tic()
+    credential = 'ERP5TypeTestCase:'
+
+    # first, preview the draft in its physical location (in document module)
+    response = self.publish('%s/asEntireHTML' % document.absolute_url_path(),
+                            credential)
+    self.assertEquals(response.getHeader('content-type'), 'text/html')
+    html = response.getBody()
+    self.assertTrue('<img' in html, html)
+    
+    # find the img src
+    parser = etree.HTMLParser()
+    tree = etree.parse(StringIO(html), parser)
+    img_list = tree.findall('//img')
+    self.assertEquals(1, len(img_list))
+    src = img_list[0].get('src')
+
+    # and make another query for this img
+    response = self.publish('%s/%s' % ( document.absolute_url_path(), src),
+                            credential)
+    self.assertEquals(response.getHeader('content-type'), 'image/png')
+    png = response.getBody()
+    self.assertTrue(png.startswith('\x89PNG'))
+
+    # then publish the document and access it anonymously by reference through
+    # the web site
+    document.publish()
+    
+    transaction.commit()
+    self.tic()
+
+    response = self.publish('%s/%s/asEntireHTML' % (
+              website.absolute_url_path(), document_reference))
+    self.assertEquals(response.getHeader('content-type'), 'text/html')
+    html = response.getBody()
+    self.assertTrue('<img' in html, html)
+    
+    # find the img src
+    parser = etree.HTMLParser()
+    tree = etree.parse(StringIO(html), parser)
+    img_list = tree.findall('//img')
+    self.assertEquals(1, len(img_list))
+    src = img_list[0].get('src')
+
+    # and make another query for this img
+    response = self.publish('%s/%s/%s' % (
+           website.absolute_url_path(), document_reference, src))
+    self.assertEquals(response.getHeader('content-type'), 'image/png')
+    png = response.getBody()
+    self.assertTrue(png.startswith('\x89PNG'))
+
+
+
 def test_suite():
   suite = unittest.TestSuite()
   suite.addTest(unittest.makeSuite(TestERP5WebWithDms))




More information about the Erp5-report mailing list