set('graph.client_id', 'platform-client-id'); config()->set('graph.client_secret', 'platform-client-secret'); $user = User::factory()->create(); $tenant = Tenant::factory()->create([ 'tenant_id' => 'identity-audit-tenant-id', ]); [$user, $tenant] = createUserWithTenant(tenant: $tenant, user: $user, role: 'owner', ensureDefaultMicrosoftProviderConnection: false); $response = $this->actingAs($user)->get(route('admin.consent.start', [ 'tenant' => $tenant->external_id, ])); $response->assertRedirect(); $state = session('tenant_onboard_state'); $this->get(route('admin.consent.callback', [ 'tenant' => $tenant->tenant_id, 'state' => $state, 'admin_consent' => 'True', ]))->assertSuccessful(); $this->artisan('tenantpilot:provider-connections:classify', ['--write' => true]) ->assertSuccessful(); $logs = AuditLog::query() ->where('tenant_id', (int) $tenant->getKey()) ->whereIn('action', [ 'provider_connection.consent_started', 'provider_connection.consent_result', 'provider_connection.migration_classification_applied', ]) ->orderBy('id') ->get(); expect($logs)->toHaveCount(3); foreach ($logs as $log) { expect($log->resource_type)->toBe('provider_connection') ->and($log->resource_id)->not->toBeNull(); $metadata = is_array($log->metadata) ? $log->metadata : []; expect($metadata)->toHaveKeys([ 'provider_connection_id', 'provider', 'connection_type', 'source', ]); } });