Skip to content
This repository was archived by the owner on Aug 11, 2026. It is now read-only.

test(cache): buktikan publikasi sungguhan mengosongkan cache, ujung ke ujung - #364

Merged
ahliweb merged 1 commit into
mainfrom
test/publish-to-cache-end-to-end
Jul 25, 2026
Merged

ahliweb merged 1 commit into
mainfrom
test/publish-to-cache-end-to-end

Conversation

@ahliweb

@ahliweb ahliweb commented Jul 25, 2026

Copy link
Copy Markdown
Owner

Lanjutan post-mortem #359/#361, menutup sambungan terakhir yang belum teruji.

Celah yang ditutup

Suite transport (#363) membuktikan purgeEdgeCache() mengosongkan cache nyata. Unit test membuktikan rute memanggil pembungkusnya. Tidak satu pun membuktikan keduanya tersambung — resolusi hostname dari awcms_micro_tenant_domains duduk di antaranya, dan tenant yang hostname-nya tidak resolve tidak meng-invalidasi apa pun sementara seluruh test komponen tetap hijau. Di staging, celah seperti itu hanya pernah terlihat dengan menerbitkan artikel sungguhan lalu memeriksa permintaan berikutnya.

tests/integration/edge-cache-publish-invalidation.integration.test.ts menjalankan tepat urutan itu: rute publish/archive sungguhan → PostgreSQL sungguhan → Varnish sungguhan. Yang ikut terkunci:

  • setiap hostname aktif tenant di-purge, bukan hanya yang primary;
  • hostname non-aktif tidak di-purge (batas yang sama dengan resolver publik);
  • publikasi tenant lain tidak mengosongkan cache tenant ini;
  • publikasi yang gagal tidak mengosongkan apa pun — menutup cara murah bagi pemanggil tak berwenang untuk membuang cache sebuah situs.

Kedua CLI kini ikut diuji sebagai proses

edge-cache:verify dan edge-cache:health dijalankan lewat bun sungguhan terhadap Varnish nyata, sehingga exit code — yang dibaca pipeline deploy — jadi bagian assertion. Pemeriksa yang sendirinya tidak diperiksa adalah persis bagaimana edge-cache:health bisa melaporkan sehat untuk subsistem yang tidak melakukan apa pun.

Diuji balik dengan mutasi

Mutasi Hasil
Lepas pemanggilan invalidasi dari rute publish 3 dari 6 gagal
Ubah filter status resolver hostname jadi salah 5 dari 6 gagal

Gate http:methods:check — saya mengubah pendirian

Di PR sebelumnya saya menolak gate ini dengan alasan "tidak ada metode non-standar tersisa". Pengukuran lanjutan membantah dasarnya: yang menentukan bukan "dikenal atau tidak", melainkan kecocokan huruf per huruf dengan tabel verb internal Bun.

DELETE -> DELETE      Delete -> GET      delete -> DELETE
PATCH  -> PATCH       Patch  -> GET      BAN    -> GET

Post bukan verb eksotis — itu salah kapitalisasi biasa yang menurut spec fetch justru wajib dinormalkan, dan mata reviewer melewatinya. Arah kegagalannya berbahaya: permintaan yang dimaksudkan mengubah terkirim sebagai pembacaan, dan 200-nya terbaca sukses.

Sudah dilaporkan ke hulu — oven-sh/bun#33469 (terbuka, 9 komentar), juga #6021 dan #21566 — jadi saya tidak membuat laporan duplikat. Gate ini menutup sisi kita.

bun run check hijau dengan database nyata (postgres:18.4) + Docker: 4829 pass, 0 fail.

🤖 Generated with Claude Code

…e ujung

Sambungan terakhir yang belum teruji: rute publikasi sungguhan →
PostgreSQL sungguhan → Varnish sungguhan.

Suite transport membuktikan purgeEdgeCache() mengosongkan cache nyata;
unit test membuktikan rute memanggil pembungkusnya. Tidak satu pun
membuktikan keduanya TERSAMBUNG — resolusi hostname dari
awcms_micro_tenant_domains duduk di antaranya, dan tenant yang
hostname-nya tidak resolve tidak meng-invalidasi apa pun sementara
seluruh test komponen tetap hijau. Di staging celah itu hanya pernah
terlihat dengan menerbitkan artikel sungguhan.

Yang ikut terkunci: setiap hostname aktif tenant di-purge (bukan hanya
primary), hostname non-aktif tidak, publikasi tenant lain tidak
mengosongkan cache tenant ini, dan publikasi yang GAGAL tidak
mengosongkan apa pun — yang terakhir menutup cara murah bagi pemanggil
tak berwenang untuk membuang cache sebuah situs.

Kedua CLI operator dijalankan sebagai proses sungguhan sehingga exit
code yang dibaca pipeline deploy ikut jadi assertion. Fixture Varnish
diekstrak ke tests/integration/varnish-fixture.ts.

Diuji balik dengan dua mutasi: melepas pemanggilan invalidasi dari rute
publish menggagalkan 3 dari 6; mengubah filter status resolver hostname
menggagalkan 5 dari 6.

Ditambah gate http:methods:check. Aturan Bun ternyata lebih luas dari
"metode kustom" — yang menentukan kecocokan huruf per huruf dengan tabel
verb internalnya, sehingga Post/Delete/Patch juga terkirim sebagai GET.
Sudah dilaporkan ke hulu (oven-sh/bun#33469), jadi tidak dibuat laporan
baru; gate ini menutup sisi kita.

bun run check hijau dengan database nyata: 4829 pass, 0 fail.
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@ahliweb
ahliweb merged commit 83a1ec6 into main Jul 25, 2026
8 checks passed
@ahliweb
ahliweb deleted the test/publish-to-cache-end-to-end branch July 25, 2026 22:36
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant