Path: blob/1.0-develop/tests/Integration/Jobs/RevokeSftpAccessJobTest.php
14042 views
<?php12namespace Pterodactyl\Tests\Integration\Jobs;34use Pterodactyl\Models\Node;5use Pterodactyl\Models\Server;6use Pterodactyl\Jobs\RevokeSftpAccessJob;7use PHPUnit\Framework\Attributes\TestWith;8use GuzzleHttp\Exception\TransferException;9use Pterodactyl\Tests\Integration\IntegrationTestCase;10use Pterodactyl\Repositories\Wings\DaemonRevocationRepository;11use Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException;1213class RevokeSftpAccessJobTest extends IntegrationTestCase14{15#[TestWith([Server::class, 'server'])]16#[TestWith([Node::class, 'node'])]17public function testUniqueIdBasedOnModelType(string $class, string $key): void18{19$model = $class::factory()->make(['uuid' => 'uuid-1234']);2021$job = new RevokeSftpAccessJob('user-1', $model);2223$this->assertEquals(24"revoke-sftp:user-1:{$key}:uuid-1234",25$job->uniqueId()26);27}2829public function testJobReleasesBackToQueueOnFailure(): void30{31$node = Node::factory()->make(['uuid' => 'uuid-1234']);3233$mock = $this->mock(DaemonRevocationRepository::class, function ($mock) {34$mock->expects('setNode->deauthorize')->andThrows(35new DaemonConnectionException(new TransferException('Connection failed'))36);37});3839$job = \Mockery::mock(RevokeSftpAccessJob::class, ['user-1', $node])->makePartial();40$job->expects('release')->with(10);4142$job->handle($mock);43}4445public function testJobDispatchesForNode(): void46{47$node = Node::factory()->make(['uuid' => 'uuid-1234']);4849$mock = $this->mock(DaemonRevocationRepository::class, function ($mock) {50$mock->expects('setNode')->andReturnSelf();51$mock->expects('deauthorize')->with('user-1', [])->andReturnUndefined();52});5354(new RevokeSftpAccessJob('user-1', $node))->handle($mock);55}5657public function testJobDispatchesForIndividualServer(): void58{59$node = Node::factory()->make(['uuid' => 'node-1234']);60$server = Server::factory()->make(['uuid' => 'server-1234'])->setRelation('node', $node);6162$mock = $this->mock(DaemonRevocationRepository::class, function ($mock) {63$mock->expects('setNode')->with(\Mockery::on(fn (Node $node) => $node->uuid === 'node-1234'))->andReturnSelf();64$mock->expects('deauthorize')->with('user-1', ['server-1234'])->andReturnUndefined();65});6667(new RevokeSftpAccessJob('user-1', $server))->handle($mock);68}69}707172