Fix failing tests (which caught a bug in the new client query)

This commit is contained in:
Dane Everitt 2020-07-09 21:32:31 -07:00
parent 82d7fa1c53
commit 4122486468
No known key found for this signature in database
GPG key ID: EEA66103B3D71F53
4 changed files with 32 additions and 7 deletions

View file

@ -17,6 +17,11 @@ class RecoveryToken extends Model
*/
const UPDATED_AT = null;
/**
* @var bool
*/
public $timestamps = true;
/**
* @var bool
*/

View file

@ -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
* 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()
{
return $this->hasMany(Server::class, 'owner_id')
return Server::query()
->select('servers.*')
->leftJoin('subusers', 'subusers.server_id', '=', 'servers.id')
->where(function (Builder $builder) {

View file

@ -35,7 +35,7 @@ class ClientControllerTest extends ClientApiIntegrationTestCase
$response->assertJsonPath('data.0.attributes.identifier', $servers[0]->uuidShort);
$response->assertJsonPath('data.0.attributes.server_owner', true);
$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]),
];
$response = $this->actingAs($users[0])->getJson('/api/client?filter=all');
$response = $this->actingAs($users[0])->getJson('/api/client?type=all');
$response->assertOk();
$response->assertJsonCount(3, 'data');
@ -117,7 +117,7 @@ class ClientControllerTest extends ClientApiIntegrationTestCase
'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->assertJsonCount(1, 'data');

View file

@ -6,6 +6,8 @@ use Carbon\Carbon;
use Pterodactyl\Models\User;
use Illuminate\Http\Response;
use PragmaRX\Google2FA\Google2FA;
use Pterodactyl\Models\RecoveryToken;
use PHPUnit\Framework\ExpectationFailedException;
class TwoFactorControllerTest extends ClientApiIntegrationTestCase
{
@ -89,11 +91,29 @@ class TwoFactorControllerTest extends ClientApiIntegrationTestCase
'code' => $token,
]);
$response->assertStatus(Response::HTTP_NO_CONTENT);
$response->assertOk();
$response->assertJsonPath('object', 'recovery_tokens');
$user = $user->refresh();
$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)
);
}
}
/**