html-embed: клиентский гейт исполнения JS (shouldExecute) не покрыт тестами #77
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Найдено в multi-aspect code review всех изменений с коммита
053a9c0d(ветка develop).Грань: test-coverage · Severity: warning
Где:
apps/client/src/features/editor/components/html-embed/html-embed-view.tsx:73Проблема
shouldExecute = !editor.isEditable || htmlEmbedEnabled— самое security-нагруженное решение фичи на клиенте (исполнится ли произвольный admin-JS в браузере читателя). Ветки нетривиальны: (a) read-only/share-режим ВСЕГДА исполняет независимо от тоггла (полагаясь на серверный strip для OFF-шаров); (b) editable-режим исполняет только при htmlEmbedEnabled; (c) OFF+editable очищает контейнер. Ни одна не покрыта. Будущий рефактор, переключивший read-only-ветку на htmlEmbedEnabled (которое анонимный зритель читает как false), молча сломает исполнение на публичных шарах без падающего теста.Предлагаемый фикс
Вынести решение в экспортируемый чистый хелпер (resolveShouldExecuteEmbed({isEditable, htmlEmbedEnabled})) по образцу resolveCardStatus и покрыть все 4 комбинации (в частности read-only+OFF всё ещё исполняет; editable+OFF — нет).
Связанные: #27
Ghost referenced this issue2026-06-21 04:15:11 +03:00