[Erp5-report] r17136 - /erp5/trunk/products/ERP5OOo/tests/testDms.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Tue Oct 23 18:22:19 CEST 2007
Author: jerome
Date: Tue Oct 23 18:22:18 2007
New Revision: 17136
URL: http://svn.erp5.org?rev=17136&view=rev
Log:
add functional support in testDMS, this requires more faking of Localizer.
add test to make sure Members can download a pdf version of a published document
add test to make sure Owner can download his own document in original format
Modified:
erp5/trunk/products/ERP5OOo/tests/testDms.py
Modified: erp5/trunk/products/ERP5OOo/tests/testDms.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5OOo/tests/testDms.py?rev=17136&r1=17135&r2=17136&view=diff
==============================================================================
--- erp5/trunk/products/ERP5OOo/tests/testDms.py (original)
+++ erp5/trunk/products/ERP5OOo/tests/testDms.py Tue Oct 23 18:22:18 2007
@@ -48,10 +48,7 @@
# XXX test_03 and test_04 work only WITHOUT oood (because of a known bug in erp5_dms)
-#
-# Skeleton ZopeTestCase
-#
-
+import unittest
from random import randint
import time
@@ -64,15 +61,6 @@
import os
from Products.ERP5Type import product_path
from Products.ERP5OOo.Document.OOoDocument import ConversionError
-
-import os, sys
-if __name__ == '__main__':
- execfile(os.path.join(sys.path[0], 'framework.py'))
-
-
-# Needed in order to have a log file inside the current folder
-os.environ['EVENT_LOG_FILE'] = os.path.join(os.getcwd(), 'zLOG.log')
-os.environ['EVENT_LOG_SEVERITY'] = '-300'
QUIET = 0
RUN_ALL_TEST = 1
@@ -99,7 +87,7 @@
class FileUploadTest(file):
- __allow_access_to_unprotected_subobjects__=1
+ __allow_access_to_unprotected_subobjects__ = 1
def __init__(self, path, name):
self.filename = name
@@ -115,24 +103,38 @@
path = makeFilePath(name)
return FileUploadTest(path, name)
+class DummyMessageCatalog:
+ __allow_access_to_unprotected_subobjects__ = 1
+ def gettext(self, word, *args, **kw):
+ return word
+
class DummyLocalizer:
-
"""
A replacement for stock cookie - based localizer
"""
-
+ __allow_access_to_unprotected_subobjects__ = 1
+ erp5_ui = DummyMessageCatalog()
+ erp5_catalog = DummyMessageCatalog()
lang = 'en'
def get_selected_language(self):
return self.lang
+
+ def get_languages_map(self):
+ return [{'selected': True, 'id': 'en', 'title': 'English'},
+ {'selected': False, 'id': 'pl', 'title': 'Polish'},
+ {'selected': False, 'id': 'fr', 'title': 'French'},]
def changeLanguage(self, lang):
self.lang = lang
- def translate(self, dictionnary, word):
+ def translate(self, word, *args, **kw):
return word
-
-class TestDocument(ERP5TypeTestCase):
+
+ def __call__(self, request, context):
+ pass
+
+class TestDocument(ERP5TypeTestCase, ZopeTestCase.Functional):
"""
Test basic document - related operations
"""
@@ -142,11 +144,14 @@
## setup
- def afterSetUp(self, quiet=QUIET, run=0):
- self.portal = self.getPortal()
+ def afterSetUp(self):
self.setSystemPreference()
# set a dummy localizer (because normally it is cookie based)
self.portal.Localizer = DummyLocalizer()
+ # make sure every body can traverse document module
+ self.portal.document_module.manage_permission('View', ['Anonymous'], 1)
+ self.portal.document_module.manage_permission(
+ 'Access contents information', ['Anonymous'], 1)
def setSystemPreference(self):
default_pref = self.portal.portal_preferences.default_site_preference
@@ -176,7 +181,6 @@
"""
Remove everything after each run
"""
- printAndLog("clearing document module...")
get_transaction().abort()
self.tic()
doc_module = self.getDocumentModule()
@@ -454,14 +458,54 @@
doc.edit(file=makeFileUpload('import_data_list.ods'))
self.failUnless(doc.hasData())
-if __name__ == '__main__':
- framework()
-else:
- import unittest
- def test_suite():
- suite = unittest.TestSuite()
- suite.addTest(unittest.makeSuite(TestDocument))
- return suite
+ def test_Owner_Base_download(self):
+ # tests that owners can download OOo documents, and all headers (including
+ # filenames) are set correctly
+ doc = self.portal.document_module.newContent(
+ source_reference='test.ods',
+ portal_type='Spreadsheet')
+ doc.edit(file=makeFileUpload('import_data_list.ods'))
+
+ uf = self.portal.acl_users
+ uf._doAddUser('member_user1', 'secret', ['Member', 'Owner'], [])
+ user = uf.getUserById('member_user1').__of__(uf)
+ newSecurityManager(None, user)
+
+ response = self.publish('%s/Base_download' % doc.getPath(),
+ basic='member_user1:secret')
+ self.assertEquals(makeFileUpload('import_data_list.ods').read(),
+ response.body)
+ self.assertEquals('application/vnd.oasis.opendocument.spreadsheet',
+ response.headers['content-type'])
+ self.assertEquals('attachment;; filename="import_data_list.ods"',
+ response.headers['content-disposition'])
+
+ def test_Member_download_pdf_format(self):
+ # tests that members can download OOo documents in pdf format (at least in
+ # published state), and all headers (including filenames) are set correctly
+ doc = self.portal.document_module.newContent(
+ source_reference='test.ods',
+ portal_type='Spreadsheet')
+ doc.edit(file=makeFileUpload('import_data_list.ods'))
+ doc.publish()
+ get_transaction().commit()
+
+ uf = self.portal.acl_users
+ uf._doAddUser('member_user2', 'secret', ['Member'], [])
+ user = uf.getUserById('member_user2').__of__(uf)
+ newSecurityManager(None, user)
+
+ response = self.publish('%s/Document_convert?format=pdf' % doc.getPath(),
+ basic='member_user2:secret')
+ self.assertEquals('application/pdf', response.headers['content-type'])
+ self.assertEquals('attachment;; filename="import_data_list.pdf"',
+ response.headers['content-disposition'])
+
+
+def test_suite():
+ suite = unittest.TestSuite()
+ suite.addTest(unittest.makeSuite(TestDocument))
+ return suite
# vim: syntax=python shiftwidth=2
More information about the Erp5-report
mailing list