Get database unit tests back into passing shape
This commit is contained in:
parent
756a21ff04
commit
a5d9faf6b2
4 changed files with 20 additions and 73 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -32,3 +32,4 @@ coverage.xml
|
||||||
resources/lang/locales.js
|
resources/lang/locales.js
|
||||||
resources/assets/pterodactyl/scripts/helpers/ziggy.js
|
resources/assets/pterodactyl/scripts/helpers/ziggy.js
|
||||||
resources/assets/scripts/helpers/ziggy.js
|
resources/assets/scripts/helpers/ziggy.js
|
||||||
|
.phpunit.result.cache
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -51,13 +51,14 @@ class DatabasePasswordServiceTest extends TestCase
|
||||||
*/
|
*/
|
||||||
public function testPasswordIsChanged()
|
public function testPasswordIsChanged()
|
||||||
{
|
{
|
||||||
$model = factory(Database::class)->make();
|
/** @var \Pterodactyl\Models\Database $model */
|
||||||
|
$model = factory(Database::class)->make(['max_connections' => 0]);
|
||||||
|
|
||||||
$this->connection->expects('transaction')->with(m::on(function ($closure) {
|
$this->connection->expects('transaction')->with(m::on(function ($closure) {
|
||||||
return is_null($closure());
|
return is_null($closure());
|
||||||
}));
|
}));
|
||||||
|
|
||||||
$this->dynamic->shouldReceive('set')->with('dynamic', $model->database_host_id)->once()->andReturnNull();
|
$this->dynamic->expects('set')->with('dynamic', $model->database_host_id)->andReturnNull();
|
||||||
|
|
||||||
$this->encrypter->expects('encrypt')->with(m::on(function ($string) {
|
$this->encrypter->expects('encrypt')->with(m::on(function ($string) {
|
||||||
preg_match_all('/[!@+=.^-]/', $string, $matches, PREG_SET_ORDER);
|
preg_match_all('/[!@+=.^-]/', $string, $matches, PREG_SET_ORDER);
|
||||||
|
@ -67,13 +68,13 @@ class DatabasePasswordServiceTest extends TestCase
|
||||||
return true;
|
return true;
|
||||||
}))->andReturn('enc123');
|
}))->andReturn('enc123');
|
||||||
|
|
||||||
$this->repository->shouldReceive('withoutFreshModel')->withNoArgs()->once()->andReturnSelf();
|
$this->repository->expects('withoutFreshModel')->withNoArgs()->andReturnSelf();
|
||||||
$this->repository->shouldReceive('update')->with($model->id, ['password' => 'enc123'])->once()->andReturn(true);
|
$this->repository->expects('update')->with($model->id, ['password' => 'enc123'])->andReturn(true);
|
||||||
|
|
||||||
$this->repository->shouldReceive('dropUser')->with($model->username, $model->remote)->once()->andReturn(true);
|
$this->repository->expects('dropUser')->with($model->username, $model->remote)->andReturn(true);
|
||||||
$this->repository->shouldReceive('createUser')->with($model->username, $model->remote, m::any())->once()->andReturn(true);
|
$this->repository->expects('createUser')->with($model->username, $model->remote, m::any(), 0)->andReturn(true);
|
||||||
$this->repository->shouldReceive('assignUserToDatabase')->with($model->database, $model->username, $model->remote)->once()->andReturn(true);
|
$this->repository->expects('assignUserToDatabase')->with($model->database, $model->username, $model->remote)->andReturn(true);
|
||||||
$this->repository->shouldReceive('flush')->withNoArgs()->once()->andReturn(true);
|
$this->repository->expects('flush')->withNoArgs()->andReturn(true);
|
||||||
|
|
||||||
$response = $this->getService()->handle($model);
|
$response = $this->getService()->handle($model);
|
||||||
$this->assertNotEmpty($response);
|
$this->assertNotEmpty($response);
|
||||||
|
|
|
@ -10,6 +10,7 @@ use Pterodactyl\Services\Databases\DatabaseManagementService;
|
||||||
use Pterodactyl\Services\Databases\DeployServerDatabaseService;
|
use Pterodactyl\Services\Databases\DeployServerDatabaseService;
|
||||||
use Pterodactyl\Contracts\Repository\DatabaseRepositoryInterface;
|
use Pterodactyl\Contracts\Repository\DatabaseRepositoryInterface;
|
||||||
use Pterodactyl\Contracts\Repository\DatabaseHostRepositoryInterface;
|
use Pterodactyl\Contracts\Repository\DatabaseHostRepositoryInterface;
|
||||||
|
use Pterodactyl\Exceptions\Service\Database\NoSuitableDatabaseHostException;
|
||||||
|
|
||||||
class DeployServerDatabaseServiceTest extends TestCase
|
class DeployServerDatabaseServiceTest extends TestCase
|
||||||
{
|
{
|
||||||
|
@ -51,16 +52,9 @@ class DeployServerDatabaseServiceTest extends TestCase
|
||||||
*/
|
*/
|
||||||
public function testNonRandomFoundHost($limit, $count)
|
public function testNonRandomFoundHost($limit, $count)
|
||||||
{
|
{
|
||||||
config()->set('pterodactyl.client_features.databases.allow_random', false);
|
|
||||||
|
|
||||||
$server = factory(Server::class)->make(['database_limit' => $limit]);
|
$server = factory(Server::class)->make(['database_limit' => $limit]);
|
||||||
$model = factory(Database::class)->make();
|
$model = factory(Database::class)->make();
|
||||||
|
|
||||||
$this->repository->shouldReceive('findCountWhere')
|
|
||||||
->once()
|
|
||||||
->with([['server_id', '=', $server->id]])
|
|
||||||
->andReturn($count);
|
|
||||||
|
|
||||||
$this->databaseHostRepository->shouldReceive('setColumns->findWhere')
|
$this->databaseHostRepository->shouldReceive('setColumns->findWhere')
|
||||||
->once()
|
->once()
|
||||||
->with([['node_id', '=', $server->node_id]])
|
->with([['node_id', '=', $server->node_id]])
|
||||||
|
@ -68,7 +62,7 @@ class DeployServerDatabaseServiceTest extends TestCase
|
||||||
|
|
||||||
$this->managementService->shouldReceive('create')
|
$this->managementService->shouldReceive('create')
|
||||||
->once()
|
->once()
|
||||||
->with($server->id, [
|
->with($server, [
|
||||||
'database_host_id' => $model->id,
|
'database_host_id' => $model->id,
|
||||||
'database' => 'testdb',
|
'database' => 'testdb',
|
||||||
'remote' => null,
|
'remote' => null,
|
||||||
|
@ -83,25 +77,20 @@ class DeployServerDatabaseServiceTest extends TestCase
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test that an exception is thrown if in non-random mode and no host is found.
|
* Test that an exception is thrown if in non-random mode and no host is found.
|
||||||
*
|
|
||||||
* @expectedException \Pterodactyl\Exceptions\Service\Database\NoSuitableDatabaseHostException
|
|
||||||
*/
|
*/
|
||||||
public function testNonRandomNoHost()
|
public function testNonRandomNoHost()
|
||||||
{
|
{
|
||||||
config()->set('pterodactyl.client_features.databases.allow_random', false);
|
$this->expectException(NoSuitableDatabaseHostException::class);
|
||||||
|
|
||||||
$server = factory(Server::class)->make(['database_limit' => 1]);
|
$server = factory(Server::class)->make(['database_limit' => 1]);
|
||||||
|
|
||||||
$this->repository->shouldReceive('findCountWhere')
|
|
||||||
->once()
|
|
||||||
->with([['server_id', '=', $server->id]])
|
|
||||||
->andReturn(0);
|
|
||||||
|
|
||||||
$this->databaseHostRepository->shouldReceive('setColumns->findWhere')
|
$this->databaseHostRepository->shouldReceive('setColumns->findWhere')
|
||||||
->once()
|
->once()
|
||||||
->with([['node_id', '=', $server->node_id]])
|
->with([['node_id', '=', $server->node_id]])
|
||||||
->andReturn(collect());
|
->andReturn(collect());
|
||||||
|
|
||||||
|
$this->databaseHostRepository->expects('setColumns->all')->withNoArgs()->andReturn(collect());
|
||||||
|
|
||||||
$this->getService()->handle($server, []);
|
$this->getService()->handle($server, []);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -113,11 +102,6 @@ class DeployServerDatabaseServiceTest extends TestCase
|
||||||
$server = factory(Server::class)->make(['database_limit' => 1]);
|
$server = factory(Server::class)->make(['database_limit' => 1]);
|
||||||
$model = factory(Database::class)->make();
|
$model = factory(Database::class)->make();
|
||||||
|
|
||||||
$this->repository->shouldReceive('findCountWhere')
|
|
||||||
->once()
|
|
||||||
->with([['server_id', '=', $server->id]])
|
|
||||||
->andReturn(0);
|
|
||||||
|
|
||||||
$this->databaseHostRepository->shouldReceive('setColumns->findWhere')
|
$this->databaseHostRepository->shouldReceive('setColumns->findWhere')
|
||||||
->once()
|
->once()
|
||||||
->with([['node_id', '=', $server->node_id]])
|
->with([['node_id', '=', $server->node_id]])
|
||||||
|
@ -129,7 +113,7 @@ class DeployServerDatabaseServiceTest extends TestCase
|
||||||
|
|
||||||
$this->managementService->shouldReceive('create')
|
$this->managementService->shouldReceive('create')
|
||||||
->once()
|
->once()
|
||||||
->with($server->id, [
|
->with($server, [
|
||||||
'database_host_id' => $model->id,
|
'database_host_id' => $model->id,
|
||||||
'database' => 'testdb',
|
'database' => 'testdb',
|
||||||
'remote' => null,
|
'remote' => null,
|
||||||
|
@ -144,60 +128,22 @@ class DeployServerDatabaseServiceTest extends TestCase
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test that an exception is thrown when no host is found and random is allowed.
|
* Test that an exception is thrown when no host is found and random is allowed.
|
||||||
*
|
|
||||||
* @expectedException \Pterodactyl\Exceptions\Service\Database\NoSuitableDatabaseHostException
|
|
||||||
*/
|
*/
|
||||||
public function testRandomNoHost()
|
public function testRandomNoHost()
|
||||||
{
|
{
|
||||||
|
$this->expectException(NoSuitableDatabaseHostException::class);
|
||||||
|
|
||||||
$server = factory(Server::class)->make(['database_limit' => 1]);
|
$server = factory(Server::class)->make(['database_limit' => 1]);
|
||||||
|
|
||||||
$this->repository->shouldReceive('findCountWhere')
|
$this->databaseHostRepository->expects('setColumns->findWhere')
|
||||||
->once()
|
|
||||||
->with([['server_id', '=', $server->id]])
|
|
||||||
->andReturn(0);
|
|
||||||
|
|
||||||
$this->databaseHostRepository->shouldReceive('setColumns->findWhere')
|
|
||||||
->once()
|
|
||||||
->with([['node_id', '=', $server->node_id]])
|
->with([['node_id', '=', $server->node_id]])
|
||||||
->andReturn(collect());
|
->andReturn(collect());
|
||||||
|
|
||||||
$this->databaseHostRepository->shouldReceive('setColumns->all')
|
$this->databaseHostRepository->expects('setColumns->all')->withNoArgs()->andReturn(collect());
|
||||||
->once()
|
|
||||||
->andReturn(collect());
|
|
||||||
|
|
||||||
$this->getService()->handle($server, []);
|
$this->getService()->handle($server, []);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Test that a server over the database limit throws an exception.
|
|
||||||
*
|
|
||||||
* @dataProvider databaseExceedingLimitDataProvider
|
|
||||||
* @expectedException \Pterodactyl\Exceptions\Service\Database\TooManyDatabasesException
|
|
||||||
*/
|
|
||||||
public function testServerOverDatabaseLimit($limit, $count)
|
|
||||||
{
|
|
||||||
$server = factory(Server::class)->make(['database_limit' => $limit]);
|
|
||||||
|
|
||||||
$this->repository->shouldReceive('findCountWhere')
|
|
||||||
->once()
|
|
||||||
->with([['server_id', '=', $server->id]])
|
|
||||||
->andReturn($count);
|
|
||||||
|
|
||||||
$this->getService()->handle($server, []);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test that an exception is thrown if the feature is not enabled.
|
|
||||||
*
|
|
||||||
* @expectedException \Pterodactyl\Exceptions\Service\Database\DatabaseClientFeatureNotEnabledException
|
|
||||||
*/
|
|
||||||
public function testFeatureNotEnabled()
|
|
||||||
{
|
|
||||||
config()->set('pterodactyl.client_features.databases.enabled', false);
|
|
||||||
|
|
||||||
$this->getService()->handle(factory(Server::class)->make(), []);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provide limits and current database counts for testing.
|
* Provide limits and current database counts for testing.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue