2020-10-11 01:06:42 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Pterodactyl\Tests\Integration\Http\Controllers\Admin;
|
|
|
|
|
|
|
|
use Illuminate\Support\Str;
|
|
|
|
use Illuminate\Http\Request;
|
|
|
|
use Pterodactyl\Models\User;
|
|
|
|
use Pterodactyl\Models\Subuser;
|
|
|
|
use Illuminate\Pagination\LengthAwarePaginator;
|
|
|
|
use Pterodactyl\Http\Controllers\Admin\UserController;
|
2021-01-23 20:09:16 +00:00
|
|
|
use Pterodactyl\Tests\Integration\IntegrationTestCase;
|
2020-10-11 01:06:42 +00:00
|
|
|
|
|
|
|
class UserControllerTest extends IntegrationTestCase
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Test that the index route controller for the user listing returns the expected user
|
|
|
|
* data with the number of servers they are assigned to, and the number of servers they
|
|
|
|
* are a subuser of.
|
|
|
|
*
|
|
|
|
* @see https://github.com/pterodactyl/panel/issues/2469
|
|
|
|
*/
|
|
|
|
public function testIndexReturnsExpectedData()
|
|
|
|
{
|
2022-10-14 16:59:20 +00:00
|
|
|
$unique = Str::random();
|
2020-10-11 01:06:42 +00:00
|
|
|
$users = [
|
2021-01-23 20:09:16 +00:00
|
|
|
User::factory()->create(['username' => $unique . '_1']),
|
|
|
|
User::factory()->create(['username' => $unique . '_2']),
|
2020-10-11 01:06:42 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
$servers = [
|
|
|
|
$this->createServerModel(['owner_id' => $users[0]->id]),
|
|
|
|
$this->createServerModel(['owner_id' => $users[0]->id]),
|
|
|
|
$this->createServerModel(['owner_id' => $users[0]->id]),
|
|
|
|
$this->createServerModel(['owner_id' => $users[1]->id]),
|
|
|
|
];
|
|
|
|
|
|
|
|
Subuser::query()->forceCreate(['server_id' => $servers[0]->id, 'user_id' => $users[1]->id]);
|
|
|
|
Subuser::query()->forceCreate(['server_id' => $servers[1]->id, 'user_id' => $users[1]->id]);
|
|
|
|
|
|
|
|
/** @var \Pterodactyl\Http\Controllers\Admin\UserController $controller */
|
|
|
|
$controller = $this->app->make(UserController::class);
|
|
|
|
|
2022-10-14 16:59:20 +00:00
|
|
|
$request = Request::create('/admin/users?filter[username]=' . $unique);
|
2020-10-11 01:06:42 +00:00
|
|
|
$this->app->instance(Request::class, $request);
|
|
|
|
|
|
|
|
$data = $controller->index($request)->getData();
|
|
|
|
$this->assertArrayHasKey('users', $data);
|
|
|
|
$this->assertInstanceOf(LengthAwarePaginator::class, $data['users']);
|
|
|
|
|
|
|
|
/** @var \Pterodactyl\Models\User[] $response */
|
|
|
|
$response = $data['users']->items();
|
|
|
|
$this->assertCount(2, $response);
|
|
|
|
$this->assertInstanceOf(User::class, $response[0]);
|
2021-01-23 20:09:16 +00:00
|
|
|
$this->assertSame(3, (int) $response[0]->servers_count);
|
|
|
|
$this->assertSame(0, (int) $response[0]->subuser_of_count);
|
|
|
|
$this->assertSame(1, (int) $response[1]->servers_count);
|
|
|
|
$this->assertSame(2, (int) $response[1]->subuser_of_count);
|
2020-10-11 01:06:42 +00:00
|
|
|
}
|
|
|
|
}
|