Fix all currently failing tests
This commit is contained in:
parent
3a8bea9588
commit
dd456a4c9c
11 changed files with 175 additions and 315 deletions
|
@ -54,7 +54,7 @@ class DetailsModificationService
|
|||
/**
|
||||
* @var \Pterodactyl\Services\DaemonKeys\DaemonKeyDeletionService
|
||||
*/
|
||||
private $keyDeletionService;
|
||||
protected $keyDeletionService;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Repositories\Eloquent\ServerRepository
|
||||
|
|
|
@ -76,27 +76,27 @@ class SubuserCreationService
|
|||
* SubuserCreationService constructor.
|
||||
*
|
||||
* @param \Illuminate\Database\ConnectionInterface $connection
|
||||
* @param \Pterodactyl\Services\Users\UserCreationService $userCreationService
|
||||
* @param \Pterodactyl\Services\DaemonKeys\DaemonKeyCreationService $keyCreationService
|
||||
* @param \Pterodactyl\Services\Subusers\PermissionCreationService $permissionService
|
||||
* @param \Pterodactyl\Contracts\Repository\ServerRepositoryInterface $serverRepository
|
||||
* @param \Pterodactyl\Contracts\Repository\SubuserRepositoryInterface $subuserRepository
|
||||
* @param \Pterodactyl\Services\Users\UserCreationService $userCreationService
|
||||
* @param \Pterodactyl\Contracts\Repository\UserRepositoryInterface $userRepository
|
||||
*/
|
||||
public function __construct(
|
||||
ConnectionInterface $connection,
|
||||
UserCreationService $userCreationService,
|
||||
DaemonKeyCreationService $keyCreationService,
|
||||
PermissionCreationService $permissionService,
|
||||
ServerRepositoryInterface $serverRepository,
|
||||
SubuserRepositoryInterface $subuserRepository,
|
||||
UserCreationService $userCreationService,
|
||||
UserRepositoryInterface $userRepository
|
||||
) {
|
||||
$this->connection = $connection;
|
||||
$this->keyCreationService = $keyCreationService;
|
||||
$this->permissionService = $permissionService;
|
||||
$this->subuserRepository = $subuserRepository;
|
||||
$this->serverRepository = $serverRepository;
|
||||
$this->subuserRepository = $subuserRepository;
|
||||
$this->userRepository = $userRepository;
|
||||
$this->userCreationService = $userCreationService;
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
namespace Pterodactyl\Services\Subusers;
|
||||
|
||||
use Pterodactyl\Models\Subuser;
|
||||
use Illuminate\Database\ConnectionInterface;
|
||||
use Pterodactyl\Services\DaemonKeys\DaemonKeyDeletionService;
|
||||
use Pterodactyl\Contracts\Repository\SubuserRepositoryInterface;
|
||||
|
@ -65,14 +66,16 @@ class SubuserDeletionService
|
|||
/**
|
||||
* Delete a subuser and their associated permissions from the Panel and Daemon.
|
||||
*
|
||||
* @param int $subuser
|
||||
* @param int|\Pterodactyl\Models\Subuser $subuser
|
||||
*
|
||||
* @throws \Pterodactyl\Exceptions\DisplayException
|
||||
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
|
||||
*/
|
||||
public function handle($subuser)
|
||||
{
|
||||
$subuser = $this->repository->getWithServer($subuser);
|
||||
if (! $subuser instanceof Subuser) {
|
||||
$subuser = $this->repository->find($subuser);
|
||||
}
|
||||
|
||||
$this->connection->beginTransaction();
|
||||
$this->keyDeletionService->handle($subuser->server_id, $subuser->user_id);
|
||||
|
|
|
@ -30,7 +30,6 @@ $factory->define(Pterodactyl\Models\Server::class, function (Faker\Generator $fa
|
|||
'cpu' => 0,
|
||||
'oom_disabled' => 0,
|
||||
'pack_id' => null,
|
||||
'daemonSecret' => $faker->uuid,
|
||||
'username' => $faker->userName,
|
||||
'sftp_password' => null,
|
||||
'installed' => 1,
|
||||
|
@ -153,7 +152,6 @@ $factory->define(Pterodactyl\Models\Subuser::class, function (Faker\Generator $f
|
|||
'id' => $faker->unique()->randomNumber(),
|
||||
'user_id' => $faker->randomNumber(),
|
||||
'server_id' => $faker->randomNumber(),
|
||||
'daemonSecret' => $faker->unique()->uuid,
|
||||
];
|
||||
});
|
||||
|
||||
|
@ -197,3 +195,13 @@ $factory->define(Pterodactyl\Models\Task::class, function (Faker\Generator $fake
|
|||
'is_queued' => false,
|
||||
];
|
||||
});
|
||||
|
||||
$factory->define(Pterodactyl\Models\DaemonKey::class, function (Faker\Generator $faker) {
|
||||
return [
|
||||
'id' => $faker->unique()->randomNumber(),
|
||||
'server_id' => $faker->randomNumber(),
|
||||
'user_id' => $faker->randomNumber(),
|
||||
'secret' => 'i_' . str_random(40),
|
||||
'expires_at' => \Carbon\Carbon::now()->addMinutes(10)->toDateTimeString(),
|
||||
];
|
||||
});
|
||||
|
|
|
@ -31,7 +31,7 @@ use Pterodactyl\Models\User;
|
|||
use Pterodactyl\Models\Server;
|
||||
use Tests\Assertions\ControllerAssertionsTrait;
|
||||
use Pterodactyl\Http\Controllers\Base\IndexController;
|
||||
use Pterodactyl\Services\Servers\ServerAccessHelperService;
|
||||
use Pterodactyl\Services\DaemonKeys\DaemonKeyProviderService;
|
||||
use Pterodactyl\Contracts\Repository\ServerRepositoryInterface;
|
||||
use Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface as DaemonServerRepositoryInterface;
|
||||
|
||||
|
@ -39,28 +39,28 @@ class IndexControllerTest extends TestCase
|
|||
{
|
||||
use ControllerAssertionsTrait;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Services\Servers\ServerAccessHelperService
|
||||
*/
|
||||
protected $access;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Http\Controllers\Base\IndexController
|
||||
*/
|
||||
protected $controller;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface
|
||||
* @var \Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface|\Mockery\Mock
|
||||
*/
|
||||
protected $daemonRepository;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Contracts\Repository\ServerRepositoryInterface
|
||||
* @var \Pterodactyl\Services\DaemonKeys\DaemonKeyProviderService|\Mockery\Mock
|
||||
*/
|
||||
protected $keyProviderService;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Contracts\Repository\ServerRepositoryInterface|\Mockery\Mock
|
||||
*/
|
||||
protected $repository;
|
||||
|
||||
/**
|
||||
* @var \Illuminate\Http\Request
|
||||
* @var \Illuminate\Http\Request|\Mockery\Mock
|
||||
*/
|
||||
protected $request;
|
||||
|
||||
|
@ -71,12 +71,12 @@ class IndexControllerTest extends TestCase
|
|||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->access = m::mock(ServerAccessHelperService::class);
|
||||
$this->daemonRepository = m::mock(DaemonServerRepositoryInterface::class);
|
||||
$this->keyProviderService = m::mock(DaemonKeyProviderService::class);
|
||||
$this->repository = m::mock(ServerRepositoryInterface::class);
|
||||
$this->request = m::mock(Request::class);
|
||||
|
||||
$this->controller = new IndexController($this->daemonRepository, $this->access, $this->repository);
|
||||
$this->controller = new IndexController($this->keyProviderService, $this->daemonRepository, $this->repository);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -109,16 +109,17 @@ class IndexControllerTest extends TestCase
|
|||
$server = factory(Server::class)->make(['suspended' => 0, 'installed' => 1]);
|
||||
|
||||
$this->request->shouldReceive('user')->withNoArgs()->once()->andReturn($user);
|
||||
$this->access->shouldReceive('handle')->with($server->uuid, $user)->once()->andReturn($server);
|
||||
$this->repository->shouldReceive('findFirstWhere')->with([['uuidShort', '=', $server->uuidShort]])->once()->andReturn($server);
|
||||
$this->keyProviderService->shouldReceive('handle')->with($server->id, $user->id)->once()->andReturn('test123');
|
||||
|
||||
$this->daemonRepository->shouldReceive('setNode')->with($server->node_id)->once()->andReturnSelf()
|
||||
->shouldReceive('setAccessServer')->with($server->uuid)->once()->andReturnSelf()
|
||||
->shouldReceive('setAccessToken')->with($server->daemonSecret)->once()->andReturnSelf()
|
||||
->shouldReceive('setAccessToken')->with('test123')->once()->andReturnSelf()
|
||||
->shouldReceive('details')->withNoArgs()->once()->andReturnSelf();
|
||||
|
||||
$this->daemonRepository->shouldReceive('getBody')->withNoArgs()->once()->andReturn('["test"]');
|
||||
|
||||
$response = $this->controller->status($this->request, $server->uuid);
|
||||
$response = $this->controller->status($this->request, $server->uuidShort);
|
||||
$this->assertIsJsonResponse($response);
|
||||
$this->assertResponseJsonEquals(['test'], $response);
|
||||
}
|
||||
|
@ -132,9 +133,10 @@ class IndexControllerTest extends TestCase
|
|||
$server = factory(Server::class)->make(['suspended' => 0, 'installed' => 0]);
|
||||
|
||||
$this->request->shouldReceive('user')->withNoArgs()->once()->andReturn($user);
|
||||
$this->access->shouldReceive('handle')->with($server->uuid, $user)->once()->andReturn($server);
|
||||
$this->repository->shouldReceive('findFirstWhere')->with([['uuidShort', '=', $server->uuidShort]])->once()->andReturn($server);
|
||||
$this->keyProviderService->shouldReceive('handle')->with($server->id, $user->id)->once()->andReturn('test123');
|
||||
|
||||
$response = $this->controller->status($this->request, $server->uuid);
|
||||
$response = $this->controller->status($this->request, $server->uuidShort);
|
||||
$this->assertIsJsonResponse($response);
|
||||
$this->assertResponseCodeEquals(200, $response);
|
||||
$this->assertResponseJsonEquals(['status' => 20], $response);
|
||||
|
@ -149,9 +151,10 @@ class IndexControllerTest extends TestCase
|
|||
$server = factory(Server::class)->make(['suspended' => 1, 'installed' => 1]);
|
||||
|
||||
$this->request->shouldReceive('user')->withNoArgs()->once()->andReturn($user);
|
||||
$this->access->shouldReceive('handle')->with($server->uuid, $user)->once()->andReturn($server);
|
||||
$this->repository->shouldReceive('findFirstWhere')->with([['uuidShort', '=', $server->uuidShort]])->once()->andReturn($server);
|
||||
$this->keyProviderService->shouldReceive('handle')->with($server->id, $user->id)->once()->andReturn('test123');
|
||||
|
||||
$response = $this->controller->status($this->request, $server->uuid);
|
||||
$response = $this->controller->status($this->request, $server->uuidShort);
|
||||
$this->assertIsJsonResponse($response);
|
||||
$this->assertResponseCodeEquals(200, $response);
|
||||
$this->assertResponseJsonEquals(['status' => 30], $response);
|
||||
|
|
|
@ -41,12 +41,12 @@ class NodeUpdateServiceTest extends TestCase
|
|||
use PHPMock;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Contracts\Repository\Daemon\ConfigurationRepositoryInterface
|
||||
* @var \Pterodactyl\Contracts\Repository\Daemon\ConfigurationRepositoryInterface|\Mockery\Mock
|
||||
*/
|
||||
protected $configRepository;
|
||||
|
||||
/**
|
||||
* @var \GuzzleHttp\Exception\RequestException
|
||||
* @var \GuzzleHttp\Exception\RequestException|\Mockery\Mock
|
||||
*/
|
||||
protected $exception;
|
||||
|
||||
|
@ -56,7 +56,7 @@ class NodeUpdateServiceTest extends TestCase
|
|||
protected $node;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Contracts\Repository\NodeRepositoryInterface
|
||||
* @var \Pterodactyl\Contracts\Repository\NodeRepositoryInterface|\Mockery\Mock
|
||||
*/
|
||||
protected $repository;
|
||||
|
||||
|
@ -66,7 +66,7 @@ class NodeUpdateServiceTest extends TestCase
|
|||
protected $service;
|
||||
|
||||
/**
|
||||
* @var \Illuminate\Log\Writer
|
||||
* @var \Illuminate\Log\Writer|\Mockery\Mock
|
||||
*/
|
||||
protected $writer;
|
||||
|
||||
|
@ -106,7 +106,6 @@ class NodeUpdateServiceTest extends TestCase
|
|||
])->andReturn(true);
|
||||
|
||||
$this->configRepository->shouldReceive('setNode')->with($this->node->id)->once()->andReturnSelf()
|
||||
->shouldReceive('setAccessToken')->with($this->node->daemonSecret)->once()->andReturnSelf()
|
||||
->shouldReceive('update')->withNoArgs()->once()->andReturnNull();
|
||||
|
||||
$this->assertTrue($this->service->handle($this->node, ['name' => 'NewName', 'reset_secret' => true]));
|
||||
|
@ -123,7 +122,6 @@ class NodeUpdateServiceTest extends TestCase
|
|||
])->andReturn(true);
|
||||
|
||||
$this->configRepository->shouldReceive('setNode')->with($this->node->id)->once()->andReturnSelf()
|
||||
->shouldReceive('setAccessToken')->with($this->node->daemonSecret)->once()->andReturnSelf()
|
||||
->shouldReceive('update')->withNoArgs()->once()->andReturnNull();
|
||||
|
||||
$this->assertTrue($this->service->handle($this->node, ['name' => 'NewName']));
|
||||
|
@ -167,7 +165,6 @@ class NodeUpdateServiceTest extends TestCase
|
|||
])->andReturn(true);
|
||||
|
||||
$this->configRepository->shouldReceive('setNode')->with($this->node->id)->once()->andReturnSelf()
|
||||
->shouldReceive('setAccessToken')->with($this->node->daemonSecret)->once()->andReturnSelf()
|
||||
->shouldReceive('update')->withNoArgs()->once()->andReturnNull();
|
||||
|
||||
$this->assertTrue($this->service->handle($this->node->id, ['name' => 'NewName']));
|
||||
|
|
|
@ -28,36 +28,46 @@ use Exception;
|
|||
use Mockery as m;
|
||||
use Tests\TestCase;
|
||||
use Illuminate\Log\Writer;
|
||||
use phpmock\phpunit\PHPMock;
|
||||
use Pterodactyl\Models\Server;
|
||||
use Illuminate\Database\DatabaseManager;
|
||||
use GuzzleHttp\Exception\RequestException;
|
||||
use Illuminate\Database\ConnectionInterface;
|
||||
use Pterodactyl\Exceptions\DisplayException;
|
||||
use Pterodactyl\Exceptions\PterodactylException;
|
||||
use Pterodactyl\Repositories\Eloquent\ServerRepository;
|
||||
use Pterodactyl\Services\Servers\DetailsModificationService;
|
||||
use Pterodactyl\Services\DaemonKeys\DaemonKeyCreationService;
|
||||
use Pterodactyl\Services\DaemonKeys\DaemonKeyDeletionService;
|
||||
use Pterodactyl\Repositories\Daemon\ServerRepository as DaemonServerRepository;
|
||||
|
||||
class DetailsModificationServiceTest extends TestCase
|
||||
{
|
||||
use PHPMock;
|
||||
|
||||
/**
|
||||
* @var \Illuminate\Database\DatabaseManager
|
||||
* @var \Illuminate\Database\ConnectionInterface|\Mockery\Mock
|
||||
*/
|
||||
protected $database;
|
||||
protected $connection;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Repositories\Daemon\ServerRepository
|
||||
* @var \Pterodactyl\Repositories\Daemon\ServerRepository|\Mockery\Mock
|
||||
*/
|
||||
protected $daemonServerRepository;
|
||||
|
||||
/**
|
||||
* @var \GuzzleHttp\Exception\RequestException
|
||||
* @var \GuzzleHttp\Exception\RequestException|\Mockery\Mock
|
||||
*/
|
||||
protected $exception;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Repositories\Eloquent\ServerRepository
|
||||
* @var \Pterodactyl\Services\DaemonKeys\DaemonKeyCreationService|\Mockery\Mock
|
||||
*/
|
||||
protected $keyCreationService;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Services\DaemonKeys\DaemonKeyDeletionService|\Mockery\Mock
|
||||
*/
|
||||
protected $keyDeletionService;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Repositories\Eloquent\ServerRepository|\Mockery\Mock
|
||||
*/
|
||||
protected $repository;
|
||||
|
||||
|
@ -67,7 +77,7 @@ class DetailsModificationServiceTest extends TestCase
|
|||
protected $service;
|
||||
|
||||
/**
|
||||
* @var \Illuminate\Log\Writer
|
||||
* @var \Illuminate\Log\Writer|\Mockery\Mock
|
||||
*/
|
||||
protected $writer;
|
||||
|
||||
|
@ -78,17 +88,18 @@ class DetailsModificationServiceTest extends TestCase
|
|||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->database = m::mock(DatabaseManager::class);
|
||||
$this->connection = m::mock(ConnectionInterface::class);
|
||||
$this->exception = m::mock(RequestException::class)->makePartial();
|
||||
$this->daemonServerRepository = m::mock(DaemonServerRepository::class);
|
||||
$this->keyCreationService = m::mock(DaemonKeyCreationService::class);
|
||||
$this->keyDeletionService = m::mock(DaemonKeyDeletionService::class);
|
||||
$this->repository = m::mock(ServerRepository::class);
|
||||
$this->writer = m::mock(Writer::class);
|
||||
|
||||
$this->getFunctionMock('\\Pterodactyl\\Services\\Servers', 'str_random')
|
||||
->expects($this->any())->willReturn('random_string');
|
||||
|
||||
$this->service = new DetailsModificationService(
|
||||
$this->database,
|
||||
$this->connection,
|
||||
$this->keyCreationService,
|
||||
$this->keyDeletionService,
|
||||
$this->daemonServerRepository,
|
||||
$this->repository,
|
||||
$this->writer
|
||||
|
@ -106,21 +117,18 @@ class DetailsModificationServiceTest extends TestCase
|
|||
|
||||
$data = ['owner_id' => 1, 'name' => 'New Name', 'description' => 'New Description'];
|
||||
|
||||
$this->repository->shouldNotReceive('find');
|
||||
$this->database->shouldReceive('beginTransaction')->withNoArgs()->once()->andReturnNull();
|
||||
|
||||
$this->connection->shouldReceive('beginTransaction')->withNoArgs()->once()->andReturnNull();
|
||||
$this->repository->shouldReceive('withoutFresh')->withNoArgs()->once()->andReturnSelf()
|
||||
->shouldReceive('update')->with($server->id, [
|
||||
'owner_id' => $data['owner_id'],
|
||||
'name' => $data['name'],
|
||||
'description' => $data['description'],
|
||||
'daemonSecret' => $server->daemonSecret,
|
||||
], true, true)->once()->andReturnNull();
|
||||
|
||||
$this->database->shouldReceive('commit')->withNoArgs()->once()->andReturn(true);
|
||||
$this->connection->shouldReceive('commit')->withNoArgs()->once()->andReturnNull();
|
||||
|
||||
$response = $this->service->edit($server, $data);
|
||||
$this->assertTrue($response);
|
||||
$this->service->edit($server, $data);
|
||||
$this->assertTrue(true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -135,20 +143,18 @@ class DetailsModificationServiceTest extends TestCase
|
|||
$data = ['owner_id' => 1, 'name' => 'New Name', 'description' => 'New Description'];
|
||||
|
||||
$this->repository->shouldReceive('find')->with($server->id)->once()->andReturn($server);
|
||||
$this->database->shouldReceive('beginTransaction')->withNoArgs()->once()->andReturnNull();
|
||||
|
||||
$this->connection->shouldReceive('beginTransaction')->withNoArgs()->once()->andReturnNull();
|
||||
$this->repository->shouldReceive('withoutFresh')->withNoArgs()->once()->andReturnSelf()
|
||||
->shouldReceive('update')->with($server->id, [
|
||||
'owner_id' => $data['owner_id'],
|
||||
'name' => $data['name'],
|
||||
'description' => $data['description'],
|
||||
'daemonSecret' => $server->daemonSecret,
|
||||
], true, true)->once()->andReturnNull();
|
||||
|
||||
$this->database->shouldReceive('commit')->withNoArgs()->once()->andReturn(true);
|
||||
$this->connection->shouldReceive('commit')->withNoArgs()->once()->andReturnNull();
|
||||
|
||||
$response = $this->service->edit($server->id, $data);
|
||||
$this->assertTrue($response);
|
||||
$this->service->edit($server->id, $data);
|
||||
$this->assertTrue(true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -163,135 +169,20 @@ class DetailsModificationServiceTest extends TestCase
|
|||
|
||||
$data = ['owner_id' => 2, 'name' => 'New Name', 'description' => 'New Description'];
|
||||
|
||||
$this->repository->shouldNotReceive('find');
|
||||
$this->database->shouldReceive('beginTransaction')->withNoArgs()->once()->andReturnNull();
|
||||
|
||||
$this->connection->shouldReceive('beginTransaction')->withNoArgs()->once()->andReturnNull();
|
||||
$this->repository->shouldReceive('withoutFresh')->withNoArgs()->once()->andReturnSelf()
|
||||
->shouldReceive('update')->with($server->id, [
|
||||
'owner_id' => $data['owner_id'],
|
||||
'name' => $data['name'],
|
||||
'description' => $data['description'],
|
||||
'daemonSecret' => 'random_string',
|
||||
], true, true)->once()->andReturnNull();
|
||||
|
||||
$this->daemonServerRepository->shouldReceive('setNode')->with($server->node_id)->once()->andReturnSelf()
|
||||
->shouldReceive('setAccessServer')->with($server->uuid)->once()->andReturnSelf()
|
||||
->shouldReceive('update')->with([
|
||||
'keys' => [
|
||||
$server->daemonSecret => [],
|
||||
'random_string' => DaemonServerRepository::DAEMON_PERMISSIONS,
|
||||
],
|
||||
])->once()->andReturnNull();
|
||||
|
||||
$this->database->shouldReceive('commit')->withNoArgs()->once()->andReturn(true);
|
||||
|
||||
$response = $this->service->edit($server, $data);
|
||||
$this->assertTrue($response);
|
||||
}
|
||||
|
||||
public function testEditShouldResetDaemonSecretIfBooleanValueIsPassed()
|
||||
{
|
||||
$server = factory(Server::class)->make([
|
||||
'owner_id' => 1,
|
||||
'node_id' => 1,
|
||||
]);
|
||||
|
||||
$data = ['owner_id' => 1, 'name' => 'New Name', 'description' => 'New Description', 'reset_token' => true];
|
||||
|
||||
$this->repository->shouldNotReceive('find');
|
||||
$this->database->shouldReceive('beginTransaction')->withNoArgs()->once()->andReturnNull();
|
||||
|
||||
$this->repository->shouldReceive('withoutFresh')->withNoArgs()->once()->andReturnSelf()
|
||||
->shouldReceive('update')->with($server->id, [
|
||||
'owner_id' => $data['owner_id'],
|
||||
'name' => $data['name'],
|
||||
'description' => $data['description'],
|
||||
'daemonSecret' => 'random_string',
|
||||
], true, true)->once()->andReturnNull();
|
||||
|
||||
$this->daemonServerRepository->shouldReceive('setNode')->with($server->node_id)->once()->andReturnSelf()
|
||||
->shouldReceive('setAccessServer')->with($server->uuid)->once()->andReturnSelf()
|
||||
->shouldReceive('update')->with([
|
||||
'keys' => [
|
||||
$server->daemonSecret => [],
|
||||
'random_string' => DaemonServerRepository::DAEMON_PERMISSIONS,
|
||||
],
|
||||
])->once()->andReturnNull();
|
||||
|
||||
$this->database->shouldReceive('commit')->withNoArgs()->once()->andReturn(true);
|
||||
|
||||
$response = $this->service->edit($server, $data);
|
||||
$this->assertTrue($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that a displayable exception is thrown if the daemon responds with an error.
|
||||
*/
|
||||
public function testEditShouldThrowADisplayableExceptionIfDaemonResponseErrors()
|
||||
{
|
||||
$server = factory(Server::class)->make([
|
||||
'owner_id' => 1,
|
||||
'node_id' => 1,
|
||||
]);
|
||||
|
||||
$data = ['owner_id' => 2, 'name' => 'New Name', 'description' => 'New Description'];
|
||||
|
||||
$this->repository->shouldNotReceive('find');
|
||||
$this->database->shouldReceive('beginTransaction')->withNoArgs()->once()->andReturnNull();
|
||||
|
||||
$this->repository->shouldReceive('withoutFresh')->withNoArgs()->once()->andReturnSelf()
|
||||
->shouldReceive('update')->with($server->id, [
|
||||
'owner_id' => $data['owner_id'],
|
||||
'name' => $data['name'],
|
||||
'description' => $data['description'],
|
||||
'daemonSecret' => 'random_string',
|
||||
], true, true)->once()->andReturnNull();
|
||||
|
||||
$this->daemonServerRepository->shouldReceive('setNode')->andThrow($this->exception);
|
||||
$this->exception->shouldReceive('getResponse')->withNoArgs()->once()->andReturnSelf()
|
||||
->shouldReceive('getStatusCode')->withNoArgs()->once()->andReturn(400);
|
||||
|
||||
$this->writer->shouldReceive('warning')->with($this->exception)->once()->andReturnNull();
|
||||
|
||||
try {
|
||||
$this->service->edit($server, $data);
|
||||
} catch (Exception $exception) {
|
||||
$this->assertInstanceOf(DisplayException::class, $exception);
|
||||
$this->assertEquals(
|
||||
trans('admin/server.exceptions.daemon_exception', ['code' => 400]),
|
||||
$exception->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that an exception not stemming from Guzzle is not thrown as a displayable exception.
|
||||
*
|
||||
* @expectedException \Exception
|
||||
*/
|
||||
public function testEditShouldNotThrowDisplayableExceptionIfExceptionIsNotThrownByGuzzle()
|
||||
{
|
||||
$server = factory(Server::class)->make([
|
||||
'owner_id' => 1,
|
||||
'node_id' => 1,
|
||||
]);
|
||||
|
||||
$data = ['owner_id' => 2, 'name' => 'New Name', 'description' => 'New Description'];
|
||||
|
||||
$this->repository->shouldNotReceive('find');
|
||||
$this->database->shouldReceive('beginTransaction')->withNoArgs()->once()->andReturnNull();
|
||||
|
||||
$this->repository->shouldReceive('withoutFresh')->withNoArgs()->once()->andReturnSelf()
|
||||
->shouldReceive('update')->with($server->id, [
|
||||
'owner_id' => $data['owner_id'],
|
||||
'name' => $data['name'],
|
||||
'description' => $data['description'],
|
||||
'daemonSecret' => 'random_string',
|
||||
], true, true)->once()->andReturnNull();
|
||||
|
||||
$this->daemonServerRepository->shouldReceive('setNode')->andThrow(new Exception());
|
||||
$this->keyDeletionService->shouldReceive('handle')->with($server, $server->owner_id)->once()->andReturnNull();
|
||||
$this->keyCreationService->shouldReceive('handle')->with($server->id, $data['owner_id']);
|
||||
$this->connection->shouldReceive('commit')->withNoArgs()->once()->andReturnNull();
|
||||
|
||||
$this->service->edit($server, $data);
|
||||
$this->assertTrue(true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -301,8 +192,7 @@ class DetailsModificationServiceTest extends TestCase
|
|||
{
|
||||
$server = factory(Server::class)->make(['node_id' => 1]);
|
||||
|
||||
$this->repository->shouldNotReceive('find');
|
||||
$this->database->shouldReceive('beginTransaction')->withNoArgs()->once()->andReturnNull();
|
||||
$this->connection->shouldReceive('beginTransaction')->withNoArgs()->once()->andReturnNull();
|
||||
$this->repository->shouldReceive('withoutFresh')->withNoArgs()->once()->andReturnSelf()
|
||||
->shouldReceive('update')->with($server->id, [
|
||||
'image' => 'new/image',
|
||||
|
@ -316,9 +206,10 @@ class DetailsModificationServiceTest extends TestCase
|
|||
],
|
||||
])->once()->andReturnNull();
|
||||
|
||||
$this->database->shouldReceive('commit')->withNoArgs()->once()->andReturn(true);
|
||||
$this->connection->shouldReceive('commit')->withNoArgs()->once()->andReturnNull();
|
||||
|
||||
$this->service->setDockerImage($server, 'new/image');
|
||||
$this->assertTrue(true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -329,7 +220,7 @@ class DetailsModificationServiceTest extends TestCase
|
|||
$server = factory(Server::class)->make(['node_id' => 1]);
|
||||
|
||||
$this->repository->shouldReceive('find')->with($server->id)->once()->andReturn($server);
|
||||
$this->database->shouldReceive('beginTransaction')->withNoArgs()->once()->andReturnNull();
|
||||
$this->connection->shouldReceive('beginTransaction')->withNoArgs()->once()->andReturnNull();
|
||||
$this->repository->shouldReceive('withoutFresh')->withNoArgs()->once()->andReturnSelf()
|
||||
->shouldReceive('update')->with($server->id, [
|
||||
'image' => 'new/image',
|
||||
|
@ -343,9 +234,10 @@ class DetailsModificationServiceTest extends TestCase
|
|||
],
|
||||
])->once()->andReturnNull();
|
||||
|
||||
$this->database->shouldReceive('commit')->withNoArgs()->once()->andReturn(true);
|
||||
$this->connection->shouldReceive('commit')->withNoArgs()->once()->andReturnNull();
|
||||
|
||||
$this->service->setDockerImage($server->id, 'new/image');
|
||||
$this->assertTrue(true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -355,13 +247,14 @@ class DetailsModificationServiceTest extends TestCase
|
|||
{
|
||||
$server = factory(Server::class)->make(['node_id' => 1]);
|
||||
|
||||
$this->database->shouldReceive('beginTransaction')->withNoArgs()->once()->andReturnNull();
|
||||
$this->connection->shouldReceive('beginTransaction')->withNoArgs()->once()->andReturnNull();
|
||||
$this->repository->shouldReceive('withoutFresh')->withNoArgs()->once()->andReturnSelf()
|
||||
->shouldReceive('update')->with($server->id, [
|
||||
'image' => 'new/image',
|
||||
])->once()->andReturnNull();
|
||||
|
||||
$this->daemonServerRepository->shouldReceive('setNode')->andThrow($this->exception);
|
||||
$this->connection->shouldReceive('rollBack')->withNoArgs()->once()->andReturnNull();
|
||||
$this->exception->shouldReceive('getResponse')->withNoArgs()->once()->andReturnSelf()
|
||||
->shouldReceive('getStatusCode')->withNoArgs()->once()->andReturn(400);
|
||||
|
||||
|
@ -369,7 +262,7 @@ class DetailsModificationServiceTest extends TestCase
|
|||
|
||||
try {
|
||||
$this->service->setDockerImage($server, 'new/image');
|
||||
} catch (Exception $exception) {
|
||||
} catch (PterodactylException $exception) {
|
||||
$this->assertInstanceOf(DisplayException::class, $exception);
|
||||
$this->assertEquals(
|
||||
trans('admin/server.exceptions.daemon_exception', ['code' => 400]),
|
||||
|
|
|
@ -32,7 +32,7 @@ use Pterodactyl\Contracts\Repository\PermissionRepositoryInterface;
|
|||
class PermissionCreationServiceTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @var \Pterodactyl\Contracts\Repository\PermissionRepositoryInterface
|
||||
* @var \Pterodactyl\Contracts\Repository\PermissionRepositoryInterface|\Mockery\Mock
|
||||
*/
|
||||
protected $repository;
|
||||
|
||||
|
@ -59,14 +59,13 @@ class PermissionCreationServiceTest extends TestCase
|
|||
{
|
||||
$permissions = ['reset-sftp', 'view-sftp'];
|
||||
|
||||
$this->repository->shouldReceive('insert')->with([
|
||||
$this->repository->shouldReceive('withoutFresh')->withNoArgs()->once()->andReturnSelf()
|
||||
->shouldReceive('insert')->with([
|
||||
['subuser_id' => 1, 'permission' => 'reset-sftp'],
|
||||
['subuser_id' => 1, 'permission' => 'view-sftp'],
|
||||
]);
|
||||
])->once()->andReturnNull();
|
||||
|
||||
$response = $this->service->handle(1, $permissions);
|
||||
|
||||
$this->assertNotEmpty($response);
|
||||
$this->assertEquals(['s:get', 's:console', 's:set-password'], $response);
|
||||
$this->service->handle(1, $permissions);
|
||||
$this->assertTrue(true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,7 +26,6 @@ namespace Tests\Unit\Services\Subusers;
|
|||
|
||||
use Mockery as m;
|
||||
use Tests\TestCase;
|
||||
use Illuminate\Log\Writer;
|
||||
use phpmock\phpunit\PHPMock;
|
||||
use Pterodactyl\Models\User;
|
||||
use Pterodactyl\Models\Server;
|
||||
|
@ -37,39 +36,39 @@ use Pterodactyl\Services\Users\UserCreationService;
|
|||
use Pterodactyl\Services\Subusers\SubuserCreationService;
|
||||
use Pterodactyl\Services\Subusers\PermissionCreationService;
|
||||
use Pterodactyl\Contracts\Repository\UserRepositoryInterface;
|
||||
use Pterodactyl\Services\DaemonKeys\DaemonKeyCreationService;
|
||||
use Pterodactyl\Exceptions\Repository\RecordNotFoundException;
|
||||
use Pterodactyl\Contracts\Repository\ServerRepositoryInterface;
|
||||
use Pterodactyl\Contracts\Repository\SubuserRepositoryInterface;
|
||||
use Pterodactyl\Exceptions\Service\Subuser\UserIsServerOwnerException;
|
||||
use Pterodactyl\Exceptions\Service\Subuser\ServerSubuserExistsException;
|
||||
use Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface as DaemonServerRepositoryInterface;
|
||||
|
||||
class SubuserCreationServiceTest extends TestCase
|
||||
{
|
||||
use PHPMock;
|
||||
|
||||
/**
|
||||
* @var \Illuminate\Database\ConnectionInterface
|
||||
* @var \Illuminate\Database\ConnectionInterface|\Mockery\Mock
|
||||
*/
|
||||
protected $connection;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface
|
||||
* @var \Pterodactyl\Services\DaemonKeys\DaemonKeyCreationService|\Mockery\Mock
|
||||
*/
|
||||
protected $daemonRepository;
|
||||
protected $keyCreationService;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Services\Subusers\PermissionCreationService
|
||||
* @var \Pterodactyl\Services\Subusers\PermissionCreationService|\Mockery\Mock
|
||||
*/
|
||||
protected $permissionService;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Contracts\Repository\SubuserRepositoryInterface
|
||||
* @var \Pterodactyl\Contracts\Repository\SubuserRepositoryInterface|\Mockery\Mock
|
||||
*/
|
||||
protected $subuserRepository;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Contracts\Repository\ServerRepositoryInterface
|
||||
* @var \Pterodactyl\Contracts\Repository\ServerRepositoryInterface|\Mockery\Mock
|
||||
*/
|
||||
protected $serverRepository;
|
||||
|
||||
|
@ -79,20 +78,15 @@ class SubuserCreationServiceTest extends TestCase
|
|||
protected $service;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Services\Users\UserCreationService
|
||||
* @var \Pterodactyl\Services\Users\UserCreationService|\Mockery\Mock
|
||||
*/
|
||||
protected $userCreationService;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Contracts\Repository\UserRepositoryInterface
|
||||
* @var \Pterodactyl\Contracts\Repository\UserRepositoryInterface|\Mockery\Mock
|
||||
*/
|
||||
protected $userRepository;
|
||||
|
||||
/**
|
||||
* @var \Illuminate\Log\Writer
|
||||
*/
|
||||
protected $writer;
|
||||
|
||||
/**
|
||||
* Setup tests.
|
||||
*/
|
||||
|
@ -103,23 +97,21 @@ class SubuserCreationServiceTest extends TestCase
|
|||
$this->getFunctionMock('\\Pterodactyl\\Services\\Subusers', 'str_random')->expects($this->any())->willReturn('random_string');
|
||||
|
||||
$this->connection = m::mock(ConnectionInterface::class);
|
||||
$this->daemonRepository = m::mock(DaemonServerRepositoryInterface::class);
|
||||
$this->keyCreationService = m::mock(DaemonKeyCreationService::class);
|
||||
$this->permissionService = m::mock(PermissionCreationService::class);
|
||||
$this->subuserRepository = m::mock(SubuserRepositoryInterface::class);
|
||||
$this->serverRepository = m::mock(ServerRepositoryInterface::class);
|
||||
$this->userCreationService = m::mock(UserCreationService::class);
|
||||
$this->userRepository = m::mock(UserRepositoryInterface::class);
|
||||
$this->writer = m::mock(Writer::class);
|
||||
|
||||
$this->service = new SubuserCreationService(
|
||||
$this->connection,
|
||||
$this->userCreationService,
|
||||
$this->daemonRepository,
|
||||
$this->keyCreationService,
|
||||
$this->permissionService,
|
||||
$this->serverRepository,
|
||||
$this->subuserRepository,
|
||||
$this->userRepository,
|
||||
$this->writer
|
||||
$this->userCreationService,
|
||||
$this->userRepository
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -143,22 +135,13 @@ class SubuserCreationServiceTest extends TestCase
|
|||
'root_admin' => false,
|
||||
])->once()->andReturn($user);
|
||||
|
||||
$this->subuserRepository->shouldReceive('create')->with([
|
||||
'user_id' => $user->id,
|
||||
'server_id' => $server->id,
|
||||
'daemonSecret' => 'random_string',
|
||||
])->once()->andReturn($subuser);
|
||||
|
||||
$this->permissionService->shouldReceive('handle')->with($subuser->id, array_keys($permissions))->once()
|
||||
->andReturn(['s:get', 's:console', 'test:1']);
|
||||
|
||||
$this->daemonRepository->shouldReceive('setNode')->with($server->node_id)->once()->andReturnSelf()
|
||||
->shouldReceive('setAccessServer')->with($server->uuid)->once()->andReturnSelf()
|
||||
->shouldReceive('setSubuserKey')->with($subuser->daemonSecret, ['s:get', 's:console', 'test:1'])->once()->andReturnSelf();
|
||||
$this->subuserRepository->shouldReceive('create')->with(['user_id' => $user->id, 'server_id' => $server->id])
|
||||
->once()->andReturn($subuser);
|
||||
$this->keyCreationService->shouldReceive('handle')->with($server->id, $user->id)->once()->andReturnNull();
|
||||
$this->permissionService->shouldReceive('handle')->with($subuser->id, array_keys($permissions))->once()->andReturnNull();
|
||||
$this->connection->shouldReceive('commit')->withNoArgs()->once()->andReturnNull();
|
||||
|
||||
$response = $this->service->handle($server, $user->email, array_keys($permissions));
|
||||
|
||||
$this->assertInstanceOf(Subuser::class, $response);
|
||||
$this->assertSame($subuser, $response);
|
||||
}
|
||||
|
@ -180,22 +163,13 @@ class SubuserCreationServiceTest extends TestCase
|
|||
['server_id', '=', $server->id],
|
||||
])->once()->andReturn(0);
|
||||
|
||||
$this->subuserRepository->shouldReceive('create')->with([
|
||||
'user_id' => $user->id,
|
||||
'server_id' => $server->id,
|
||||
'daemonSecret' => 'random_string',
|
||||
])->once()->andReturn($subuser);
|
||||
|
||||
$this->permissionService->shouldReceive('handle')->with($subuser->id, $permissions)->once()
|
||||
->andReturn(['s:get', 's:console', 's:set-password']);
|
||||
|
||||
$this->daemonRepository->shouldReceive('setNode')->with($server->node_id)->once()->andReturnSelf()
|
||||
->shouldReceive('setAccessServer')->with($server->uuid)->once()->andReturnSelf()
|
||||
->shouldReceive('setSubuserKey')->with($subuser->daemonSecret, ['s:get', 's:console', 's:set-password'])->once()->andReturnSelf();
|
||||
$this->subuserRepository->shouldReceive('create')->with(['user_id' => $user->id, 'server_id' => $server->id])
|
||||
->once()->andReturn($subuser);
|
||||
$this->keyCreationService->shouldReceive('handle')->with($server->id, $user->id)->once()->andReturnNull();
|
||||
$this->permissionService->shouldReceive('handle')->with($subuser->id, $permissions)->once()->andReturnNull();
|
||||
$this->connection->shouldReceive('commit')->withNoArgs()->once()->andReturnNull();
|
||||
|
||||
$response = $this->service->handle($server, $user->email, $permissions);
|
||||
|
||||
$this->assertInstanceOf(Subuser::class, $response);
|
||||
$this->assertSame($subuser, $response);
|
||||
}
|
||||
|
|
|
@ -26,35 +26,26 @@ namespace Tests\Unit\Services\Subusers;
|
|||
|
||||
use Mockery as m;
|
||||
use Tests\TestCase;
|
||||
use Illuminate\Log\Writer;
|
||||
use Pterodactyl\Models\Server;
|
||||
use Pterodactyl\Models\Subuser;
|
||||
use GuzzleHttp\Exception\RequestException;
|
||||
use Illuminate\Database\ConnectionInterface;
|
||||
use Pterodactyl\Exceptions\DisplayException;
|
||||
use Pterodactyl\Services\Subusers\SubuserDeletionService;
|
||||
use Pterodactyl\Services\DaemonKeys\DaemonKeyDeletionService;
|
||||
use Pterodactyl\Contracts\Repository\SubuserRepositoryInterface;
|
||||
use Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface as DaemonServerRepositoryInterface;
|
||||
|
||||
class SubuserDeletionServiceTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @var \Illuminate\Database\ConnectionInterface
|
||||
* @var \Illuminate\Database\ConnectionInterface|\Mockery\Mock
|
||||
*/
|
||||
protected $connection;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface
|
||||
* @var \Pterodactyl\Services\DaemonKeys\DaemonKeyDeletionService|\Mockery\Mock
|
||||
*/
|
||||
protected $daemonRepository;
|
||||
protected $keyDeletionService;
|
||||
|
||||
/**
|
||||
* @var \GuzzleHttp\Exception\RequestException
|
||||
*/
|
||||
protected $exception;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Contracts\Repository\SubuserRepositoryInterface
|
||||
* @var \Pterodactyl\Contracts\Repository\SubuserRepositoryInterface|\Mockery\Mock
|
||||
*/
|
||||
protected $repository;
|
||||
|
||||
|
@ -63,11 +54,6 @@ class SubuserDeletionServiceTest extends TestCase
|
|||
*/
|
||||
protected $service;
|
||||
|
||||
/**
|
||||
* @var \Illuminate\Log\Writer
|
||||
*/
|
||||
protected $writer;
|
||||
|
||||
/**
|
||||
* Setup tests.
|
||||
*/
|
||||
|
@ -76,63 +62,46 @@ class SubuserDeletionServiceTest extends TestCase
|
|||
parent::setUp();
|
||||
|
||||
$this->connection = m::mock(ConnectionInterface::class);
|
||||
$this->daemonRepository = m::mock(DaemonServerRepositoryInterface::class);
|
||||
$this->exception = m::mock(RequestException::class);
|
||||
$this->keyDeletionService = m::mock(DaemonKeyDeletionService::class);
|
||||
$this->repository = m::mock(SubuserRepositoryInterface::class);
|
||||
$this->writer = m::mock(Writer::class);
|
||||
|
||||
$this->service = new SubuserDeletionService(
|
||||
$this->connection,
|
||||
$this->daemonRepository,
|
||||
$this->repository,
|
||||
$this->writer
|
||||
$this->keyDeletionService,
|
||||
$this->repository
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that a subuser is deleted correctly.
|
||||
*/
|
||||
public function testSubuserIsDeleted()
|
||||
public function testSubuserIsDeletedIfModelIsPassed()
|
||||
{
|
||||
$subuser = factory(Subuser::class)->make();
|
||||
$subuser->server = factory(Server::class)->make();
|
||||
|
||||
$this->repository->shouldReceive('getWithServer')->with($subuser->id)->once()->andReturn($subuser);
|
||||
$this->connection->shouldReceive('beginTransaction')->withNoArgs()->once()->andReturnNull();
|
||||
$this->repository->shouldReceive('delete')->with($subuser->id)->once()->andReturn(1);
|
||||
|
||||
$this->daemonRepository->shouldReceive('setNode')->with($subuser->server->node_id)->once()->andReturnSelf()
|
||||
->shouldReceive('setAccessServer')->with($subuser->server->uuid)->once()->andReturnSelf()
|
||||
->shouldReceive('setSubuserKey')->with($subuser->daemonSecret, [])->once()->andReturnNull();
|
||||
|
||||
$this->keyDeletionService->shouldReceive('handle')->with($subuser->server_id, $subuser->user_id)->once()->andReturnNull();
|
||||
$this->repository->shouldReceive('delete')->with($subuser->id)->once()->andReturnNull();
|
||||
$this->connection->shouldReceive('commit')->withNoArgs()->once()->andReturnNull();
|
||||
|
||||
$response = $this->service->handle($subuser->id);
|
||||
$this->assertEquals(1, $response);
|
||||
$this->service->handle($subuser);
|
||||
$this->assertTrue(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that an exception caused by the daemon is properly handled.
|
||||
* Test that a subuser is deleted correctly if only the subuser ID is passed.
|
||||
*/
|
||||
public function testExceptionIsThrownIfDaemonConnectionFails()
|
||||
public function testSubuserIsDeletedIfIdPassedInPlaceOfModel()
|
||||
{
|
||||
$subuser = factory(Subuser::class)->make();
|
||||
$subuser->server = factory(Server::class)->make();
|
||||
|
||||
$this->repository->shouldReceive('getWithServer')->with($subuser->id)->once()->andReturn($subuser);
|
||||
$this->repository->shouldReceive('find')->with($subuser->id)->once()->andReturn($subuser);
|
||||
$this->connection->shouldReceive('beginTransaction')->withNoArgs()->once()->andReturnNull();
|
||||
$this->repository->shouldReceive('delete')->with($subuser->id)->once()->andReturn(1);
|
||||
$this->keyDeletionService->shouldReceive('handle')->with($subuser->server_id, $subuser->user_id)->once()->andReturnNull();
|
||||
$this->repository->shouldReceive('delete')->with($subuser->id)->once()->andReturnNull();
|
||||
$this->connection->shouldReceive('commit')->withNoArgs()->once()->andReturnNull();
|
||||
|
||||
$this->daemonRepository->shouldReceive('setNode->setAccessServer->setSubuserKey')->once()->andThrow($this->exception);
|
||||
|
||||
$this->connection->shouldReceive('rollBack')->withNoArgs()->once()->andReturnNull();
|
||||
$this->exception->shouldReceive('getResponse')->withNoArgs()->once()->andReturnNull();
|
||||
$this->writer->shouldReceive('warning')->with($this->exception)->once()->andReturnNull();
|
||||
|
||||
try {
|
||||
$this->service->handle($subuser->id);
|
||||
} catch (DisplayException $exception) {
|
||||
$this->assertEquals(trans('exceptions.daemon_connection_failed', ['code' => 'E_CONN_REFUSED']), $exception->getMessage());
|
||||
}
|
||||
$this->assertTrue(true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,8 +32,10 @@ use Pterodactyl\Models\Subuser;
|
|||
use GuzzleHttp\Exception\RequestException;
|
||||
use Illuminate\Database\ConnectionInterface;
|
||||
use Pterodactyl\Exceptions\DisplayException;
|
||||
use Pterodactyl\Exceptions\PterodactylException;
|
||||
use Pterodactyl\Services\Subusers\SubuserUpdateService;
|
||||
use Pterodactyl\Services\Subusers\PermissionCreationService;
|
||||
use Pterodactyl\Services\DaemonKeys\DaemonKeyProviderService;
|
||||
use Pterodactyl\Contracts\Repository\SubuserRepositoryInterface;
|
||||
use Pterodactyl\Contracts\Repository\PermissionRepositoryInterface;
|
||||
use Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface as DaemonServerRepositoryInterface;
|
||||
|
@ -41,32 +43,37 @@ use Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface as DaemonS
|
|||
class SubuserUpdateServiceTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @var \Illuminate\Database\ConnectionInterface
|
||||
* @var \Illuminate\Database\ConnectionInterface|\Mockery\Mock
|
||||
*/
|
||||
protected $connection;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface
|
||||
* @var \Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface|\Mockery\Mock
|
||||
*/
|
||||
protected $daemonRepository;
|
||||
|
||||
/**
|
||||
* @var \GuzzleHttp\Exception\RequestException
|
||||
* @var \GuzzleHttp\Exception\RequestException|\Mockery\Mock
|
||||
*/
|
||||
protected $exception;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Contracts\Repository\PermissionRepositoryInterface
|
||||
* @var \Pterodactyl\Services\DaemonKeys\DaemonKeyProviderService|\Mockery\Mock
|
||||
*/
|
||||
private $keyProviderService;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Contracts\Repository\PermissionRepositoryInterface|\Mockery\Mock
|
||||
*/
|
||||
protected $permissionRepository;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Services\Subusers\PermissionCreationService
|
||||
* @var \Pterodactyl\Services\Subusers\PermissionCreationService|\Mockery\Mock
|
||||
*/
|
||||
protected $permissionService;
|
||||
|
||||
/**
|
||||
* @var \Pterodactyl\Contracts\Repository\SubuserRepositoryInterface
|
||||
* @var \Pterodactyl\Contracts\Repository\SubuserRepositoryInterface|\Mockery\Mock
|
||||
*/
|
||||
protected $repository;
|
||||
|
||||
|
@ -76,7 +83,7 @@ class SubuserUpdateServiceTest extends TestCase
|
|||
protected $service;
|
||||
|
||||
/**
|
||||
* @var \Illuminate\Log\Writer
|
||||
* @var \Illuminate\Log\Writer|\Mockery\Mock
|
||||
*/
|
||||
protected $writer;
|
||||
|
||||
|
@ -90,6 +97,7 @@ class SubuserUpdateServiceTest extends TestCase
|
|||
$this->connection = m::mock(ConnectionInterface::class);
|
||||
$this->daemonRepository = m::mock(DaemonServerRepositoryInterface::class);
|
||||
$this->exception = m::mock(RequestException::class);
|
||||
$this->keyProviderService = m::mock(DaemonKeyProviderService::class);
|
||||
$this->permissionRepository = m::mock(PermissionRepositoryInterface::class);
|
||||
$this->permissionService = m::mock(PermissionCreationService::class);
|
||||
$this->repository = m::mock(SubuserRepositoryInterface::class);
|
||||
|
@ -97,6 +105,7 @@ class SubuserUpdateServiceTest extends TestCase
|
|||
|
||||
$this->service = new SubuserUpdateService(
|
||||
$this->connection,
|
||||
$this->keyProviderService,
|
||||
$this->daemonRepository,
|
||||
$this->permissionService,
|
||||
$this->permissionRepository,
|
||||
|
@ -115,18 +124,19 @@ class SubuserUpdateServiceTest extends TestCase
|
|||
|
||||
$this->repository->shouldReceive('getWithServer')->with($subuser->id)->once()->andReturn($subuser);
|
||||
$this->connection->shouldReceive('beginTransaction')->withNoArgs()->once()->andReturnNull();
|
||||
$this->permissionRepository->shouldReceive('deleteWhere')->with([
|
||||
['subuser_id', '=', $subuser->id],
|
||||
])->once()->andReturnNull();
|
||||
$this->permissionService->shouldReceive('handle')->with($subuser->id, ['some-permission'])->once()->andReturn(['test:1', 'test:2']);
|
||||
$this->permissionRepository->shouldReceive('deleteWhere')->with([['subuser_id', '=', $subuser->id]])
|
||||
->once()->andReturnNull();
|
||||
$this->permissionService->shouldReceive('handle')->with($subuser->id, ['some-permission'])->once()->andReturnNull();
|
||||
|
||||
$this->keyProviderService->shouldReceive('handle')->with($subuser->server_id, $subuser->user_id, false)
|
||||
->once()->andReturn('test123');
|
||||
$this->daemonRepository->shouldReceive('setNode')->with($subuser->server->node_id)->once()->andReturnSelf()
|
||||
->shouldReceive('setAccessServer')->with($subuser->server->uuid)->once()->andReturnSelf()
|
||||
->shouldReceive('setSubuserKey')->with($subuser->daemonSecret, ['test:1', 'test:2'])->once()->andReturnNull();
|
||||
->shouldReceive('revokeAccessKey')->with('test123')->once()->andReturnNull();
|
||||
|
||||
$this->connection->shouldReceive('commit')->withNoArgs()->once()->andReturnNull();
|
||||
|
||||
$this->service->handle($subuser->id, ['some-permission']);
|
||||
$this->assertTrue(true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -139,11 +149,12 @@ class SubuserUpdateServiceTest extends TestCase
|
|||
|
||||
$this->repository->shouldReceive('getWithServer')->with($subuser->id)->once()->andReturn($subuser);
|
||||
$this->connection->shouldReceive('beginTransaction')->withNoArgs()->once()->andReturnNull();
|
||||
$this->permissionRepository->shouldReceive('deleteWhere')->with([
|
||||
['subuser_id', '=', $subuser->id],
|
||||
])->once()->andReturnNull();
|
||||
$this->permissionService->shouldReceive('handle')->with($subuser->id, [])->once()->andReturn([]);
|
||||
$this->permissionRepository->shouldReceive('deleteWhere')->with([['subuser_id', '=', $subuser->id]])
|
||||
->once()->andReturnNull();
|
||||
$this->permissionService->shouldReceive('handle')->with($subuser->id, [])->once()->andReturnNull();
|
||||
|
||||
$this->keyProviderService->shouldReceive('handle')->with($subuser->server_id, $subuser->user_id, false)
|
||||
->once()->andReturn('test123');
|
||||
$this->daemonRepository->shouldReceive('setNode')->once()->andThrow($this->exception);
|
||||
$this->connection->shouldReceive('rollBack')->withNoArgs()->once()->andReturnNull();
|
||||
$this->writer->shouldReceive('warning')->with($this->exception)->once()->andReturnNull();
|
||||
|
@ -151,8 +162,11 @@ class SubuserUpdateServiceTest extends TestCase
|
|||
|
||||
try {
|
||||
$this->service->handle($subuser->id, []);
|
||||
} catch (DisplayException $exception) {
|
||||
$this->assertEquals(trans('exceptions.daemon_connection_failed', ['code' => 'E_CONN_REFUSED']), $exception->getMessage());
|
||||
} catch (PterodactylException $exception) {
|
||||
$this->assertInstanceOf(DisplayException::class, $exception);
|
||||
$this->assertEquals(trans('exceptions.daemon_connection_failed', [
|
||||
'code' => 'E_CONN_REFUSED',
|
||||
]), $exception->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue