clupilot/app/tests/Feature/Auth/SignupPageTest.php

84 lines
2.7 KiB
PHP

<?php
use App\Models\User;
use function Pest\Laravel\get;
use function Pest\Livewire\livewire;
it('renders the signup page with template chrome', function () {
$response = get(route('register'));
$response->assertStatus(200)
->assertSeeText('14 Tage kostenlos testen')
->assertSeeText('Keine Kreditkarte')
->assertSeeText('Mit Google fortfahren')
->assertSeeText('Mit GitHub fortfahren')
->assertSeeText('Workspace-Name')
->assertSeeText('SSH-First Setup')
->assertSeeText('Stündliche Backups inklusive')
->assertSeeText('Brute-Force-Defense aktiv')
->assertSee('clu-stepper', false)
->assertSee('clu-pw-meter', false)
->assertSee('clu-trial-card', false)
->assertSee('clu-benefit-list', false);
});
it('previews a workspace slug', function () {
livewire('pages.auth.register')
->set('workspace', 'Acme Cluster GmbH')
->assertSeeText('acme-cluster-gmbh');
});
it('rejects an empty form', function () {
livewire('pages.auth.register')
->set('firstname', '')
->set('lastname', '')
->set('email', '')
->set('workspace', '')
->set('password', '')
->set('terms', false)
->call('register')
->assertHasErrors(['firstname', 'lastname', 'email', 'workspace', 'password', 'terms']);
});
it('rejects passwords shorter than 10 chars', function () {
livewire('pages.auth.register')
->set('firstname', 'Marie')
->set('lastname', 'Weber')
->set('email', 'marie@example.test')
->set('workspace', 'Acme')
->set('password', 'short')
->set('terms', true)
->call('register')
->assertHasErrors('password');
});
it('creates a user and logs them in', function () {
livewire('pages.auth.register')
->set('firstname', 'Marie')
->set('lastname', 'Weber')
->set('email', 'marie@example.test')
->set('workspace', 'Acme Cluster')
->set('password', 'longenoughpw!1')
->set('terms', true)
->call('register')
->assertHasNoErrors()
->assertRedirect(route('dashboard', absolute: false));
expect(User::where('email', 'marie@example.test')->exists())->toBeTrue();
expect(auth()->check())->toBeTrue();
});
it('rejects a duplicate email', function () {
User::factory()->create(['email' => 'taken@example.test']);
livewire('pages.auth.register')
->set('firstname', 'Marie')
->set('lastname', 'Weber')
->set('email', 'taken@example.test')
->set('workspace', 'Acme')
->set('password', 'longenoughpw!1')
->set('terms', true)
->call('register')
->assertHasErrors('email');
});