Document strict file picker tests

This commit is contained in:
“Naeel”
2026-09-05 10:08:11 +03:00
parent 8f775e34a9
commit 317526b246
+26
View File
@@ -100,6 +100,32 @@
- Повторный выбор того же файла после удаления снова разрешён.
- Изменения не затрагивают фильтрацию расширений, ZIP-рекурсию и публичный API picker.
## Жёсткие тесты по плану — 2026-09-05
### PASS
- Расширения без учёта регистра: `UPPER.PDF`, `Doc.DOCX`, `note.TxT` и `file.name.md` приняты.
- Некорректные расширения и имена без разрешённого суффикса: `archive.tar.gz`, `README` и `file.` отклонены.
- Пустой ZIP не создаёт группу и оставляет состояние `0 файлов · 0 B`.
- ZIP только с запрещёнными `.jpg` и `.py` не создаёт группу.
- ZIP с разрешёнными файлами и вложенным ZIP оставляет только разрешённые leaf-файлы.
- ZIP с вложенностью глубже 20 отклоняется без зависания страницы.
- Дедупликация: одинаковый путь и размер схлопываются; другой путь сохраняется.
- XSS-имена с `<script>`, `<img>`, кавычками и `&` экранируются: в DOM нет `script` и `img` элементов, исходный текст отображается безопасно.
- Выбор папки с одинаковыми именами в разных каталогах сохраняет оба файла.
- Рабочее дерево Git после тестов осталось чистым.
### FAIL
- ZIP entry `folder/../../escape.txt` попадает в дерево с тем же traversal-путём.
- ZIP entry `/absolute.md` попадает в дерево с двойным слэшем `archive.zip//absolute.md`.
- Пути с `..` создают видимые группы `..`.
- Путь `<пустая часть>/absolute.md` создаёт группу с пустым отображаемым именем.
### Вывод
Фильтрация расширений, XSS-экранирование, дедупликация и обработка пустых/глубоких ZIP работают. Обнаружен отдельный дефект нормализации ZIP-путей: перед построением дерева нужно отклонять абсолютные пути, `..`, пустые сегменты и backslash traversal. В текущем тестовом проходе код не менялся; FAIL оставлен документированным для следующего исправления.
## Git
- `c0b8788 Implement reusable upload platform` — первоначальный reusable upload platform.