Skip to content

Commit 518a957

Browse files
committed
refactor: Enhanced Way of Getting Scheduler Pass
1 parent 8240078 commit 518a957

2 files changed

Lines changed: 37 additions & 0 deletions

File tree

WebFiori/Framework/Scheduler/TasksManager.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -893,6 +893,11 @@ private function getPasswordHelper(): string {
893893
return 'NO_PASSWORD';
894894
}
895895

896+
if (str_starts_with($this->accessPass, 'env:')) {
897+
$resolved = (string) getenv(substr($this->accessPass, 4));
898+
return strlen($resolved) > 0 ? hash('sha256', $resolved) : 'NO_PASSWORD';
899+
}
900+
896901
return $this->accessPass;
897902
}
898903
/**
@@ -1004,6 +1009,10 @@ private function setLogEnabledHelper(bool $bool) {
10041009
* @since 1.0
10051010
*/
10061011
private function setPasswordHelper(string $pass) {
1012+
if (str_starts_with($pass, 'env:')) {
1013+
$this->accessPass = $pass;
1014+
return;
1015+
}
10071016
if (strlen($pass) != 0) {
10081017
$this->accessPass = hash('sha256', $pass);
10091018
return;

tests/WebFiori/Framework/Tests/Scheduler/SchedulerTest.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,4 +191,32 @@ public function testWeeklyTask03() {
191191
$this->assertEquals('NO_PASSWORD', TasksManager::getPassword());
192192
TasksManager::run('', 'Task Ok', true);
193193
}
194+
195+
196+
/**
197+
* @test
198+
* Covers: setPasswordHelper env: branch + getPasswordHelper env: resolution
199+
*/
200+
public function testSetPasswordFromEnvVar() {
201+
putenv('TEST_SCHED_PASS=mysecret');
202+
TasksManager::setPassword('env:TEST_SCHED_PASS');
203+
204+
$this->assertEquals(hash('sha256', 'mysecret'), TasksManager::getPassword());
205+
206+
putenv('TEST_SCHED_PASS'); // unset
207+
TasksManager::reset();
208+
}
209+
210+
/**
211+
* @test
212+
* Covers: getPasswordHelper env: branch when env var is not set -> NO_PASSWORD
213+
*/
214+
public function testSetPasswordFromEnvVar_notSet() {
215+
putenv('UNSET_SCHED_PASS'); // ensure unset
216+
TasksManager::setPassword('env:UNSET_SCHED_PASS');
217+
218+
$this->assertEquals('NO_PASSWORD', TasksManager::getPassword());
219+
220+
TasksManager::reset();
221+
}
194222
}

0 commit comments

Comments
 (0)