7.7 KiB
7.7 KiB
Test Cases — meta (sector/issuer enrichment, Snapshot-инварианты)
Cases добавляют данные/порядок событий/oracle сверх Scenarios Delta Specs
portfolio-view (PVΔ). Требуют управляемое время обхода (час) и управляемые
ответы T-Bank (integration, configured HTTP tests, моки по proto).
TC-META-002 Token-отказ при получении сектора/бренда не маскируется fallback
- Verifies:
portfolio-view—Свежесть и fallback полного Portfolio Snapshot(исключение token) / Scenario «Отказ token при получении бренда» - Risk / Priority: высокий / high — invalid token, замаскированный старым Snapshot, скрывает от владельца потерю доступа
- Preconditions: сохранённый полный Snapshot старше 60 минут; подключение с invalid token; GET выполняется после обхода
- Test Data: мок T-Bank: GetPortfolio/GetPositions — PERMISSION_DENIED; типизированный инструмент (sector) — UNAUTHENTICATED
- Steps:
- Дождаться обхода (или вызвать принудительно в тесте).
- GET Portfolio пользователем.
- Повторить с отказом только на
GetAssetBy(бренд), финансы успешны.
- Expected Results: шаг 2 —
400Problem Details, codeINVALID_TBANK_TOKEN, fallback Snapshot не возвращается. Шаг 3 — тот же400/INVALID_TBANK_TOKEN: отказ token на любом звене сектора/бренда приравнен к отказу обхода (требование «Свежесть и fallback полного Portfolio Snapshot»), хотя финансы могли быть получены. - Automation Candidate: yes (integration)
TC-META-003 Суточный цикл обновления сектора
- Verifies:
portfolio-view—Обновление сектора и эмитента/ Scenario «Обход через 24 часа» + 24h-отсчёт таблицыРезультат получения сектора и эмитента - Risk / Priority: высокий / high — ошибка отсчёта даёт вечное старое значение или вечный ре-fetch
- Preconditions: управляемое время обхода (шаг «час»); позиция P; T-Bank меняет сектор P на
financialсразу после T0 - Steps (линейная шкала):
- T0: обход — успех,
sector: energy(отсчёт с T0). - T0+1h … T0+23h: обходы — обращений за сектором нет.
- T0+24h: обход запрашивает сектор, T-Bank отвечает UNAVAILABLE.
- T0+25h: обход запрашивает сектор (ошибка не сбросила отсчёт), T-Bank отвечает
financial. - T0+26h … T0+48h: обходы.
- T0+49h: обход.
- T0: обход — успех,
- Expected Results:
- Шаги 2:
sector: energy. - Шаг 3:
sector: energy(последнее известное), отсчёт не сброшен (идёт от T0) — поэтому шаг 4 снова обращается. - Шаг 4:
sector: financial, отсчёт с T0+25h. - Шаги 5:
sector: financial, обращений нет (T0+25h+24h = T0+49h). - Шаг 6: первое обращение после успеха — сектор запрошен.
- Шаги 2:
- Automation Candidate: yes (integration, управляемое время)
TC-META-004 Четыре исхода получения: поле и отсчёт 24 часов
- Verifies:
portfolio-view—Результат получения сектора и эмитента(каждая строка таблицы) / Scenarios «Ответ без значения заменяет известное значение», «"Не найдено" перезапускает отсчёт», «Ответ о другом инструменте», «Недоступность T-Bank сохраняет известное значение», «Значение ещё не известно» - Risk / Priority: высокий / high — таблица — ядро нового контракта; классификация NOT_FOUND решает поведение
- Preconditions: 4 позиции P1–P4, у каждой известен
sector: energy(успех в T0); управляемое время; моки по proto - Test Data: P1 → ответ со значением
it; P2 → NOT_FOUND (и вариант «пустой объект без sector» отдельным прогоном); P3 → ответ с чужимasset_uid/UID; P4 → UNAVAILABLE (timeout) - Steps:
- В T0+24h провести обход со всеми четырьмя моками.
- GET Portfolio, прочитать
sectorP1–P4. - В T0+25h: P2 теперь отвечает значением
financial; P3 и P4 — тоже успехfinancial. - Обход T0+25h; GET; прочитать
sector. - Обход T0+48h: P1 и P2 — успех
financial; P3 и P4 —energy.
- Expected Results:
- Шаг 2: P1
it(отсчёт сброшен на T0+24h), P2null(сброшен на T0+24h), P3energy(не сброшен, retry), P4energy(не сброшен, retry). - Шаг 4: P2 — по правилу
Обновление сектора и эмитентазначение появляется только при обходе ≥24 ч после «не найдено» (T0+24h), поэтому в T0+25h остаётсяnull; P3 и P4 —financial(получено, сброс отсчёта на T0+25h). - Шаг 5: P1 — запрошен снова (отсчёт сброшен в T0+24h, T0+48h ≥ 24 ч), становится
financial; P2 — запрошен (≥24 ч от «не найдено»), становитсяfinancial; P3 и P4 — не запрашиваются (последний успех T0+25h, T0+48h < T0+49h),sector: financialостаётся.
- Шаг 2: P1
- Automation Candidate: yes (integration; P2-ветка — минимальное воспроизведение перезапуска отсчёта)
TC-META-005 Смена и удаление подключения: sector/brand не протекают
- Verifies:
portfolio-view—Свежесть и fallback(«прежние личные datasets недоступны…»), failure-model F11 - Risk / Priority: высокий / high — утечка данных между подключениями
- Preconditions: пользователь, подключения K1 (счёт A, позиции с sector/brand) и K2 (счёт B)
- Steps:
- Заменить K1 на новое подключение K1' (новый token, те же счёта): GET счёта A.
- Удалить K1': GET счёта A.
- Поздняя публикация обхода K1 (симуляция задержанной попытки) — проверить счёт A и B.
- Expected Results: шаг 1 — 404/409/400 по контракту замены, прежние datasets K1 недоступны; sector/brand позиции не выдаются до первого успешного обхода K1'. Шаг 2 — 404. Шаг 3 — публикация отклонена (
id/attemptId/running), в Portfolio K2 и нового K1' данные K1 не появляются. - Automation Candidate: yes (integration)