[Erp5-report] r39154 luke - /erp5/trunk/products/ERP5Wizard/tests/testERP5RemoteUserManager.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Oct 14 15:37:03 CEST 2010
Author: luke
Date: Thu Oct 14 15:37:02 2010
New Revision: 39154
URL: http://svn.erp5.org?rev=39154&view=rev
Log:
- add more test cases for simulated failures of external server
- clean up imports
Modified:
erp5/trunk/products/ERP5Wizard/tests/testERP5RemoteUserManager.py
Modified: erp5/trunk/products/ERP5Wizard/tests/testERP5RemoteUserManager.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Wizard/tests/testERP5RemoteUserManager.py?rev=39154&r1=39153&r2=39154&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Wizard/tests/testERP5RemoteUserManager.py [utf8] (original)
+++ erp5/trunk/products/ERP5Wizard/tests/testERP5RemoteUserManager.py [utf8] Thu Oct 14 15:37:02 2010
@@ -26,17 +26,16 @@
#
##############################################################################
+from AccessControl.SecurityManagement import newSecurityManager
+from Products.ERP5.ERP5Site import ERP5Site
+from Products.ERP5Security.ERP5UserManager import SUPER_USER
+from Products.ERP5Type.Base import Base
from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
-from Products.ERP5Type.tests.utils import createZODBPythonScript
from Products.ERP5Wizard import addERP5RemoteUserManager
+from Products.ERP5Wizard.Tool.WizardTool import GeneratorCall
+import socket
import transaction
import unittest
-from Products.ERP5Security.ERP5UserManager import SUPER_USER
-from AccessControl.SecurityManagement import getSecurityManager,\
- newSecurityManager
-from Products.ERP5Type.Base import Base
-from Products.ERP5.ERP5Site import ERP5Site
-from Products.ERP5Wizard.Tool.WizardTool import GeneratorCall
# portal_witch simulation
def proxyMethodHandler(self, kw):
@@ -73,6 +72,15 @@ ERP5Site.ERP5Site_getExpressInstanceUid
ERP5Site_getExpressInstanceUid
ERP5Site.security.declarePublic('ERP5Site_getExpressInstanceUid')
+# portal_wizard patches
+def raises_socket_error(self, **kw):
+ raise socket.error
+
+def raises_socket_sslerror(self, **kw):
+ raise socket.sslerror
+
+def raises_valueerror(self, **kw):
+ raise ValueError
class TestERP5RemoteUserManager(ERP5TypeTestCase):
"""Low level tests of remote logging"""
@@ -156,7 +164,7 @@ class TestERP5RemoteUserManager(ERP5Type
def createPerson(self, reference, password):
"""Creates person with reference and password in title to simulate remote
logging"""
- person = self.person_module.newContent(
+ self.person_module.newContent(
portal_type=self.person_portal_type,
reference=reference, title=password)
@@ -193,7 +201,106 @@ class TestERP5RemoteUserManager(ERP5Type
self.removeAuthenticationServerPreferences()
transaction.commit()
self.tic()
- self.assertEqual(None, self.erp5_remote_manager.authenticateCredentials(kw))
+ self.assertEqual(None,
+ self.erp5_remote_manager.authenticateCredentials(kw))
+
+ def test_loggable_in_case_of_server_socket_error(self):
+ login = 'someone'
+ password = 'somepass'
+ self.createPerson(login, password)
+ transaction.commit()
+ self.tic()
+ kw = {'login':login, 'password': password}
+ self.assertEqual(('someone', 'someone'),
+ self.erp5_remote_manager.authenticateCredentials(kw))
+ transaction.commit()
+ self.tic()
+ # patch Wizard Tool to raise in callRemoteProxyMethod
+ from Products.ERP5Wizard.Tool.WizardTool import WizardTool
+ original_callRemoteProxyMethod=WizardTool.callRemoteProxyMethod
+ try:
+ WizardTool.callRemoteProxyMethod = raises_socket_error
+ self.assertRaises(socket.error,
+ self.portal.portal_wizard.callRemoteProxyMethod)
+ self.assertEqual(('someone', 'someone'),
+ self.erp5_remote_manager.authenticateCredentials(kw))
+ finally:
+ WizardTool.callRemoteProxyMethod = original_callRemoteProxyMethod
+
+ def test_loggable_in_case_of_server_socket_sslerror(self):
+ login = 'someone'
+ password = 'somepass'
+ self.createPerson(login, password)
+ transaction.commit()
+ self.tic()
+ kw = {'login':login, 'password': password}
+ self.assertEqual(('someone', 'someone'),
+ self.erp5_remote_manager.authenticateCredentials(kw))
+ transaction.commit()
+ self.tic()
+ # patch Wizard Tool to raise in callRemoteProxyMethod
+ from Products.ERP5Wizard.Tool.WizardTool import WizardTool
+ original_callRemoteProxyMethod=WizardTool.callRemoteProxyMethod
+ try:
+ WizardTool.callRemoteProxyMethod = raises_socket_sslerror
+ self.assertRaises(socket.sslerror,
+ self.portal.portal_wizard.callRemoteProxyMethod)
+ self.assertEqual(('someone', 'someone'),
+ self.erp5_remote_manager.authenticateCredentials(kw))
+ finally:
+ WizardTool.callRemoteProxyMethod = original_callRemoteProxyMethod
+
+ def test_not_loggable_in_case_of_server_raises_anything_else(self):
+ login = 'someone'
+ password = 'somepass'
+ self.createPerson(login, password)
+ transaction.commit()
+ self.tic()
+ kw = {'login':login, 'password': password}
+ self.assertEqual(('someone', 'someone'),
+ self.erp5_remote_manager.authenticateCredentials(kw))
+ transaction.commit()
+ self.tic()
+ # patch Wizard Tool to raise in callRemoteProxyMethod
+ from Products.ERP5Wizard.Tool.WizardTool import WizardTool
+ original_callRemoteProxyMethod=WizardTool.callRemoteProxyMethod
+ try:
+ WizardTool.callRemoteProxyMethod = raises_valueerror
+ self.assertRaises(ValueError,
+ self.portal.portal_wizard.callRemoteProxyMethod)
+ self.assertEqual(('someone', 'someone'),
+ self.erp5_remote_manager.authenticateCredentials(kw))
+ finally:
+ WizardTool.callRemoteProxyMethod = original_callRemoteProxyMethod
+
+ def test_loggable_in_case_of_server_socket_error_with_failed_login_between(
+ self):
+ login = 'someone'
+ password = 'somepass'
+ self.createPerson(login, password)
+ transaction.commit()
+ self.tic()
+ kw = {'login':login, 'password': password}
+ self.assertEqual(('someone', 'someone'),
+ self.erp5_remote_manager.authenticateCredentials(kw))
+ transaction.commit()
+ self.tic()
+ # patch Wizard Tool to raise in callRemoteProxyMethod
+ from Products.ERP5Wizard.Tool.WizardTool import WizardTool
+ original_callRemoteProxyMethod=WizardTool.callRemoteProxyMethod
+ try:
+ WizardTool.callRemoteProxyMethod = raises_socket_error
+ self.assertRaises(socket.error,
+ self.portal.portal_wizard.callRemoteProxyMethod)
+ self.assertEqual(('someone', 'someone'),
+ self.erp5_remote_manager.authenticateCredentials(kw))
+ self.assertEqual(None,
+ self.erp5_remote_manager.authenticateCredentials(
+ {'login':kw['login'], 'password':'wrong_password'}))
+ self.assertEqual(('someone', 'someone'),
+ self.erp5_remote_manager.authenticateCredentials(kw))
+ finally:
+ WizardTool.callRemoteProxyMethod = original_callRemoteProxyMethod
def test_suite():
suite = unittest.TestSuite()
More information about the Erp5-report
mailing list