66 lines
1.9 KiB
PHP
66 lines
1.9 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use App\Models\AuditLog;
|
|
use App\Models\Tenant;
|
|
use App\Models\User;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
|
|
uses(RefreshDatabase::class);
|
|
|
|
it('keeps provider connection identity audit payloads aligned across consent and migration flows', function (): void {
|
|
config()->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',
|
|
]);
|
|
}
|
|
});
|