[Erp5-report] r18690 - in /erp5/trunk/products/ERP5Security: ./ tests/

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Jan 14 16:00:56 CET 2008


Author: aurel
Date: Mon Jan 14 16:00:55 2008
New Revision: 18690

URL: http://svn.erp5.org?rev=18690&view=rev
Log:
check assignment date at login if defined
add unit test for this

Modified:
    erp5/trunk/products/ERP5Security/ERP5UserManager.py
    erp5/trunk/products/ERP5Security/tests/testERP5Security.py

Modified: erp5/trunk/products/ERP5Security/ERP5UserManager.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Security/ERP5UserManager.py?rev=18690&r1=18689&r2=18690&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Security/ERP5UserManager.py (original)
+++ erp5/trunk/products/ERP5Security/ERP5UserManager.py Mon Jan 14 16:00:55 2008
@@ -101,8 +101,20 @@
             try:
               # get assignment
               assignment_list = [x for x in user.contentValues(portal_type="Assignment") if x.getValidationState() == "open"]
+              valid_assignment_list = []
+              # check dates if exist
+              login_date = DateTime()
+              for assignment in assignment_list:
+                if assignment.getStartDate() is not None and \
+                       assignment.getStartDate() > login_date:
+                  continue
+                if assignment.getStopDate() is not None and \
+                       assignment.getStopDate() < login_date:
+                  continue
+                valid_assignment_list.append(assignment)
+                
               if pw_validate(user.getPassword(), password) and \
-                     len(assignment_list): #user.getCareerRole() == 'internal':
+                     len(valid_assignment_list): #user.getCareerRole() == 'internal':
                 return login, login # use same for user_id and login
             finally:
               setSecurityManager(sm)

Modified: erp5/trunk/products/ERP5Security/tests/testERP5Security.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Security/tests/testERP5Security.py?rev=18690&r1=18689&r2=18690&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Security/tests/testERP5Security.py (original)
+++ erp5/trunk/products/ERP5Security/tests/testERP5Security.py Mon Jan 14 16:00:55 2008
@@ -42,6 +42,7 @@
   from Interface.Verify import verifyClass
 except ImportError:
   from zope.interface.verify import verifyClass
+from DateTime import DateTime
 
 class TestUserManagement(ERP5TypeTestCase):
   """Tests User Management in ERP5Security.
@@ -95,13 +96,16 @@
     self.failUnless(isinstance(self.getUserFolder(),
         PluggableAuthService.PluggableAuthService))
 
-  def _makePerson(self, open_assignment=1, **kw):
+  def _makePerson(self, open_assignment=1, assignment_start_date=None,
+                  assignment_stop_date=None, **kw):
     """Creates a person in person module, and returns the object, after
     indexing is done. """
     person_module = self.getPersonModule()
     new_person = person_module.newContent(
                      portal_type='Person', **kw)
-    assignment = new_person.newContent(portal_type = 'Assignment')
+    assignment = new_person.newContent(portal_type = 'Assignment',
+                                       start_date=assignment_start_date,
+                                       stop_date=assignment_stop_date,)
     if open_assignment:
       assignment.open()
     get_transaction().commit()
@@ -207,6 +211,30 @@
     assi.close()
     self._assertUserDoesNotExists('the_user', 'secret')
 
+
+  def test_AssignmentWithDate(self):
+    """Tests a person with an assignment with correct date is a valid user."""
+    date = DateTime()
+    p = self._makePerson(reference='the_user', password='secret',
+                         assignment_start_date=date-5,
+                         assignment_stop_date=date+5)
+    self._assertUserExists('the_user', 'secret')
+
+  def test_AssignmentWithBadStartDate(self):
+    """Tests a person with an assignment with bad start date is not a valid user."""
+    date = DateTime()
+    p = self._makePerson(reference='the_user', password='secret',
+                         assignment_start_date=date+1,
+                         assignment_stop_date=date+5)
+    self._assertUserDoesNotExists('the_user', 'secret')
+
+  def test_AssignmentWithBadStopDate(self):
+    """Tests a person with an assignment with bad stop date is not a valid user."""
+    date = DateTime()
+    p = self._makePerson(reference='the_user', password='secret',
+                         assignment_start_date=date-5,
+                         assignment_stop_date=date-1)
+    self._assertUserDoesNotExists('the_user', 'secret')
 
 class TestLocalRoleManagement(ERP5TypeTestCase):
   """Tests Local Role Management with ERP5Security.




More information about the Erp5-report mailing list