From 360033a4522cbe750a3421086757bdca4e400b2f Mon Sep 17 00:00:00 2001
From: Yusei Tahara <yusei@nexedi.com>
Date: Thu, 5 Jun 2008 09:49:26 +0000
Subject: [PATCH] Run test as a normal erp5 user(not a manager)

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@21343 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/tests/testNotificationTool.py | 39 +++++++++++++++++-----
 1 file changed, 30 insertions(+), 9 deletions(-)

diff --git a/product/ERP5/tests/testNotificationTool.py b/product/ERP5/tests/testNotificationTool.py
index 1110fcdecd..c3c53ac773 100644
--- a/product/ERP5/tests/testNotificationTool.py
+++ b/product/ERP5/tests/testNotificationTool.py
@@ -31,6 +31,7 @@ import unittest
 from Testing import ZopeTestCase
 from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
 from AccessControl.SecurityManagement import newSecurityManager
+from AccessControl.SecurityManagement import getSecurityManager
 from zLOG import LOG
 from Products.ERP5Type.tests.Sequence import SequenceList
 from Products.ERP5Type.tests.utils import DummyMailHost
@@ -111,7 +112,22 @@ class TestNotificationTool(ERP5TypeTestCase):
   def getTitle(self):
     return "Notification Tool"
 
+  def createUser(self, name, role_list):
+    user_folder = self.getPortal().acl_users
+    user_folder._doAddUser(name, 'password', role_list, [])
+
+  def changeUser(self, name):
+    self.old_user = getSecurityManager().getUser()
+    user_folder = self.getPortal().acl_users
+    user = user_folder.getUserById(name).__of__(user_folder)
+    newSecurityManager(None, user)
+
+  def changeToPreviousUser(self):
+    newSecurityManager(None, self.old_user)
+
   def afterSetUp(self):
+    self.createUser('erp5user', ['Auditor', 'Author'])
+    self.createUser('manager', ['Manager'])
     portal = self.getPortal()
     if 'MailHost' in portal.objectIds():
       portal.manage_delObjects(['MailHost'])
@@ -120,6 +136,7 @@ class TestNotificationTool(ERP5TypeTestCase):
     self.portal.portal_caches.clearAllCache()
     get_transaction().commit()
     self.tic()
+    self.changeUser('erp5user')
 
   def beforeTearDown(self):
     get_transaction().abort()
@@ -137,32 +154,36 @@ class TestNotificationTool(ERP5TypeTestCase):
     Create a user
     """
     person = self.portal.person_module.newContent(portal_type="Person",
-                                    reference="userA",
-                                    password="passwordA",
-                                    default_email_text="userA@example.invalid")
+                                                  default_email_text="userA@example.invalid")
+    self.changeUser('manager')
+    person.edit(reference="userA", password="passwordA")
     assignment = person.newContent(portal_type='Assignment')
     assignment.open()
+    self.changeToPreviousUser()
 
   def stepAddUserB(self, sequence=None, sequence_list=None, **kw):
     """
     Create a user
     """
     person = self.portal.person_module.newContent(portal_type="Person",
-                                    reference="userB",
-                                    password="passwordA",
-                                    default_email_text="userB@example.invalid")
+                                                  default_email_text="userB@example.invalid")
+    self.changeUser('manager')
+    person.edit(reference="userB", password="passwordA")
     assignment = person.newContent(portal_type='Assignment')
     assignment.open()
+    self.changeToPreviousUser()
 
   def stepAddUserWithoutEmail(self, sequence=None, sequence_list=None, **kw):
     """
     Create a user
     """
-    person = self.portal.person_module.newContent(portal_type="Person",
-                                    reference="userWithoutEmail",
-                                    password="passwordA")
+    person = self.portal.person_module.newContent(portal_type="Person")
+
+    self.changeUser('manager')
+    person.edit(reference="userWithoutEmail", password="passwordA")
     assignment = person.newContent(portal_type='Assignment')
     assignment.open()
+    self.changeToPreviousUser()
 
   def test_01_defaultBehaviour(self, quiet=quiet, run=run_all_test):
     if not run: return
-- 
2.30.9