# Upload and file input

**Test family:** `FIL`

- **FIL-001** Upload the smallest valid file, ordinary file, and largest allowed file at max−1/max/max+1.
- **FIL-002** Test zero-byte, empty-content but nonzero container, corrupt/truncated, password-protected, and unsupported files.
- **FIL-003** Compare filename extension, declared MIME, detected content, and parser result; do not trust one signal.
- **FIL-004** Test uppercase/multiple/no extension, long name, dotfile, reserved name, Unicode/RTL/confusable name, spaces, and path separators.
- **FIL-005** Upload duplicate names and duplicate bytes; define overwrite, version, rename, or dedupe behavior.
- **FIL-006** Test single/multiple selection, part count, total size, per-file size, and mixed valid/invalid batch.
- **FIL-007** Drop, picker, paste, camera/capture, keyboard, and cancel paths expose equivalent validation and accessibility.
- **FIL-008** Interrupt at start/middle/end, go offline, timeout, retry, refresh, and duplicate retry; resume/idempotency is truthful.
- **FIL-009** Progress reflects bytes committed, not only read locally; cancel stops transfer and cleans partial objects.
- **FIL-010** Malware/quarantine/scan pending/rejected states prevent unsafe availability and explain delay safely.
- **FIL-011** Preview/parser failure does not imply upload failure or expose server paths; original remains downloadable if policy permits.
- **FIL-012** Authorization applies to upload target, object storage URL, preview, transform, thumbnail, download, share, and delete.
- **FIL-013** Signed URLs are scoped, expiring, non-guessable, and revoked appropriately.
- **FIL-014** Active content renders in a sandbox or as download; SVG/HTML/PDF/office metadata cannot execute in app origin.
- **FIL-015** EXIF, document properties, hidden sheets/comments, and original filename follow privacy/stripping policy.
- **FIL-016** Storage quota race is atomic; over-quota failure does not orphan billable bytes.

## Comprehensive per-item coverage

- **FIL-017** Create absent, empty, ordinary, boundary-size, and over-limit content; distinguish missing data, empty content, and intentionally blank content.
- **FIL-018** Use ASCII emoticons such as `:)`, `:-)`, `;)`, `:D`, `:(`, and `<3`; preserve them exactly or reject them with a specific product rule.
- **FIL-019** Use kaomoji and complex emoji including skin tones, flags, keycaps, variation selectors, and ZWJ sequences; preserve complete graphemes.
- **FIL-020** Use accents, decomposed forms, CJK, Arabic, Hebrew, mixed direction, confusables, and invisible characters; keep rendering and identity unambiguous.
- **FIL-021** Use long words, many short lines, one long line, tabs, mixed line endings, trailing spaces, and control characters through every supported transport.
- **FIL-022** Use inert HTML/script, Markdown, template, SQL, command, path, CSV-formula, header, and log-forging canaries; never execute content as control.
- **FIL-023** Compare typing, paste, rich paste, upload, import, API, mobile, automation, and migration paths; apply the same content contract.
- **FIL-024** Save, preview, reopen, edit, copy, quote, reply, forward, notify, search, index, export, and delete; preserve intended content and access.
- **FIL-025** Verify content encoding, charset declaration, BOM, compression, chunking, multipart boundaries, and transcoding do not corrupt data.
- **FIL-026** Attempt access as owner, collaborator, removed member, external guest, anonymous viewer, and another tenant; reauthorize every delivery path.
- **FIL-027** Change access after a link, preview, notification, or cached representation exists; revoke stale copies where the contract promises it.
- **FIL-028** Edit concurrently, retry after timeout, and resubmit the same content; avoid silent overwrite, duplicates, and reordered versions.
- **FIL-029** Force storage, scanner, renderer, indexer, notification, export, and downstream integration failures; expose partial state and recovery.
- **FIL-030** Test keyboard, screen reader, zoom, reflow, high contrast, reduced motion, captions/alternatives, and focus for creating and consuming content.
- **FIL-031** Translate UI and content, switch locale and direction, and render unsupported glyphs; preserve data even when fonts or layout degrade.
- **FIL-032** Measure create, upload, render, search, download, and delete latency at normal and supported boundary sizes.
- **FIL-033** Inspect URLs, metadata, filenames, previews, logs, telemetry, caches, backups, notifications, and exports for sensitive-content leakage.
- **FIL-034** Apply malware, abuse, spam, moderation, and policy handling without exposing scanner details or destroying innocent content silently.
- **FIL-035** Delete, restore, expire, retain, place on hold, export, and purge content; make user-visible state match storage and legal policy.
- **FIL-036** Verify hashes, sizes, versions, ownership, timestamps, and audit events across replicas and transformations so corruption is detectable.

[Back to Files, content, import/export, and messaging index](../../files-content-messaging.md)
