Path: blob/1.0-develop/tests/Integration/Api/Client/Server/ScheduleTask/DeleteScheduleTaskTest.php
7461 views
<?php12namespace Pterodactyl\Tests\Integration\Api\Client\Server\ScheduleTask;34use Pterodactyl\Models\Task;5use Pterodactyl\Models\User;6use Illuminate\Http\Response;7use Pterodactyl\Models\Schedule;8use Pterodactyl\Models\Permission;9use Pterodactyl\Tests\Integration\Api\Client\ClientApiIntegrationTestCase;1011class DeleteScheduleTaskTest extends ClientApiIntegrationTestCase12{13/**14* Test that an error is returned if the schedule does not belong to the server.15*/16public function testScheduleNotBelongingToServerReturnsError()17{18$server2 = $this->createServerModel();19[$user] = $this->generateTestAccount();2021$schedule = Schedule::factory()->create(['server_id' => $server2->id]);22$task = Task::factory()->create(['schedule_id' => $schedule->id]);2324$this->actingAs($user)->deleteJson($this->link($task))->assertNotFound();25}2627/**28* Test that an error is returned if the task and schedule in the URL do not line up29* with each other.30*/31public function testTaskBelongingToDifferentScheduleReturnsError()32{33[$user, $server] = $this->generateTestAccount();3435$schedule = Schedule::factory()->create(['server_id' => $server->id]);36$schedule2 = Schedule::factory()->create(['server_id' => $server->id]);37$task = Task::factory()->create(['schedule_id' => $schedule->id]);3839$this->actingAs($user)->deleteJson("/api/client/servers/$server->uuid/schedules/$schedule2->id/tasks/$task->id")->assertNotFound();40}4142/**43* Test that a user without the required permissions returns an error.44*/45public function testUserWithoutPermissionReturnsError()46{47[$user, $server] = $this->generateTestAccount([Permission::ACTION_SCHEDULE_CREATE]);4849$schedule = Schedule::factory()->create(['server_id' => $server->id]);50$task = Task::factory()->create(['schedule_id' => $schedule->id]);5152$this->actingAs($user)->deleteJson($this->link($task))->assertForbidden();5354$user2 = User::factory()->create();5556$this->actingAs($user2)->deleteJson($this->link($task))->assertNotFound();57}5859/**60* Test that a schedule task is deleted and items with a higher sequence ID are decremented61* properly in the database.62*/63public function testScheduleTaskIsDeletedAndSubsequentTasksAreUpdated()64{65[$user, $server] = $this->generateTestAccount();6667$schedule = Schedule::factory()->create(['server_id' => $server->id]);68$tasks = [69Task::factory()->create(['schedule_id' => $schedule->id, 'sequence_id' => 1]),70Task::factory()->create(['schedule_id' => $schedule->id, 'sequence_id' => 2]),71Task::factory()->create(['schedule_id' => $schedule->id, 'sequence_id' => 3]),72Task::factory()->create(['schedule_id' => $schedule->id, 'sequence_id' => 4]),73];7475$response = $this->actingAs($user)->deleteJson($this->link($tasks[1]));76$response->assertStatus(Response::HTTP_NO_CONTENT);7778$this->assertDatabaseHas('tasks', ['id' => $tasks[0]->id, 'sequence_id' => 1]);79$this->assertDatabaseHas('tasks', ['id' => $tasks[2]->id, 'sequence_id' => 2]);80$this->assertDatabaseHas('tasks', ['id' => $tasks[3]->id, 'sequence_id' => 3]);81$this->assertDatabaseMissing('tasks', ['id' => $tasks[1]->id]);82}83}848586