test(import): Task 9 code-review — cross-tenant тест ImportController::show
Code-review Task 9 (🟡): добавлен тест защиты show() — пользователь одного тенанта получает 403 при запросе import_log другого тенанта (покрывает abort_if defense-in-depth в ImportController::show). phpstan-baseline регенерирован — инкремент count ложного TestCall-срабатывания (квирк 25). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -127,3 +127,16 @@ test('resolve отвергает несуществующий slug', function ()
|
||||
'mappings' => [['status_ru' => 'Архив', 'slug' => 'нет-такого']],
|
||||
])->assertStatus(422);
|
||||
});
|
||||
|
||||
test('GET /api/imports/{id} отвергает import_log чужого тенанта (403)', function (): void {
|
||||
$otherTenant = Tenant::factory()->create();
|
||||
$otherUser = User::factory()->for($otherTenant)->create();
|
||||
$foreignLog = ImportLog::factory()->create([
|
||||
'tenant_id' => $otherTenant->id,
|
||||
'user_id' => $otherUser->id,
|
||||
]);
|
||||
|
||||
// Авторизован пользователь $this->tenant; запрашиваем чужой import_log.
|
||||
// abort_if(tenant_id mismatch, 403) в ImportController::show — defense-in-depth.
|
||||
$this->getJson("/api/imports/{$foreignLog->id}")->assertStatus(403);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user