| 
									
										
										
										
											2017-10-19 17:32:22 +00:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2019-11-28 20:18:25 +00:00
										 |  |  | use PHPUnit\Framework\TestCase; | 
					
						
							| 
									
										
										
										
											2017-10-19 17:32:22 +00:00
										 |  |  | /* | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/) | 
					
						
							| 
									
										
										
										
											2020-02-22 09:46:00 +00:00
										 |  |  |  Copyright (C) 2017 - 2020  Roland Gruber | 
					
						
							| 
									
										
										
										
											2017-10-19 17:32:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |  This program is free software; you can redistribute it and/or modify | 
					
						
							|  |  |  |  it under the terms of the GNU General Public License as published by | 
					
						
							|  |  |  |  the Free Software Foundation; either version 2 of the License, or | 
					
						
							|  |  |  |  (at your option) any later version. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  GNU General Public License for more details. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  |  along with this program; if not, write to the Free Software | 
					
						
							|  |  |  |  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-18 18:13:38 +00:00
										 |  |  | 	include_once __DIR__ . '/../../../lib/baseModule.inc'; | 
					
						
							|  |  |  | 	include_once __DIR__ . '/../../../lib/modules.inc'; | 
					
						
							|  |  |  | 	include_once __DIR__ . '/../../../lib/modules/windowsUser.inc'; | 
					
						
							| 
									
										
										
										
											2017-10-19 17:32:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/** | 
					
						
							|  |  |  | 	 * Checks the windowsUser class. | 
					
						
							|  |  |  | 	 * | 
					
						
							|  |  |  | 	 * @author Roland Gruber | 
					
						
							|  |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2019-11-28 20:18:25 +00:00
										 |  |  | 	class WindowsUserTest extends TestCase { | 
					
						
							| 
									
										
										
										
											2017-10-19 17:32:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		public function test_isAccountExpired_noAttr() { | 
					
						
							|  |  |  | 			$attrs = array('objectClass' => array('user')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			$this->assertFalse(windowsUser::isAccountExpired($attrs)); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		public function test_isAccountExpired_notExpired() { | 
					
						
							|  |  |  | 			$expire = $this->getTimeStamp(14); | 
					
						
							|  |  |  | 			$attrs = array( | 
					
						
							|  |  |  | 				'objectClass' => array('user'), | 
					
						
							|  |  |  | 				'accounTExpIRes' => array(0 => $expire) | 
					
						
							|  |  |  | 			); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			$this->assertFalse(windowsUser::isAccountExpired($attrs)); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		public function test_isAccountExpired_expired() { | 
					
						
							|  |  |  | 			$expire = $this->getTimeStamp(-14); | 
					
						
							|  |  |  | 			$attrs = array( | 
					
						
							|  |  |  | 				'objectClass' => array('user'), | 
					
						
							|  |  |  | 				'accounTExpIRes' => array(0 => $expire) | 
					
						
							|  |  |  | 			); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			$this->assertTrue(windowsUser::isAccountExpired($attrs)); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		/** | 
					
						
							|  |  |  | 		 * Returns the timestamp from now with given time difference. | 
					
						
							|  |  |  | 		 * | 
					
						
							|  |  |  | 		 * @param int $diff time difference in days | 
					
						
							|  |  |  | 		 */ | 
					
						
							|  |  |  | 		private function getTimeStamp($diff) { | 
					
						
							|  |  |  | 			$timeBase = new DateTime('1601-01-01', getTimeZone()); | 
					
						
							|  |  |  | 			$time = new DateTime(null, getTimeZone()); | 
					
						
							|  |  |  | 			if ($diff > 0) { | 
					
						
							|  |  |  | 				$time->add(new DateInterval('P' . $diff . 'D')); | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 			else { | 
					
						
							|  |  |  | 				$time->sub(new DateInterval('P' . abs($diff) . 'D')); | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 			$timeDiff = $time->diff($timeBase); | 
					
						
							|  |  |  | 			$days = $timeDiff->format('%a'); | 
					
						
							|  |  |  | 			$seconds = $days * 24 * 3600 - ($time->getOffset()); | 
					
						
							|  |  |  | 			return $seconds . '0000000'; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-18 18:13:38 +00:00
										 |  |  | 		public function testWindowsManagedGroupsNotifyJob_getLastEffectiveExecutionDate() { | 
					
						
							|  |  |  | 			if (!interface_exists('\LAM\JOB\Job', false)) { | 
					
						
							| 
									
										
										
										
											2020-07-24 19:00:36 +00:00
										 |  |  | 				$this->markTestSkipped(); | 
					
						
							| 
									
										
										
										
											2020-07-18 18:13:38 +00:00
										 |  |  | 				return; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 			$resultLog = new \LAM\JOB\JobResultLog(); | 
					
						
							|  |  |  | 			$baseDate = DateTime::createFromFormat('Y-m-d', '2020-08-21', getTimeZone()); | 
					
						
							|  |  |  | 			$this->assertEquals('2020-01-01', WindowsManagedGroupsNotifyJob::getLastEffectiveExecutionDate($baseDate, 12, $resultLog)->format('Y-m-d')); | 
					
						
							|  |  |  | 			$this->assertEquals('2020-07-01', WindowsManagedGroupsNotifyJob::getLastEffectiveExecutionDate($baseDate, 6, $resultLog)->format('Y-m-d')); | 
					
						
							|  |  |  | 			$this->assertEquals('2020-07-01', WindowsManagedGroupsNotifyJob::getLastEffectiveExecutionDate($baseDate, 3, $resultLog)->format('Y-m-d')); | 
					
						
							|  |  |  | 			$this->assertEquals('2020-08-01', WindowsManagedGroupsNotifyJob::getLastEffectiveExecutionDate($baseDate, 1, $resultLog)->format('Y-m-d')); | 
					
						
							|  |  |  | 			$baseDate = DateTime::createFromFormat('Y-m-d', '2020-12-31', getTimeZone()); | 
					
						
							|  |  |  | 			$this->assertEquals('2020-01-01', WindowsManagedGroupsNotifyJob::getLastEffectiveExecutionDate($baseDate, 12, $resultLog)->format('Y-m-d')); | 
					
						
							|  |  |  | 			$this->assertEquals('2020-07-01', WindowsManagedGroupsNotifyJob::getLastEffectiveExecutionDate($baseDate, 6, $resultLog)->format('Y-m-d')); | 
					
						
							|  |  |  | 			$this->assertEquals('2020-10-01', WindowsManagedGroupsNotifyJob::getLastEffectiveExecutionDate($baseDate, 3, $resultLog)->format('Y-m-d')); | 
					
						
							|  |  |  | 			$this->assertEquals('2020-12-01', WindowsManagedGroupsNotifyJob::getLastEffectiveExecutionDate($baseDate, 1, $resultLog)->format('Y-m-d')); | 
					
						
							|  |  |  | 			$baseDate = DateTime::createFromFormat('Y-m-d', '2020-01-01', getTimeZone()); | 
					
						
							|  |  |  | 			$this->assertEquals('2020-01-01', WindowsManagedGroupsNotifyJob::getLastEffectiveExecutionDate($baseDate, 12, $resultLog)->format('Y-m-d')); | 
					
						
							|  |  |  | 			$this->assertEquals('2020-01-01', WindowsManagedGroupsNotifyJob::getLastEffectiveExecutionDate($baseDate, 6, $resultLog)->format('Y-m-d')); | 
					
						
							|  |  |  | 			$this->assertEquals('2020-01-01', WindowsManagedGroupsNotifyJob::getLastEffectiveExecutionDate($baseDate, 3, $resultLog)->format('Y-m-d')); | 
					
						
							|  |  |  | 			$this->assertEquals('2020-01-01', WindowsManagedGroupsNotifyJob::getLastEffectiveExecutionDate($baseDate, 1, $resultLog)->format('Y-m-d')); | 
					
						
							|  |  |  | 			$baseDate = DateTime::createFromFormat('Y-m-d', '2020-06-05', getTimeZone()); | 
					
						
							|  |  |  | 			$this->assertEquals('2020-01-01', WindowsManagedGroupsNotifyJob::getLastEffectiveExecutionDate($baseDate, 12, $resultLog)->format('Y-m-d')); | 
					
						
							|  |  |  | 			$this->assertEquals('2020-01-01', WindowsManagedGroupsNotifyJob::getLastEffectiveExecutionDate($baseDate, 6, $resultLog)->format('Y-m-d')); | 
					
						
							|  |  |  | 			$this->assertEquals('2020-04-01', WindowsManagedGroupsNotifyJob::getLastEffectiveExecutionDate($baseDate, 3, $resultLog)->format('Y-m-d')); | 
					
						
							|  |  |  | 			$this->assertEquals('2020-06-01', WindowsManagedGroupsNotifyJob::getLastEffectiveExecutionDate($baseDate, 1, $resultLog)->format('Y-m-d')); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-19 17:32:22 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ?>
 |