test email signup flow

This commit is contained in:
Yisroel Baum 2026-08-03 20:22:50 +03:00
parent a95903ed05
commit 9945163a2f
Signed by: yisroelbaum
GPG key ID: 0FA60884F75520A9
12 changed files with 631 additions and 0 deletions

View file

@ -5,15 +5,21 @@ namespace Tests\Unit\Http\Controllers;
use App\Auth\UseCases\AuthenticateUser\AuthenticateUser;
use App\Auth\UseCases\CreateSession\CreateSession;
use App\Auth\UseCases\Logout\Logout;
use App\Email\EmailConfirmationToken\UseCases\CreateEmailConfirmationToken;
use App\Http\Controllers\AuthController;
use App\Http\Middleware\AuthMiddleware;
use App\Shared\ValueObject\EmailAddress;
use App\User\CreateUserDto;
use App\User\UseCases\ConfirmUserEmail\ConfirmUserEmail;
use App\User\UseCases\SignupUser\SignupUser;
use DateTimeImmutable;
use DateTimeZone;
use Illuminate\Http\Request;
use PHPUnit\Framework\TestCase;
use Tests\Fakes\FakeClock;
use Tests\Fakes\FakeEmailConfirmationTokenRepository;
use Tests\Fakes\FakeEmailer;
use Tests\Fakes\FakeEmailFactory;
use Tests\Fakes\FakePasswordHasher;
use Tests\Fakes\FakeSessionRepository;
use Tests\Fakes\FakeTokenGenerator;
@ -47,7 +53,32 @@ class AuthControllerTest extends TestCase
)),
);
$logout = new Logout($this->sessionRepository);
$tokenRepository = new FakeEmailConfirmationTokenRepository;
$signupUser = new SignupUser(
$this->userRepository,
new CreateEmailConfirmationToken(
$tokenRepository,
new FakeClock(new DateTimeImmutable(
'2026-07-31T12:00:00',
new DateTimeZone('UTC'),
)),
new FakeTokenGenerator(['email-token']),
),
new FakeEmailer,
new FakeEmailFactory,
);
$confirmUserEmail = new ConfirmUserEmail(
$tokenRepository,
$this->userRepository,
$this->passwordHasher,
new FakeClock(new DateTimeImmutable(
'2026-07-31T12:00:00',
new DateTimeZone('UTC'),
)),
);
$this->controller = new AuthController(
$signupUser,
$confirmUserEmail,
$authenticateUser,
$createSession,
$logout,