actingAs($user); Filament::setTenant($tenant, true); $group = EntraGroup::factory()->for($tenant)->create([ 'entra_id' => '11111111-1111-1111-1111-111111111111', 'display_name' => 'Policy Operators', ]); $resolved = app(EntraGroupReferenceResolver::class)->resolve(new ReferenceDescriptor( referenceClass: ReferenceClass::Group, rawIdentifier: (string) $group->entra_id, tenantId: (int) $tenant->getKey(), )); expect($resolved->state)->toBe(ReferenceResolutionState::Resolved) ->and($resolved->isLinkable())->toBeTrue() ->and($resolved->linkTarget?->actionLabel)->toBe('View group'); }); it('suppresses group links when the actor is outside the tenant scope', function (): void { [$owner, $tenant] = createUserWithTenant(role: 'owner'); $group = EntraGroup::factory()->for($tenant)->create([ 'entra_id' => '22222222-2222-2222-2222-222222222222', 'display_name' => 'Device Targets', ]); $outsider = \App\Models\User::factory()->create(); $this->actingAs($outsider); Filament::setTenant($tenant, true); $resolved = app(EntraGroupReferenceResolver::class)->resolve(new ReferenceDescriptor( referenceClass: ReferenceClass::Group, rawIdentifier: (string) $group->entra_id, tenantId: (int) $tenant->getKey(), )); expect($resolved->state)->toBe(ReferenceResolutionState::Inaccessible) ->and($resolved->linkTarget)->toBeNull(); });