Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/tests/Integration/Services/Users/UserDeletionServiceTest.php
14044 views
1
<?php
2
3
namespace Pterodactyl\Tests\Integration\Services\Users;
4
5
use Pterodactyl\Models\User;
6
use Pterodactyl\Models\Subuser;
7
use Illuminate\Support\Facades\Bus;
8
use Pterodactyl\Jobs\RevokeSftpAccessJob;
9
use Pterodactyl\Exceptions\DisplayException;
10
use Pterodactyl\Services\Users\UserDeletionService;
11
use Pterodactyl\Tests\Integration\IntegrationTestCase;
12
13
class UserDeletionServiceTest extends IntegrationTestCase
14
{
15
public function setUp(): void
16
{
17
parent::setUp();
18
19
Bus::fake([RevokeSftpAccessJob::class]);
20
}
21
22
public function testExceptionReturnedIfUserAssignedToServers(): void
23
{
24
$server = $this->createServerModel();
25
26
$this->expectException(DisplayException::class);
27
$this->expectExceptionMessage(__('admin/user.exceptions.user_has_servers'));
28
29
$this->app->make(UserDeletionService::class)->handle($server->user);
30
31
$this->assertModelExists($server->user);
32
33
Bus::assertNotDispatched(RevokeSftpAccessJob::class);
34
}
35
36
public function testUserIsDeleted(): void
37
{
38
$user = User::factory()->create();
39
40
$this->app->make(UserDeletionService::class)->handle($user);
41
42
$this->assertModelMissing($user);
43
44
Bus::assertNotDispatched(RevokeSftpAccessJob::class);
45
}
46
47
public function testUserIsDeletedAndAccessRevoked(): void
48
{
49
$user = User::factory()->create();
50
51
$server1 = $this->createServerModel();
52
$server2 = $this->createServerModel(['node_id' => $server1->node_id]);
53
54
Subuser::factory()->for($server1)->for($user)->create();
55
Subuser::factory()->for($server2)->for($user)->create();
56
57
$this->app->make(UserDeletionService::class)->handle($user);
58
59
$this->assertModelMissing($user);
60
61
Bus::assertDispatchedTimes(RevokeSftpAccessJob::class);
62
Bus::assertDispatched(fn (RevokeSftpAccessJob $job) => $job->user === $user->uuid && $job->target->is($server1->node));
63
}
64
}
65
66