wip: локальный коммит всех изменений, включая новые тесты, артефакты и правки UI/infra

This commit is contained in:
“Naeel”
2026-05-03 20:21:42 +04:00
parent 6b6190635a
commit 971c7e7ab4
26 changed files with 1813 additions and 5 deletions
+238
View File
@@ -0,0 +1,238 @@
LOG: /home/naeel/fission/scripts/../test-results/2026-05-03_19-13-39.log
>>> Предварительная очистка тест-namespace-ов...
pre_cleanup.sh: тест-namespace-ы не найдены, пропускаем.
╔══════════════════════════════════════╗
║ fission-console — полный тест-сьют ║
╚══════════════════════════════════════╝
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ЗАПУСК: test_auth.sh
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
========================================
test_auth.sh run=71e4887e
========================================
>>> POST /auth: пустой токен → 400
PASS: POST /auth пустой token → 400 (HTTP 400)
>>> POST /auth: токен < 6 символов → 401
PASS: POST /auth токен 2 символа → 401 (HTTP 401)
PASS: POST /auth токен 5 символов → 401 (HTTP 401)
>>> POST /auth: токен ≥6 символов → 200
PASS: POST /auth валидный токен → 200 (HTTP 200)
PASS: POST /auth namespace=fission-...
PASS: POST /auth ok=true
>>> POST /auth: невалидный JSON → 400
PASS: POST /auth невалидный JSON → 400
>>> POST /auth: GET метод → 405
PASS: GET /auth → 405
>>> X-Auth-Token: отсутствует → 401
PASS: GET /functions без токена → 401 (HTTP 401)
>>> X-Auth-Token: токен < 6 символов → 401
PASS: GET /functions токен 2 символа → 401 (HTTP 401)
PASS: GET /functions токен 5 символов → 401 (HTTP 401)
>>> X-Auth-Token: токен ≥6 символов → 200
PASS: GET /functions валидный X-Auth-Token → 200 (HTTP 200)
>>> Authorization: Bearer → 200
PASS: GET /functions Authorization: Bearer → 200 (HTTP 200)
>>> Namespace детерминирован (одинаковый токен → одинаковый NS)
PASS: Namespace детерминирован: fission-a8031d7c91fb0913
========================================
ИТОГ: PASS=14 FAIL=0
========================================
 ✓ test_auth.sh — PASSED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ЗАПУСК: test_functions_crud.sh
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
========================================
test_functions_crud.sh run=7428416b
========================================
>>> CREATE: базовый nodejs → 201
PASS: CREATE nodejs → 201 (HTTP 201)
PASS: CREATE: name в ответе
PASS: CREATE: route непустой
PASS: CREATE: package непустой
>>> CREATE: дубликат → 409
PASS: CREATE дубликат → 409 (HTTP 409)
>>> CREATE: без name → 400
PASS: CREATE без name → 400 (HTTP 400)
>>> CREATE: без language → 400
PASS: CREATE без language → 400 (HTTP 400)
>>> CREATE: без code → 400
PASS: CREATE без code → 400 (HTTP 400)
>>> CREATE: невалидный язык → 400
PASS: CREATE язык=cobol → 400 (HTTP 400)
>>> CREATE: валидация имени
PASS: CREATE имя с заглавной → 400 (HTTP 400)
PASS: CREATE имя с ведущим дефисом → 400 (HTTP 400)
PASS: CREATE имя с завершающим дефисом → 400 (HTTP 400)
PASS: CREATE имя с пробелом → 400 (HTTP 400)
PASS: CREATE имя 58 символов → 400 (HTTP 400)
PASS: CREATE имя 57 символов → 201 (HTTP 201)
>>> CREATE: код > 1MB → 400 или 413
PASS: CREATE код > 1MB → отклонён (000)
>>> LIST: GET /functions → 200, массив
PASS: LIST GET /functions → 200 (HTTP 200)
PASS: LIST: содержит ≥1 функцию (создали выше)
>>> LIST: новый пользователь → пустой массив
PASS: LIST новый пользователь → 200 (HTTP 200)
PASS: LIST новый пользователь → []
>>> GET: /functions/{name} → 200
PASS: GET /functions/t-crud-fn-7428416b → 200 (HTTP 200)
PASS: GET: name совпадает
PASS: GET: environment непустой (console-nodejs-env)
>>> GET: несуществующая функция → 404
PASS: GET несуществующая → 404 (HTTP 404)
>>> DELETE: /functions/{name} → 200
PASS: DELETE crud-fn → 200 (HTTP 200)
PASS: DELETE: deleted=true
>>> DELETE: повторное удаление → 404
PASS: DELETE повторное → 404 (HTTP 404)
>>> GET: после DELETE → 404
PASS: GET после DELETE → 404 (HTTP 404)
>>> DELETE: несуществующая функция → 404
PASS: DELETE несуществующая → 404 (HTTP 404)
========================================
ИТОГ: PASS=29 FAIL=0
========================================
 ✓ test_functions_crud.sh — PASSED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ЗАПУСК: test_ttl.sh
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
========================================
test_ttl.sh run=cc412f6c
========================================
>>> CREATE без TTL → expires_at отсутствует
PASS: CREATE без TTL: expires_at отсутствует
>>> CREATE с TTL=15m → expires_at присутствует
PASS: CREATE TTL=15m: expires_at=2026-05-03T15:29:41Z
PASS: expires_at формат RFC3339
>>> CREATE с TTL=1h → expires_at присутствует
PASS: CREATE TTL=1h: expires_at=2026-05-03T16:14:42Z
>>> CREATE с TTL=2d → expires_at присутствует
PASS: CREATE TTL=2d: expires_at=2026-05-05T15:14:44Z
>>> CREATE TTL невалидный → 400 (без создания объектов)
PASS: TTL='99z' → 400
PASS: TTL='abc' → 400
PASS: TTL='0d' → 400
PASS: TTL='-1h' → 400
>>> LIST: функция с TTL видна в списке
PASS: LIST: видно ≥3 функции (2 с TTL, 1 без)
========================================
ИТОГ: PASS=10 FAIL=0
========================================
 ✓ test_ttl.sh — PASSED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ЗАПУСК: test_isolation.sh
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
========================================
test_isolation.sh run=d921f62c
========================================
>>> Alice создаёт функцию
PASS: Alice CREATE t-alice-fn → 201 (HTTP 201)
>>> Bob GET t-alice-fn → 404
PASS: Bob GET t-alice-fn → 404 (HTTP 404)
>>> Bob DELETE t-alice-fn → 404
PASS: Bob DELETE t-alice-fn → 404 (HTTP 404)
>>> Bob PUT t-alice-fn/code → 404
PASS: Bob PUT t-alice-fn/code → 404 (HTTP 404)
>>> Bob INVOKE t-alice-fn → 404
PASS: Bob INVOKE t-alice-fn → 404 (HTTP 404)
>>> Alice GET t-alice-fn → 200 (не повреждена)
PASS: Alice GET t-alice-fn → 200 (HTTP 200)
>>> LIST изоляция: Alice и Bob видят только свои функции
FAIL: Alice LIST не содержит t-alice-fn (count=1)
PASS: Alice LIST не содержит t-bob-fn
FAIL: Bob LIST не содержит t-bob-fn
PASS: Bob LIST не содержит t-alice-fn
>>> Route изоляция: одинаковое имя → разные routes
PASS: Route изоляция: /4d5a8a9ec92c/t-alice-fn ≠ /bba3a109e2c3/t-bob-fn
========================================
ИТОГ: PASS=9 FAIL=2
========================================
 ✗ test_isolation.sh — FAILED (exit 1)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ЗАПУСК: test_update.sh
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
========================================
test_update.sh run=e9cdb465
========================================
>>> CREATE: версия v1
PASS: CREATE v1 → 201 (HTTP 201)
Ждём прогрева...
TRY=1 fn=t-upd-fn-e9cdb465 status=404 raw=404 page not found err=
TRY=2 fn=t-upd-fn-e9cdb465 status=404 raw=404 page not found err=
TRY=3 fn=t-upd-fn-e9cdb465 status=404 raw=404 page not found err=
TRY=4 fn=t-upd-fn-e9cdb465 status=404 raw=404 page not found err=
TRY=5 fn=t-upd-fn-e9cdb465 status=404 raw=404 page not found err=
TRY=6 fn=t-upd-fn-e9cdb465 status=404 raw=404 page not found err=
TRY=7 fn=t-upd-fn-e9cdb465 status=404 raw=404 page not found err=
TRY=8 fn=t-upd-fn-e9cdb465 status=404 raw=404 page not found err=
TRY=9 fn=t-upd-fn-e9cdb465 status=404 raw=404 page not found err=
TRY=10 fn=t-upd-fn-e9cdb465 status=404 raw=404 page not found err=
TRY=11 fn=t-upd-fn-e9cdb465 status=404 raw=404 page not found err=
TRY=12 fn=t-upd-fn-e9cdb465 status=404 raw=404 page not found err=
FAIL: Invoke v1 не стабилизировался
>>> PUT /code: версия v2
PASS: PUT /code v2 → 200 (HTTP 200)
PASS: PUT /code: updated=true
PASS: PUT /code: новый package=t-upd-fn-e9cdb465-pkg-mopwy76a
Ждём пока executor подхватит новый код...
TRY=1 fn=t-upd-fn-e9cdb465 status=404 raw=404 page not found err=
TRY=2 fn=t-upd-fn-e9cdb465 status=404 raw=404 page not found err=
TRY=3 fn=t-upd-fn-e9cdb465 status=404 raw=404 page not found err=