46 lines
1.4 KiB
PHP
46 lines
1.4 KiB
PHP
<?php
|
|
|
|
use App\Enums\UserRole;
|
|
use App\Models\User;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Illuminate\Support\Facades\Hash;
|
|
|
|
uses(RefreshDatabase::class);
|
|
|
|
it('creates a verified administrator with the application command', function () {
|
|
$this->artisan('user:create', [
|
|
'--name' => 'admin.bowli',
|
|
'--email' => 'ADMIN@EXAMPLE.COM',
|
|
'--role' => UserRole::ADMIN->value,
|
|
'--locale' => 'fr',
|
|
'--verified' => true,
|
|
])
|
|
->expectsQuestion('Password', 'Strong-password1')
|
|
->expectsQuestion('Confirm password', 'Strong-password1')
|
|
->assertSuccessful();
|
|
|
|
$user = User::query()->where('email', 'admin@example.com')->firstOrFail();
|
|
|
|
expect($user->name)->toBe('admin.bowli')
|
|
->and($user->role)->toBe(UserRole::ADMIN)
|
|
->and($user->locale)->toBe('fr')
|
|
->and($user->email_verified_at)->not->toBeNull()
|
|
->and($user->subscription_expires_at)->toBeNull()
|
|
->and(Hash::check('Strong-password1', $user->password))->toBeTrue();
|
|
});
|
|
|
|
it('rejects duplicate users', function () {
|
|
User::factory()->create([
|
|
'name' => 'existing.user',
|
|
'email' => 'existing@example.com',
|
|
]);
|
|
|
|
$this->artisan('user:create', [
|
|
'--name' => 'existing.user',
|
|
'--email' => 'existing@example.com',
|
|
'--role' => UserRole::USER->value,
|
|
])->assertFailed();
|
|
|
|
expect(User::query()->count())->toBe(1);
|
|
});
|