Don't run schedules when a server is suspended or installing; closes #4008

This commit is contained in:
DaneEveritt 2022-05-04 20:41:53 -04:00
parent ab37ee8633
commit b07fdc100c
No known key found for this signature in database
GPG key ID: EEA66103B3D71F53
3 changed files with 46 additions and 1 deletions

View file

@ -3,6 +3,8 @@
namespace Pterodactyl\Tests\Integration\Jobs\Schedule;
use Mockery;
use Carbon\Carbon;
use DateTimeInterface;
use Carbon\CarbonImmutable;
use GuzzleHttp\Psr7\Request;
use Pterodactyl\Models\Task;
@ -146,6 +148,36 @@ class RunTaskJobTest extends IntegrationTestCase
}
}
/**
* Test that a schedule is not executed if the server is suspended.
*
* @see https://github.com/pterodactyl/panel/issues/4008
*/
public function testTaskIsNotRunIfServerIsSuspended()
{
$server = $this->createServerModel([
'status' => Server::STATUS_SUSPENDED,
]);
$schedule = Schedule::factory()->for($server)->create([
'last_run_at' => Carbon::now()->subHour(),
]);
$task = Task::factory()->for($schedule)->create([
'action' => Task::ACTION_POWER,
'payload' => 'start',
]);
Bus::dispatchNow(new RunTaskJob($task));
$task->refresh();
$schedule->refresh();
$this->assertFalse($task->is_queued);
$this->assertFalse($schedule->is_processing);
$this->assertTrue(Carbon::now()->isSameAs(DateTimeInterface::ATOM, $schedule->last_run_at));
}
/**
* @return array
*/