0010030: shadow expire = -1 in LDAP should be mapped to "infinite"
authorPhilipp Schüle <p.schuele@metaways.de>
Wed, 9 Jul 2014 15:47:37 +0000 (17:47 +0200)
committerPhilipp Schüle <p.schuele@metaways.de>
Wed, 16 Jul 2014 08:13:55 +0000 (10:13 +0200)
WIP: needs a test

https://forge.tine20.org/mantisbt/view.php?id=10030

Change-Id: Id7e34c670b77161802017b4459b7ee2bfc075cf8
Reviewed-on: http://gerrit.tine20.com/customers/841
Tested-by: Jenkins CI (http://ci.tine20.com/)
Reviewed-by: Philipp Schüle <p.schuele@metaways.de>
Tested-by: Philipp Schüle <p.schuele@metaways.de>
tests/tine20/Tinebase/User/LdapTest.php
tine20/Tinebase/User/Ldap.php

index 3c764e4..28f1080 100644 (file)
@@ -5,7 +5,7 @@
  * @package     Tinebase
  * @subpackage  User
  * @license     http://www.gnu.org/licenses/agpl.html
- * @copyright   Copyright (c) 2008-2010 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @copyright   Copyright (c) 2008-2014 Metaways Infosystems GmbH (http://www.metaways.de)
  * @author      Lars Kneschke <l.kneschke@metaways.de>
  */
 
  */
 require_once dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . 'TestHelper.php';
 
-if (!defined('PHPUnit_MAIN_METHOD')) {
-    define('PHPUnit_MAIN_METHOD', 'Tinebase_User_LdapTest::main');
-}
-
 /**
  * Test class for Tinebase_User_Ldap
  */
@@ -36,18 +32,6 @@ class Tinebase_User_LdapTest extends PHPUnit_Framework_TestCase
     protected $objects = array();
 
     /**
-     * Runs the test methods of this class.
-     *
-     * @access public
-     * @static
-     */
-    public static function main()
-    {
-        $suite  = new PHPUnit_Framework_TestSuite('Tinebase_User_SqlTest');
-        PHPUnit_TextUI_TestRunner::run($suite);
-    }
-
-    /**
      * Sets up the fixture.
      * This method is called before a test is executed.
      *
@@ -62,7 +46,7 @@ class Tinebase_User_LdapTest extends PHPUnit_Framework_TestCase
         
         $this->objects['users'] = array();
     }
-
+    
     /**
      * Tears down the fixture
      * This method is called after a test is executed.
@@ -218,14 +202,12 @@ class Tinebase_User_LdapTest extends PHPUnit_Framework_TestCase
     {
         $user = $this->testAddUser();
         
-        
         $this->_backend->setExpiryDate($user, Tinebase_DateTime::now()->subDay(1));
         
         $testUser = $this->_backend->getUserById($user, 'Tinebase_Model_FullUser');
         
         $this->assertEquals('Tinebase_DateTime', get_class($testUser->accountExpires), 'wrong type');
         $this->assertEquals(Tinebase_User::STATUS_EXPIRED, $testUser->accountStatus);
-        
 
         $this->_backend->setExpiryDate($user, NULL);
         
index 51a88c5..1f4288c 100644 (file)
@@ -5,7 +5,7 @@
  * @package     Tinebase
  * @subpackage  User
  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
- * @copyright   Copyright (c) 2007-2008 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @copyright   Copyright (c) 2007-2014 Metaways Infosystems GmbH (http://www.metaways.de)
  * @author      Lars Kneschke <l.kneschke@metaways.de>
  */
 
@@ -803,7 +803,13 @@ class Tinebase_User_Ldap extends Tinebase_User_Sql implements Tinebase_User_Inte
                 switch($keyMapping) {
                     case 'accountLastPasswordChange':
                     case 'accountExpires':
-                        $accountArray[$keyMapping] = new Tinebase_DateTime($value[0] * 86400);
+                        $shadowExpire = $value[0];
+                        if ($shadowExpire < 0) {
+                            // account does not expire
+                            $accountArray[$keyMapping] = null;
+                        } else {
+                            $accountArray[$keyMapping] = new Tinebase_DateTime($shadowExpire * 86400);
+                        }
                         break;
                         
                     case 'accountStatus':