$odataType, 'groupId' => $groupId, ]; if (is_string($displayName) && $displayName !== '') { $target['group_display_name'] = $displayName; } return ['target' => $target]; } test('restore wizard create page renders without touching graph', function () { $tenant = Tenant::factory()->create(); [$user] = createUserWithTenant($tenant); bindFailHardGraphClient(); $this->actingAs($user) ->get(RestoreRunResource::getUrl('create', tenant: $tenant)) ->assertOk() ->assertSee('Create restore run') ->assertSee('Select Backup Set'); }); test('restore wizard group mapping renders DB-only with manual GUID UX', function () { $tenant = Tenant::factory()->create(); [$user] = createUserWithTenant($tenant); $backupSet = BackupSet::factory()->create([ 'tenant_id' => $tenant->getKey(), 'name' => 'group-mapping-backup-set', ]); $groupId = '11111111-2222-3333-4444-555555555555'; $expectedMasked = '…'.substr($groupId, -8); BackupItem::factory()->create([ 'tenant_id' => $tenant->getKey(), 'backup_set_id' => $backupSet->getKey(), 'assignments' => [ makeAssignment('#microsoft.graph.groupAssignmentTarget', $groupId, 'Example Group'), ], ]); bindFailHardGraphClient(); $url = RestoreRunResource::getUrl('create', tenant: $tenant).'?backup_set_id='.$backupSet->getKey(); $this->actingAs($user) ->get($url) ->assertOk() ->assertSee($expectedMasked) ->assertSee('Paste the target Entra ID group Object ID') ->assertSee('Use SKIP to omit the assignment.'); });