52 lines
1.7 KiB
PHP
52 lines
1.7 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Tests\Feature\SchoolCore;
|
|
|
|
use App\Domain\SchoolCore\Context\SchoolContext;
|
|
use App\Http\Middleware\ResolveSchoolContext;
|
|
use Illuminate\Contracts\Auth\Authenticatable;
|
|
use Illuminate\Http\Request;
|
|
use Orchestra\Testbench\TestCase;
|
|
|
|
final class ResolveSchoolContextMiddlewareTest extends TestCase
|
|
{
|
|
protected function getPackageProviders($app): array
|
|
{
|
|
return [\App\Providers\SchoolContextServiceProvider::class];
|
|
}
|
|
|
|
public function test_it_attaches_context_to_request(): void
|
|
{
|
|
$request = Request::create('/test', 'GET');
|
|
$request->setUserResolver(fn () => new MiddlewareFakeUser(5, 88));
|
|
|
|
$middleware = app(ResolveSchoolContext::class);
|
|
|
|
$response = $middleware->handle($request, function (Request $request) {
|
|
return response()->json([
|
|
'school_id' => $request->attributes->get(SchoolContext::class)->schoolId,
|
|
]);
|
|
});
|
|
|
|
$this->assertSame(200, $response->getStatusCode());
|
|
$this->assertStringContainsString('5', $response->getContent());
|
|
}
|
|
}
|
|
|
|
final class MiddlewareFakeUser implements Authenticatable
|
|
{
|
|
public function __construct(public int $school_id, private int $id)
|
|
{
|
|
}
|
|
|
|
public function getAuthIdentifierName(): string { return 'id'; }
|
|
public function getAuthIdentifier(): mixed { return $this->id; }
|
|
public function getAuthPassword(): string { return ''; }
|
|
public function getAuthPasswordName(): string { return 'password'; }
|
|
public function getRememberToken(): ?string { return null; }
|
|
public function setRememberToken($value): void {}
|
|
public function getRememberTokenName(): string { return 'remember_token'; }
|
|
}
|