Document strict file picker tests
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user