getJson('/api/v1/support/tenants'); $response->assertStatus(401); } public function test_support_resources_allow_super_admin_tokens(): void { $user = User::factory()->create([ 'role' => 'super_admin', ]); Tenant::factory()->create(); Sanctum::actingAs($user, ['support-admin', 'support:read']); $response = $this->getJson('/api/v1/support/tenants'); $response->assertOk() ->assertJsonStructure(['data', 'meta']); } public function test_support_resource_update_rejects_invalid_fields(): void { $user = User::factory()->create([ 'role' => 'super_admin', ]); $tenant = Tenant::factory()->create(); Sanctum::actingAs($user, ['support-admin', 'support:write']); $response = $this->patchJson('/api/v1/support/tenants/'.$tenant->id, [ 'data' => [ 'name' => 'Unauthorized', ], ]); $response->assertStatus(422) ->assertJsonPath('error.code', 'support_invalid_fields'); } public function test_support_data_export_create_sets_user_and_dispatches_job(): void { $user = User::factory()->create([ 'role' => 'super_admin', ]); $tenant = Tenant::factory()->create(); Bus::fake(); Sanctum::actingAs($user, ['support-admin', 'support:ops']); $response = $this->postJson('/api/v1/support/data-exports', [ 'data' => [ 'scope' => 'tenant', 'tenant_id' => $tenant->id, 'include_media' => true, ], ]); $response->assertCreated() ->assertJsonPath('data.status', 'pending') ->assertJsonPath('data.user_id', $user->id) ->assertJsonPath('data.event_id', null); Bus::assertDispatched(\App\Jobs\GenerateDataExport::class); } }