# Находка: унаследованные Go-тесты gosqs сломаны форком (2026-10-06) > Статус: подтверждено чтением кода. Меняет ранее данную рекомендацию. ## Факт 1 — тесты не компилируются Все 13 файлов `app/gosqs/*_test.go` импортируют два пакета, которых НЕТ в репо (и никогда не было в git — проверено `git ls-files`, `git log --all`): - `shared-sqs/app/fixtures` (тестовые данные GoAws: `BASE_URL`, `QueueName`, `LOCAL_ENVIRONMENT`, `CreateQueueRequest`, `FullyPopulatedQueue` и др.) - `shared-sqs/app/test` (`GenerateRequestInfo`) Оба — из upstream `github.com/Admiral-Piett/goaws`. ## Факт 2 — даже с восстановленными пакетами тесты ПАДАЮТ Тесты унаследованы от дофоркового GoAws и не адаптированы к мультитенантному форку: 1. **Нет тенанта в контексте.** Все хендлеры начинаются с `t := getTenantFromContext(req); if t == nil { return InvalidClientTokenId }` (напр. `app/gosqs/create_queue.go:44-47`). Тесты вызывают хендлер без `auth.TenantContextKey` в контексте → тенант `nil` → ответ 403 `InvalidClientTokenId`, тогда как тесты ожидают `http.StatusOK` (200). → Любой такой assert падает. 2. **Ключ очереди теперь tenant-scoped.** Код хранит очереди под ключом `{accessKey}:{queueName}` (`tenantQueueKey`, `tenant_helpers.go:20`), а тесты читают `models.SyncQueues.Queues[fixtures.QueueName]` — по «голому» имени, без префикса → ключ не найден (`actualQueue == nil`), assert падает. 3. **URL/ARN содержат tenantID**, а не accountID (`tenantQueueURL`/`tenantQueueARN`) — ожидания тестов про URL/ARN тоже не совпадут. ## Вывод Это **мёртвые тесты**: они не просто не собираются — они тестируют поведение ДО форка и принципиально несовместимы с текущим мультитенантным кодом. Наличие `fixtures`+`test` проблему НЕ решает (будет компилироваться, но краснеть). ## Что это значит для плана - Прежняя рекомендация «сначала восстановить fixtures → зелёные тесты → P1.1» **ошибочна**. Пакеты восстановить можно (исходники upstream получены), но тесты всё равно не пройдут. - Правильный путь: **не воскрешать мёртвые тесты, а написать НОВЫЕ** — для текущего мультитенантного поведения (тенант в контексте, tenant-scoped ключи). Либо удалить унаследованные, либо переписать их в мультитенантном виде. - Пункт P1.1 (per-queue mutex) требует тестов на конкурентный доступ — их надо писать с нуля под текущую архитектуру. ## Источники - `app/gosqs/create_queue.go:44-47` — требование тенанта из контекста. - `app/gosqs/create_queue.go:52` — `key := tenantQueueKey(t.AccessKey, queueName)`. - `app/gosqs/tenant_helpers.go:20` — формат ключа `{accessKey}:{queueName}`. - `app/gosqs/create_queue_test.go:38` — `Queues[fixtures.QueueName]` без префикса. - `git ls-files 'app/fixtures*' 'app/test*'` — пакеты отсутствуют в истории.