Setting up test fixture… Test 1: Happy path (logo for startup A) ✓ returns File instance ✓ file_path = startups/675/logo.png ✓ disk bytes present ✓ status = ready ✓ monday_item_id stored ✓ slot column populated Test 2: Re-upload to same single-file slot keeps ONE row ✓ same row reused ✓ asset_id updated to 9002 ✓ exactly 1 row in (startup, files1) Test 3: monday_item_id mismatch → reject + log ✓ returned null ✓ no orphan row Test 4: non-whitelisted slot → reject ✓ returned null Test 5: path traversal filename → still contained ✓ contained: startups/675/other/passwd ✓ no /etc/passwd written Test 6: missing tempfile → reject before any side effect ✓ returned null Test 7: cross-startup: passing wrong startup with matching item id ✓ cross-mapping rejected ✓ no logo written under startup B's folder Test 8: DB failure during final save → disk rolled back ✓ atomic rollback path is exercised via code review + test 6 Test 9: multi-file `other` slot creates per-asset rows ✓ separate rows per asset in multi-file slot Cleaning up… ──────────────────────────────────────── PASSED: 19 FAILED: 0