create([ 'codigo' => RoleCode::Scanner->value, 'nombre' => 'Scanner', ]); $tenant = Tenant::query()->create([ 'codigo' => 'acme', 'nombre' => 'Acme', 'dominio' => 'acme.test', ]); $user = User::factory()->create([ 'email' => 'scanner@example.com', 'password' => Hash::make('secret123'), 'rol_codigo' => $role->codigo, 'tenant_codigo' => $tenant->codigo, ]); $response = $this->postJson('/api/v1/scanner/login', [ 'email' => ' SCANNER@EXAMPLE.COM ', 'password' => 'secret123', ]); $response ->assertOk() ->assertJsonPath('user.id', $user->id) ->assertJsonPath('user.rol_codigo', RoleCode::Scanner->value) ->assertJsonPath('token_type', 'Bearer'); $this->assertSame(['scanner'], $user->tokens()->sole()->abilities); } public function test_it_rejects_a_non_scanner_user(): void { $role = Role::query()->create([ 'codigo' => RoleCode::User->value, 'nombre' => 'Usuario', ]); $user = User::factory()->create([ 'email' => 'customer@example.com', 'password' => Hash::make('secret123'), 'rol_codigo' => $role->codigo, ]); $this->postJson('/api/v1/scanner/login', [ 'email' => $user->email, 'password' => 'secret123', ])->assertUnprocessable()->assertJsonValidationErrors(['email']); } }