Fix failing tests (which caught a bug in the new client query)
This commit is contained in:
parent
82d7fa1c53
commit
4122486468
4 changed files with 32 additions and 7 deletions
|
@ -17,6 +17,11 @@ class RecoveryToken extends Model
|
||||||
*/
|
*/
|
||||||
const UPDATED_AT = null;
|
const UPDATED_AT = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
public $timestamps = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var bool
|
* @var bool
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -266,11 +266,11 @@ class User extends Model implements
|
||||||
* Returns all of the servers that a user can access by way of being the owner of the
|
* Returns all of the servers that a user can access by way of being the owner of the
|
||||||
* server, or because they are assigned as a subuser for that server.
|
* server, or because they are assigned as a subuser for that server.
|
||||||
*
|
*
|
||||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
* @return \Illuminate\Database\Eloquent\Builder
|
||||||
*/
|
*/
|
||||||
public function accessibleServers()
|
public function accessibleServers()
|
||||||
{
|
{
|
||||||
return $this->hasMany(Server::class, 'owner_id')
|
return Server::query()
|
||||||
->select('servers.*')
|
->select('servers.*')
|
||||||
->leftJoin('subusers', 'subusers.server_id', '=', 'servers.id')
|
->leftJoin('subusers', 'subusers.server_id', '=', 'servers.id')
|
||||||
->where(function (Builder $builder) {
|
->where(function (Builder $builder) {
|
||||||
|
|
|
@ -35,7 +35,7 @@ class ClientControllerTest extends ClientApiIntegrationTestCase
|
||||||
$response->assertJsonPath('data.0.attributes.identifier', $servers[0]->uuidShort);
|
$response->assertJsonPath('data.0.attributes.identifier', $servers[0]->uuidShort);
|
||||||
$response->assertJsonPath('data.0.attributes.server_owner', true);
|
$response->assertJsonPath('data.0.attributes.server_owner', true);
|
||||||
$response->assertJsonPath('meta.pagination.total', 1);
|
$response->assertJsonPath('meta.pagination.total', 1);
|
||||||
$response->assertJsonPath('meta.pagination.per_page', config('pterodactyl.paginate.frontend.servers'));
|
$response->assertJsonPath('meta.pagination.per_page', 50);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -54,7 +54,7 @@ class ClientControllerTest extends ClientApiIntegrationTestCase
|
||||||
$this->createServerModel(['user_id' => $users[2]->id]),
|
$this->createServerModel(['user_id' => $users[2]->id]),
|
||||||
];
|
];
|
||||||
|
|
||||||
$response = $this->actingAs($users[0])->getJson('/api/client?filter=all');
|
$response = $this->actingAs($users[0])->getJson('/api/client?type=all');
|
||||||
|
|
||||||
$response->assertOk();
|
$response->assertOk();
|
||||||
$response->assertJsonCount(3, 'data');
|
$response->assertJsonCount(3, 'data');
|
||||||
|
@ -117,7 +117,7 @@ class ClientControllerTest extends ClientApiIntegrationTestCase
|
||||||
'permissions' => [Permission::ACTION_WEBSOCKET_CONNECT],
|
'permissions' => [Permission::ACTION_WEBSOCKET_CONNECT],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$response = $this->actingAs($users[0])->getJson('/api/client?filter=owner');
|
$response = $this->actingAs($users[0])->getJson('/api/client?type=owner');
|
||||||
|
|
||||||
$response->assertOk();
|
$response->assertOk();
|
||||||
$response->assertJsonCount(1, 'data');
|
$response->assertJsonCount(1, 'data');
|
||||||
|
|
|
@ -6,6 +6,8 @@ use Carbon\Carbon;
|
||||||
use Pterodactyl\Models\User;
|
use Pterodactyl\Models\User;
|
||||||
use Illuminate\Http\Response;
|
use Illuminate\Http\Response;
|
||||||
use PragmaRX\Google2FA\Google2FA;
|
use PragmaRX\Google2FA\Google2FA;
|
||||||
|
use Pterodactyl\Models\RecoveryToken;
|
||||||
|
use PHPUnit\Framework\ExpectationFailedException;
|
||||||
|
|
||||||
class TwoFactorControllerTest extends ClientApiIntegrationTestCase
|
class TwoFactorControllerTest extends ClientApiIntegrationTestCase
|
||||||
{
|
{
|
||||||
|
@ -89,11 +91,29 @@ class TwoFactorControllerTest extends ClientApiIntegrationTestCase
|
||||||
'code' => $token,
|
'code' => $token,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$response->assertStatus(Response::HTTP_NO_CONTENT);
|
$response->assertOk();
|
||||||
|
$response->assertJsonPath('object', 'recovery_tokens');
|
||||||
|
|
||||||
$user = $user->refresh();
|
$user = $user->refresh();
|
||||||
|
|
||||||
$this->assertTrue($user->use_totp);
|
$this->assertTrue($user->use_totp);
|
||||||
|
|
||||||
|
$tokens = RecoveryToken::query()->where('user_id', $user->id)->get();
|
||||||
|
$this->assertCount(10, $tokens);
|
||||||
|
$this->assertStringStartsWith('$2y$10$', $tokens[0]->token);
|
||||||
|
|
||||||
|
$tokens = $tokens->pluck('token')->toArray();
|
||||||
|
|
||||||
|
foreach ($response->json('attributes.tokens') as $raw) {
|
||||||
|
foreach ($tokens as $hashed) {
|
||||||
|
if (password_verify($raw, $hashed)) {
|
||||||
|
continue 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new ExpectationFailedException(
|
||||||
|
sprintf('Failed asserting that token [%s] exists as a hashed value in recovery_tokens table.', $raw)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue