Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/tests/Integration/Jobs/RevokeSftpAccessJobTest.php
14042 views
1
<?php
2
3
namespace Pterodactyl\Tests\Integration\Jobs;
4
5
use Pterodactyl\Models\Node;
6
use Pterodactyl\Models\Server;
7
use Pterodactyl\Jobs\RevokeSftpAccessJob;
8
use PHPUnit\Framework\Attributes\TestWith;
9
use GuzzleHttp\Exception\TransferException;
10
use Pterodactyl\Tests\Integration\IntegrationTestCase;
11
use Pterodactyl\Repositories\Wings\DaemonRevocationRepository;
12
use Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException;
13
14
class RevokeSftpAccessJobTest extends IntegrationTestCase
15
{
16
#[TestWith([Server::class, 'server'])]
17
#[TestWith([Node::class, 'node'])]
18
public function testUniqueIdBasedOnModelType(string $class, string $key): void
19
{
20
$model = $class::factory()->make(['uuid' => 'uuid-1234']);
21
22
$job = new RevokeSftpAccessJob('user-1', $model);
23
24
$this->assertEquals(
25
"revoke-sftp:user-1:{$key}:uuid-1234",
26
$job->uniqueId()
27
);
28
}
29
30
public function testJobReleasesBackToQueueOnFailure(): void
31
{
32
$node = Node::factory()->make(['uuid' => 'uuid-1234']);
33
34
$mock = $this->mock(DaemonRevocationRepository::class, function ($mock) {
35
$mock->expects('setNode->deauthorize')->andThrows(
36
new DaemonConnectionException(new TransferException('Connection failed'))
37
);
38
});
39
40
$job = \Mockery::mock(RevokeSftpAccessJob::class, ['user-1', $node])->makePartial();
41
$job->expects('release')->with(10);
42
43
$job->handle($mock);
44
}
45
46
public function testJobDispatchesForNode(): void
47
{
48
$node = Node::factory()->make(['uuid' => 'uuid-1234']);
49
50
$mock = $this->mock(DaemonRevocationRepository::class, function ($mock) {
51
$mock->expects('setNode')->andReturnSelf();
52
$mock->expects('deauthorize')->with('user-1', [])->andReturnUndefined();
53
});
54
55
(new RevokeSftpAccessJob('user-1', $node))->handle($mock);
56
}
57
58
public function testJobDispatchesForIndividualServer(): void
59
{
60
$node = Node::factory()->make(['uuid' => 'node-1234']);
61
$server = Server::factory()->make(['uuid' => 'server-1234'])->setRelation('node', $node);
62
63
$mock = $this->mock(DaemonRevocationRepository::class, function ($mock) {
64
$mock->expects('setNode')->with(\Mockery::on(fn (Node $node) => $node->uuid === 'node-1234'))->andReturnSelf();
65
$mock->expects('deauthorize')->with('user-1', ['server-1234'])->andReturnUndefined();
66
});
67
68
(new RevokeSftpAccessJob('user-1', $server))->handle($mock);
69
}
70
}
71
72