[Erp5-report] r26296 - /erp5/trunk/products/ERP5/tests/testERP5Web.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Mon Apr 6 16:40:20 CEST 2009
Author: vincentd
Date: Mon Apr 6 16:40:16 2009
New Revision: 26296
URL: http://svn.erp5.org?rev=26296&view=rev
Log:
Remove useless import, split test dependant of CRM from others and make tearDown method for every class.
Modified:
erp5/trunk/products/ERP5/tests/testERP5Web.py
Modified: erp5/trunk/products/ERP5/tests/testERP5Web.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testERP5Web.py?rev=26296&r1=26295&r2=26296&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testERP5Web.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testERP5Web.py [utf8] Mon Apr 6 16:40:16 2009
@@ -65,9 +65,13 @@
"""
Return the list of required business templates.
"""
- return ('erp5_base', 'erp5_web',
- 'erp5_ingestion', 'erp5_ingestion_mysql_innodb_catalog',
- 'erp5_dms', 'erp5_dms_mysql_innodb_catalog',)
+ return ('erp5_base',
+ 'erp5_web',
+ #'erp5_ingestion',
+ #'erp5_ingestion_mysql_innodb_catalog',
+ #'erp5_dms',
+ #'erp5_dms_mysql_innodb_catalog',
+ )
def afterSetUp(self):
self.login()
@@ -75,6 +79,15 @@
self.web_page_module = self.portal.web_page_module
self.web_site_module = self.portal.web_site_module
self.portal_id = self.portal.getId()
+
+ def tearDown(self):
+ get_transaction().abort()
+ def clearModule(module):
+ module.manage_delObjects(list(module.objectIds()))
+ get_transaction().commit()
+ self.tic()
+ clearModule(self.portal.web_site_module)
+ clearModule(self.portal.web_page_module)
def setupWebSite(self, **kw):
"""
@@ -153,13 +166,11 @@
return webpage_list
-
def test_01_WebSiteRecatalog(self, quiet=quiet, run=run_all_test):
"""
Test that a recataloging works for Web Site documents
"""
- if not run:
- return
+ if not run: return
if not quiet:
message = '\ntest_01_WebSiteRecatalog'
ZopeTestCase._print(message)
@@ -182,8 +193,7 @@
"""
Simple Case of creating a web page.
"""
- if not run:
- return
+ if not run: return
if not quiet:
message = '\ntest_02_EditSimpleWebPage'
ZopeTestCase._print(message)
@@ -196,8 +206,7 @@
"""
Create Web site User.
"""
- if not run:
- return
+ if not run: return
if not quiet:
message = '\ntest_03_CreateWebSiteUser'
ZopeTestCase._print(message)
@@ -237,8 +246,7 @@
Simple Case of showing the proper Web Page based on
current user selected language in browser.
"""
- if not run:
- return
+ if not run: return
if not quiet:
message = '\ntest_04_WebPageTranslation'
ZopeTestCase._print(message)
@@ -270,110 +278,15 @@
portal.Localizer.manage_changeDefaultLang(language = language)
default_document = websection.getDefaultDocumentValue()
self.assertEquals(language, default_document.getLanguage())
-
- def test_05_WebPageVersioning(self, quiet=quiet, run=run_all_test):
- """
- Simple Case of showing the proper most recent public Web Page based on
- (language, version)
- """
- if not run:
- return
- if not quiet:
- message = '\ntest_05_WebPageVersioning'
- ZopeTestCase._print(message)
- portal = self.getPortal()
- request = self.app.REQUEST
- website = self.setupWebSite()
- websection = self.setupWebSection()
- page_reference = 'default-webpage-versionning'
- webpage_list = self.setupWebSitePages(prefix = page_reference)
-
- # set default web page for section
- found_by_reference = portal.portal_catalog(name = page_reference,
- language = 'en',
- portal_type = 'Web Page')
- en_01 = found_by_reference[0].getObject()
- # set it as default web page for section
- websection.edit(categories_list = ['aggregate/%s' %en_01.getRelativeUrl(),])
- self.assertEqual([en_01.getReference(),],
- websection.getAggregateReferenceList())
-
- # create manually a copy of 'en_01' with higher version and check that
- # older version is archived and new one is show as default web page for section
- en_02 = self.web_page_module.newContent(portal_type = 'Web Page',
- reference = page_reference,
- version = 0.2,
- language = 'en')
- en_02.publish()
- en_02.reindexObject()
- get_transaction().commit()
- self.tic()
-
- # is old archived?
- self.assertEquals('archived', en_01.getValidationState())
-
- # is new public and default web page for section?
- portal.Localizer.manage_changeDefaultLang(language = 'en')
- default_document = websection.getDefaultDocumentValue()
- self.assertEquals(en_02, default_document)
- self.assertEquals('en', default_document.getLanguage())
- self.assertEquals('0.2', default_document.getVersion())
- self.assertEquals('published', default_document.getValidationState())
-
- def test_06_WebSectionAuthorizationForced(self, quiet=quiet, run=run_all_test):
- """ Check that when a document is requested within a Web Section we have a chance to
- require user to login.
- Whether or not an user will login is controlled by a property on Web Section (authorization_forced).
- """
- if not run:
- return
- if not quiet:
- message = '\ntest_06_WebSectionAuthorizationForced'
- ZopeTestCase._print(message)
- request = self.app.REQUEST
- website = self.setupWebSite()
- websection = self.setupWebSection()
- webpage_list = self.setupWebSitePages(prefix = 'test-web-page')
- webpage = webpage_list[0]
- document_reference = 'default-document-reference'
- document = self.portal.web_page_module.newContent(
- portal_type = 'Web Page',
- reference = document_reference)
- document.release()
- website.setAuthorizationForced(0)
- websection.setAuthorizationForced(0)
- get_transaction().commit()
- self.tic()
-
- # make sure that _getExtensibleContent will return the same document
- # there's not other way to test otherwise URL traversal
- self.assertEqual(document.getUid(),
- websection._getExtensibleContent(request, document_reference).getUid())
-
- # Anonymous User should have in the request header for not found when
- # viewing non available document in Web Section (with no authorization_forced)
- self.logout()
- self.assertEqual(None, websection._getExtensibleContent(request, document_reference))
- self.assertEqual('404 Not Found', request.RESPONSE.getHeader('status'))
-
- # set authorization_forced flag
- self.login()
- websection.setAuthorizationForced(1)
-
- # check Unauthorized exception is raised for anonymous
- # this exception is usually caught and user is redirecetd to login form
- self.logout()
- self.assertRaises(Unauthorized, websection._getExtensibleContent, request, document_reference)
-
- def test_07_WebPageTextContentSubstitutions(self, quiet=quiet, run=run_all_test):
+
+ def test_05_WebPageTextContentSubstitutions(self, quiet=quiet, run=run_all_test):
"""
Simple Case of showing the proper text content with and without a substitution
mapping method.
"""
- if not run:
- return
- if not quiet:
- message = '\ntest_07_WebPageTextContentSubstituions'
+ if not run: return
+ if not quiet:
+ message = '\ntest_05_WebPageTextContentSubstituions'
ZopeTestCase._print(message)
content = '<a href="${toto}">$titi</a>'
@@ -399,64 +312,8 @@
# Even with the same callable object, a restricted method id should not be callable.
self.assertRaises(Unauthorized, document.asStrippedHTML)
-
- def test_08_LatestContent(self, quiet=quiet, run=run_all_test):
- """ Test latest content for a Web Section. Test different use case like languaeg, workflow state.
- """
- if not run: return
- if not quiet:
- message = '\ntest_08_LatestContent'
- ZopeTestCase._print(message)
- portal = self.getPortal()
- website = self.setupWebSite()
- websection = self.setupWebSection()
- portal_categories = portal.portal_categories
- publication_section_category_id_list = ['documentation', 'administration']
- for category_id in publication_section_category_id_list:
- portal_categories.publication_section.newContent(portal_type = 'Category',
- id = category_id)
- #set predicate on web section using 'publication_section'
- websection.edit(membership_criterion_base_category = ['publication_section'],
- membership_criterion_category=['publication_section/%s'
- %publication_section_category_id_list[0]])
- get_transaction().commit()
- self.tic()
-
- self.assertEquals(0, len(websection.getDocumentValueList()))
- # create pages belonging to this publication_section 'documentation'
- web_page_en = portal.web_page_module.newContent(portal_type = 'Web Page',
- language = 'en',
- publication_section_list=publication_section_category_id_list[:1])
- web_page_en.publish()
- get_transaction().commit()
- self.tic()
- self.assertEquals(1, len(websection.getDocumentValueList(language='en')))
- self.assertEquals(web_page_en, websection.getDocumentValueList(language='en')[0].getObject())
-
- # create pages belonging to this publication_section 'documentation' but for 'bg' language
- web_page_bg = portal.web_page_module.newContent(portal_type = 'Web Page',
- language = 'bg',
- publication_section_list=publication_section_category_id_list[:1])
- web_page_bg.publish()
- get_transaction().commit()
- self.tic()
- self.assertEquals(1, len(websection.getDocumentValueList(language='bg')))
- self.assertEquals(web_page_bg, websection.getDocumentValueList(language='bg')[0].getObject())
-
- # reject page
- web_page_bg.reject()
- get_transaction().commit()
- self.tic()
- self.assertEquals(0, len(websection.getDocumentValueList(language='bg')))
-
- # publish page and search without a language (by default system should return 'en' docs only)
- web_page_bg.publish()
- get_transaction().commit()
- self.tic()
- self.assertEquals(1, len(websection.getDocumentValueList()))
- self.assertEquals(web_page_en, websection.getDocumentValueList()[0].getObject())
-
- def test_09_DefaultDocumentForWebSection(self, quiet=quiet, run=run_all_test):
+
+ def test_06_DefaultDocumentForWebSection(self, quiet=quiet, run=run_all_test):
"""
Testing the default document for a Web Section.
@@ -470,7 +327,7 @@
"""
if not run: return
if not quiet:
- message = '\ntest_09_DefaultDocumentForWebSection'
+ message = '\ntest_06_DefaultDocumentForWebSection'
ZopeTestCase._print(message)
portal = self.getPortal()
website = self.setupWebSite()
@@ -500,7 +357,7 @@
base_url = base_list[0]
self.assertEqual(base_url, "%s/%s/" % (websection.absolute_url(), websection.getId()))
- def test_09b_DefaultDocumentForWebSite(self, quiet=quiet, run=run_all_test):
+ def test_06b_DefaultDocumentForWebSite(self, quiet=quiet, run=run_all_test):
"""
Testing the default document for a Web Site.
@@ -514,7 +371,7 @@
"""
if not run: return
if not quiet:
- message = '\ntest_09b_DefaultDocumentForWebSite'
+ message = '\ntest_06b_DefaultDocumentForWebSite'
ZopeTestCase._print(message)
portal = self.getPortal()
website = self.setupWebSite()
@@ -543,61 +400,12 @@
base_url = base_list[0]
self.assertEqual(base_url, "%s/%s/" % (website.absolute_url(), website.getId()))
- def test_10_WebSectionAuthorizationForcedForDefaultDocument(self, quiet=quiet, run=run_all_test):
- """ Check that when a Web Section contains a default document not accessible by user we have a chance to
- require user to login.
- Whether or not an user will login is controlled by a property on Web Section (authorization_forced).
- """
- if not run: return
- if not quiet:
- message = '\ntest_10_WebSectionAuthorizationForcedForDefaultDocument'
- ZopeTestCase._print(message)
- request = self.app.REQUEST
- website = self.setupWebSite()
- websection = self.setupWebSection()
- web_page_reference = 'default-document-reference'
- web_page_en = self.portal.web_page_module.newContent(
- portal_type = 'Web Page',
- language = 'en',
- reference = web_page_reference)
- # this way it's not viewable by anonymous and we can test
- web_page_en.releaseAlive()
- websection.setAggregateValue(web_page_en)
- websection.setAuthorizationForced(1)
- get_transaction().commit()
- self.tic()
-
- # make sure that getDefaultDocumentValue() will return the same document for logged in user
- # if default document is accessible
- self.assertEqual(web_page_en.getUid(),
- websection.getDefaultDocumentValue().getUid())
-
- # check Unauthorized exception is raised for anonymous when authorization_forced is set
- self.logout()
- self.assertEqual(None, websection.getDefaultDocumentValue())
- self.assertRaises(Unauthorized, websection)
-
- # Anonymous User should not get Unauthorized when authorization_forced is not set
- self.login()
- websection.setAuthorizationForced(0)
- get_transaction().commit()
- self.tic()
- self.logout()
- self.assertEqual(None, websection.getDefaultDocumentValue())
- try:
- websection()
- except Unauthorized:
- self.fail("Web Section should not prompt user for login.")
-
-
- self.assertEqual(5, len(websection.getDocumentValueList(limit=5)))
-
- def test_11_WebSection_getDocumentValueList(self, quiet=quiet, run=run_all_test):
+ def test_07_WebSection_getDocumentValueList(self, quiet=quiet, run=run_all_test):
""" Check getting getDocumentValueList from Web Section.
"""
- if not run: return
- if not quiet:
- message = '\ntest_11_WebSection_getDocumentValueList'
+ if not run: return
+ if not quiet:
+ message = '\ntest_07_WebSection_getDocumentValueList'
ZopeTestCase._print(message)
portal = self.getPortal()
website = self.setupWebSite()
@@ -644,7 +452,7 @@
for sequence in [ sequence_one , sequence_two , sequence_three ]:
sequence_count += 1
if not quiet:
- message = '\ntest_11_WebSection_getDocumentValueList (Sequence %s)' \
+ message = '\ntest_07_WebSection_getDocumentValueList (Sequence %s)' \
% (sequence_count)
ZopeTestCase._print(message)
@@ -812,14 +620,14 @@
self.web_page_module.manage_delObjects(list(self.web_page_module.objectIds()))
- def test_12_AcquisitionWrappers(self, quiet=quiet, run=run_all_test):
+ def test_08_AcquisitionWrappers(self, quiet=quiet, run=run_all_test):
"""Test acquisition wrappers of documents.
Check if documents obtained by getDefaultDocumentValue, getDocumentValue
and getDocumentValueList are wrapped appropriately.
"""
if not run: return
if not quiet:
- message = '\ntest_12_AcquisitionWrappers'
+ message = '\ntest_08_AcquisitionWrappers'
ZopeTestCase._print(message)
portal = self.getPortal()
@@ -871,13 +679,13 @@
self.assertEquals(doc.aq_parent, websection)
self.assertEquals(doc.aq_parent.aq_parent, website)
- def test_13_WebSiteSkinSelection(self, quiet=quiet, run=run_all_test):
+ def test_09_WebSiteSkinSelection(self, quiet=quiet, run=run_all_test):
"""Test skin selection through a Web Site.
Check if a Web Site can change a skin selection based on a property.
"""
if not run: return
if not quiet:
- message = '\ntest_13_WebSiteSkinSelection'
+ message = '\ntest_09_WebSiteSkinSelection'
ZopeTestCase._print(message)
portal = self.getPortal()
@@ -930,9 +738,360 @@
request['PARENTS'] = [self.app]
self.assertEquals(request.traverse(path)(), 'bar')
- def test_14_deadProxyFields(self):
- # check that all proxy fields defined in business templates have a valid
- # target
+ def test_10_getDocumentValueList(self, quiet=quiet, run=run_all_test):
+ """Make sure that getDocumentValueList works."""
+ if not run: return
+ if not quiet:
+ message = '\ntest_10_getDocumentValueList'
+ ZopeTestCase._print(message)
+
+ self.setupWebSite()
+ website = self.web_site_module[self.website_id]
+ website.getDocumentValueList(
+ portal_type='Document',
+ sort_on=[('translated_portal_type', 'ascending')])
+
+class TestERP5WebWithDms(ERP5TypeTestCase, ZopeTestCase.Functional):
+ """Test for erp5_web business template.
+ """
+ run_all_test = 1
+ quiet = 0
+ manager_username = 'zope'
+ manager_password = 'zope'
+ website_id = 'test'
+
+
+ def getTitle(self):
+ return "ERP5WebWithDms"
+
+ def login(self, quiet=0, run=run_all_test):
+ uf = self.getPortal().acl_users
+ uf._doAddUser(self.manager_username, self.manager_password, ['Manager'], [])
+ user = uf.getUserById(self.manager_username).__of__(uf)
+ newSecurityManager(None, user)
+
+ def getBusinessTemplateList(self):
+ """
+ Return the list of required business templates.
+ """
+ return ('erp5_base',
+ 'erp5_web',
+ 'erp5_dms',
+ 'erp5_dms_mysql_innodb_catalog',
+ )
+
+ def afterSetUp(self):
+ self.login()
+ portal = self.getPortal()
+ self.web_page_module = self.portal.web_page_module
+ self.web_site_module = self.portal.web_site_module
+ self.portal_id = self.portal.getId()
+
+ def tearDown(self):
+ get_transaction().abort()
+ def clearModule(module):
+ module.manage_delObjects(list(module.objectIds()))
+ get_transaction().commit()
+ self.tic()
+ clearModule(self.portal.web_site_module)
+ clearModule(self.portal.web_page_module)
+
+ def setupWebSite(self, **kw):
+ """
+ Setup Web Site
+ """
+ portal = self.getPortal()
+ request = self.app.REQUEST
+
+ # add supported languages for Localizer
+ localizer = portal.Localizer
+ for language in LANGUAGE_LIST:
+ localizer.manage_addLanguage(language = language)
+
+ # create website
+ if hasattr(self.web_site_module, self.website_id):
+ self.web_site_module.manage_delObjects(self.website_id)
+ website = self.getPortal().web_site_module.newContent(portal_type = 'Web Site',
+ id = self.website_id,
+ **kw)
+ get_transaction().commit()
+ self.tic()
+ return website
+
+ def setupWebSection(self, **kw):
+ """
+ Setup Web Section
+ """
+ web_site_module = self.portal.getDefaultModule('Web Site')
+ website = web_site_module[self.website_id]
+ websection = website.newContent(portal_type='Web Section', **kw)
+ self.websection = websection
+ kw = dict(criterion_property_list = 'portal_type',
+ membership_criterion_base_category_list='',
+ membership_criterion_category_list='')
+ websection.edit(**kw)
+ websection.setCriterion(property='portal_type',
+ identity=['Web Page'],
+ max='',
+ min='')
+
+ get_transaction().commit()
+ self.tic()
+ return websection
+
+
+ def setupWebSitePages(self, prefix, suffix=None, version='0.1',
+ language_list=LANGUAGE_LIST, **kw):
+ """
+ Setup some Web Pages.
+ """
+ webpage_list = []
+ portal = self.getPortal()
+ request = self.app.REQUEST
+ web_site_module = self.portal.getDefaultModule('Web Site')
+ website = web_site_module[self.website_id]
+
+ # create sample web pages
+ for language in language_list:
+ if suffix is not None:
+ reference = '%s-%s' % (prefix, language)
+ else:
+ reference = prefix
+ webpage = self.web_page_module.newContent(portal_type='Web Page',
+ reference=reference,
+ version=version,
+ language=language,
+ **kw)
+ webpage.publish()
+ get_transaction().commit()
+ self.tic()
+ self.assertEquals(language, webpage.getLanguage())
+ self.assertEquals(reference, webpage.getReference())
+ self.assertEquals(version, webpage.getVersion())
+ self.assertEquals('published', webpage.getValidationState())
+ webpage_list.append(webpage)
+
+ return webpage_list
+
+ def test_01_WebPageVersioning(self, quiet=quiet, run=run_all_test):
+ """
+ Simple Case of showing the proper most recent public Web Page based on
+ (language, version)
+ """
+ if not run: return
+ if not quiet:
+ message = '\ntest_01_WebPageVersioning'
+ ZopeTestCase._print(message)
+ portal = self.getPortal()
+ request = self.app.REQUEST
+ website = self.setupWebSite()
+ websection = self.setupWebSection()
+ page_reference = 'default-webpage-versionning'
+ webpage_list = self.setupWebSitePages(prefix = page_reference)
+
+ # set default web page for section
+ found_by_reference = portal.portal_catalog(reference = page_reference,
+ language = 'en',
+ portal_type = 'Web Page')
+ en_01 = found_by_reference[0].getObject()
+ # set it as default web page for section
+ websection.edit(categories_list = ['aggregate/%s' %en_01.getRelativeUrl(),])
+ self.assertEqual([en_01.getReference(),],
+ websection.getAggregateReferenceList())
+
+ # create manually a copy of 'en_01' with higher version and check that
+ # older version is archived and new one is show as default web page for section
+ en_02 = self.web_page_module.newContent(portal_type = 'Web Page',
+ reference = page_reference,
+ version = 0.2,
+ language = 'en')
+ en_02.publish()
+ en_02.reindexObject()
+ get_transaction().commit()
+ self.tic()
+
+ # is old archived?
+ self.assertEquals('archived', en_01.getValidationState())
+
+ # is new public and default web page for section?
+ portal.Localizer.manage_changeDefaultLang(language = 'en')
+ default_document = websection.getDefaultDocumentValue()
+ self.assertEquals(en_02, default_document)
+ self.assertEquals('en', default_document.getLanguage())
+ self.assertEquals('0.2', default_document.getVersion())
+ self.assertEquals('published', default_document.getValidationState())
+
+ def test_02_WebSectionAuthorizationForced(self, quiet=quiet, run=run_all_test):
+ """ Check that when a document is requested within a Web Section we have a chance to
+ require user to login.
+ Whether or not an user will login is controlled by a property on Web Section (authorization_forced).
+ """
+ if not run: return
+ if not quiet:
+ message = '\ntest_02_WebSectionAuthorizationForced'
+ ZopeTestCase._print(message)
+ request = self.app.REQUEST
+ website = self.setupWebSite()
+ websection = self.setupWebSection()
+ webpage_list = self.setupWebSitePages(prefix = 'test-web-page')
+ webpage = webpage_list[0]
+ document_reference = 'default-document-reference'
+ document = self.portal.web_page_module.newContent(
+ portal_type = 'Web Page',
+ reference = document_reference)
+ document.release()
+ website.setAuthorizationForced(0)
+ websection.setAuthorizationForced(0)
+ get_transaction().commit()
+ self.tic()
+
+ # make sure that _getExtensibleContent will return the same document
+ # there's not other way to test otherwise URL traversal
+ self.assertEqual(document.getUid(),
+ websection._getExtensibleContent(request, document_reference).getUid())
+
+ # Anonymous User should have in the request header for not found when
+ # viewing non available document in Web Section (with no authorization_forced)
+ self.logout()
+ self.assertEqual(None, websection._getExtensibleContent(request, document_reference))
+ self.assertEqual('404 Not Found', request.RESPONSE.getHeader('status'))
+
+ # set authorization_forced flag
+ self.login()
+ websection.setAuthorizationForced(1)
+
+ # check Unauthorized exception is raised for anonymous
+ # this exception is usually caught and user is redirecetd to login form
+ self.logout()
+ self.assertRaises(Unauthorized, websection._getExtensibleContent, request, document_reference)
+
+ def test_03_LatestContent(self, quiet=quiet, run=run_all_test):
+ """ Test latest content for a Web Section. Test different use case like languaeg, workflow state.
+ """
+ if not run: return
+ if not quiet:
+ message = '\ntest_03_LatestContent'
+ ZopeTestCase._print(message)
+ portal = self.getPortal()
+ website = self.setupWebSite()
+ websection = self.setupWebSection()
+ portal_categories = portal.portal_categories
+ publication_section_category_id_list = ['documentation', 'administration']
+ for category_id in publication_section_category_id_list:
+ portal_categories.publication_section.newContent(portal_type = 'Category',
+ id = category_id)
+ #set predicate on web section using 'publication_section'
+ websection.edit(membership_criterion_base_category = ['publication_section'],
+ membership_criterion_category=['publication_section/%s'
+ %publication_section_category_id_list[0]])
+ get_transaction().commit()
+ self.tic()
+
+ self.assertEquals(0, len(websection.getDocumentValueList()))
+ # create pages belonging to this publication_section 'documentation'
+ web_page_en = portal.web_page_module.newContent(portal_type = 'Web Page',
+ language = 'en',
+ publication_section_list=publication_section_category_id_list[:1])
+ web_page_en.publish()
+ get_transaction().commit()
+ self.tic()
+ self.assertEquals(1, len(websection.getDocumentValueList(language='en')))
+ self.assertEquals(web_page_en, websection.getDocumentValueList(language='en')[0].getObject())
+
+ # create pages belonging to this publication_section 'documentation' but for 'bg' language
+ web_page_bg = portal.web_page_module.newContent(portal_type = 'Web Page',
+ language = 'bg',
+ publication_section_list=publication_section_category_id_list[:1])
+ web_page_bg.publish()
+ get_transaction().commit()
+ self.tic()
+ self.assertEquals(1, len(websection.getDocumentValueList(language='bg')))
+ self.assertEquals(web_page_bg, websection.getDocumentValueList(language='bg')[0].getObject())
+
+ # reject page
+ web_page_bg.reject()
+ get_transaction().commit()
+ self.tic()
+ self.assertEquals(0, len(websection.getDocumentValueList(language='bg')))
+
+ # publish page and search without a language (by default system should return 'en' docs only)
+ web_page_bg.publish()
+ get_transaction().commit()
+ self.tic()
+ self.assertEquals(1, len(websection.getDocumentValueList()))
+ self.assertEquals(web_page_en, websection.getDocumentValueList()[0].getObject())
+
+ def test_04_WebSectionAuthorizationForcedForDefaultDocument(self, quiet=quiet, run=run_all_test):
+ """ Check that when a Web Section contains a default document not accessible by user we have a chance to
+ require user to login.
+ Whether or not an user will login is controlled by a property on Web Section (authorization_forced).
+ """
+ if not run: return
+ if not quiet:
+ message = '\ntest_04_WebSectionAuthorizationForcedForDefaultDocument'
+ ZopeTestCase._print(message)
+ request = self.app.REQUEST
+ website = self.setupWebSite()
+ websection = self.setupWebSection()
+ web_page_reference = 'default-document-reference'
+ web_page_en = self.portal.web_page_module.newContent(
+ portal_type = 'Web Page',
+ language = 'en',
+ reference = web_page_reference)
+ # this way it's not viewable by anonymous and we can test
+ web_page_en.releaseAlive()
+ websection.setAggregateValue(web_page_en)
+ websection.setAuthorizationForced(1)
+ get_transaction().commit()
+ self.tic()
+
+ # make sure that getDefaultDocumentValue() will return the same document for logged in user
+ # if default document is accessible
+ self.assertEqual(web_page_en.getUid(),
+ websection.getDefaultDocumentValue().getUid())
+
+ # check Unauthorized exception is raised for anonymous when authorization_forced is set
+ self.logout()
+ self.assertEqual(None, websection.getDefaultDocumentValue())
+ self.assertRaises(Unauthorized, websection)
+
+ # Anonymous User should not get Unauthorized when authorization_forced is not set
+ self.login()
+ websection.setAuthorizationForced(0)
+ get_transaction().commit()
+ self.tic()
+
+ self.logout()
+ self.assertEqual(None, websection.getDefaultDocumentValue())
+ try:
+ websection()
+ except Unauthorized:
+ self.fail("Web Section should not prompt user for login.")
+
+ self.login()
+ web_page_list = []
+ for iteration in range(0, 10):
+ web_page =self.getPortal().web_page_module.newContent(portal_type = 'Web Page',
+ reference = "%s_%s" % (web_page_reference, iteration),
+ language = 'en',)
+ web_page.publish()
+ self.tic()
+ get_transaction().commit()
+ web_page_list.append(web_page)
+ websection.setAggregateValueList(web_page_list)
+ self.tic()
+ get_transaction().commit()
+ self.assertEqual(5, len(websection.getDocumentValueList(limit=5)))
+
+ def test_05_deadProxyFields(self, quiet=quiet, run=run_all_test):
+ """
+ check that all proxy fields defined in business templates have a valid
+ target
+ """
+ if not run: return
+ if not quiet:
+ message = '\ntest_05_deadProxyFields'
+ ZopeTestCase._print(message)
skins_tool = self.portal.portal_skins
for field_path, field in skins_tool.ZopeFind(
skins_tool, obj_metatypes=['ProxyField'], search_sub=1):
@@ -941,24 +1100,16 @@
field.get_value('form_id'),
field.get_value('field_id')))
- def test_15_getDocumentValueList(self, quiet=quiet, run=run_all_test):
- """Make sure that getDocumentValueList works."""
- self.setupWebSite()
- website = self.web_site_module[self.website_id]
- website.getDocumentValueList(
- portal_type='Document',
- sort_on=[('translated_portal_type', 'ascending')])
-
-
class TestERP5WebWithSimpleSecurity(ERP5TypeTestCase):
"""
Test for erp5_web with simple security.
"""
run_all_test = 1
- quiet = 1
+ quiet = 0
def getBusinessTemplateList(self):
return ('erp5_base',
+ 'erp5_mysql_innodb_catalog',
'erp5_dms_mysql_innodb_catalog',
'erp5_web',
)
@@ -983,7 +1134,7 @@
get_transaction().commit()
self.tic()
- def beforeTearDown(self):
+ def tearDown(self):
get_transaction().abort()
def clearModule(module):
module.manage_delObjects(list(module.objectIds()))
@@ -991,10 +1142,13 @@
self.tic()
clearModule(self.portal.web_site_module)
clearModule(self.portal.web_page_module)
-
+
def test_01_AccessWebPageByReference(self, quiet=quiet, run=run_all_test):
- if not run:
- return
+ if not run: return
+ if not quiet:
+ message = '\ntest_01_AccessWebPageByReference'
+ ZopeTestCase._print(message)
+
self.changeUser('admin')
site = self.portal.web_site_module.newContent(portal_type='Web Site',
id='site')
@@ -1055,8 +1209,10 @@
def test_02_LocalRolesFromRoleDefinition(self, quiet=quiet, run=run_all_test):
""" Test setting local roles on Web Site/ Web Sectio using ERP5 Role Definition objects . """
- if not run:
- return
+ if not run: return
+ if not quiet:
+ message = '\ntest_02_LocalRolesFromRoleDefinition'
+ ZopeTestCase._print(message)
portal = self.portal
person_reference = 'webuser'
site = portal.web_site_module.newContent(portal_type='Web Site',
@@ -1092,8 +1248,10 @@
def test_03_WebSection_getDocumentValueListSecurity(self, quiet=quiet, run=run_all_test):
""" Test WebSection_getDocumentValueList behaviour and security"""
- if not run:
- return
+ if not run: return
+ if not quiet:
+ message = '\ntest_03_WebSection_getDocumentValueListSecurity'
+ ZopeTestCase._print(message)
self.changeUser('admin')
web_site_module = self.portal.web_site_module
site = web_site_module.newContent(portal_type='Web Site',
@@ -1147,7 +1305,7 @@
self.changeUser('erp5user')
self.tic()
self.portal.Localizer.changeLanguage('en')
-
+
self.assertEquals(0, len(section.WebSection_getDocumentValueList()))
self.changeUser('erp5user')
@@ -1234,5 +1392,6 @@
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestERP5Web))
+ suite.addTest(unittest.makeSuite(TestERP5WebWithDms))
suite.addTest(unittest.makeSuite(TestERP5WebWithSimpleSecurity))
return suite
More information about the Erp5-report
mailing list