authentikate/tests/Feature/UserUuidTest.php
Javier Feliz 6a3971257a
Some checks failed
linter / quality (push) Successful in 6m36s
tests / ci (push) Has been cancelled
Update dockerfile
2025-08-02 19:28:34 -04:00

79 lines
2.2 KiB
PHP

<?php
use App\Models\User;
use Illuminate\Support\Str;
uses(\Illuminate\Foundation\Testing\RefreshDatabase::class);
test('user gets UUID automatically when created', function () {
$user = User::factory()->create();
expect($user->uuid)->not->toBeNull();
expect(Str::isUuid((string) $user->uuid))->toBeTrue();
});
test('user UUID is unique', function () {
$user1 = User::factory()->create();
$user2 = User::factory()->create();
expect($user1->uuid)->not->toBe($user2->uuid);
});
test('user UUID cannot be duplicated', function () {
$user1 = User::factory()->create();
expect(function () use ($user1) {
User::create([
'name' => 'Test User',
'email' => 'test2@example.com',
'password' => bcrypt('password'),
'uuid' => $user1->uuid
]);
})->toThrow(\Illuminate\Database\QueryException::class);
});
test('user UUID can be manually set during creation', function () {
$customUuid = Str::uuid();
$user = User::create([
'name' => 'Test User',
'email' => 'test@example.com',
'password' => bcrypt('password'),
'uuid' => $customUuid
]);
expect($user->uuid)->toBe($customUuid);
});
test('user UUID is not overwritten if already set', function () {
$customUuid = Str::uuid();
$user = new User([
'name' => 'Test User',
'email' => 'test@example.com',
'password' => bcrypt('password'),
'uuid' => $customUuid
]);
$user->save();
expect($user->uuid)->toBe($customUuid);
});
test('existing users can have UUIDs added via migration', function () {
// This test verifies that the migration properly adds UUIDs to existing users
// We can't easily test the migration directly, but we can test that users
// created without UUIDs in the factory would get them via the boot method
$user = new User([
'name' => 'Test User',
'email' => 'test@example.com',
'password' => bcrypt('password'),
]);
// Don't set UUID, let the boot method handle it
$user->save();
expect($user->uuid)->not->toBeNull();
expect(Str::isUuid((string) $user->uuid))->toBeTrue();
});