{
    "pass": 111,
    "fail": 0,
    "results": [
        [
            true,
            "Sebelum instalasi semua halaman diarahkan ke \/install",
            ""
        ],
        [
            true,
            "Installer tampil dan membuat kode bootstrap di folder privat",
            ""
        ],
        [
            true,
            "Kode instalasi salah ditolak",
            ""
        ],
        [
            true,
            "Instalasi berhasil dengan kode benar",
            "status 303"
        ],
        [
            true,
            "Kode bootstrap dihapus setelah instalasi",
            ""
        ],
        [
            true,
            "Installer terkunci setelah selesai (404)",
            ""
        ],
        [
            true,
            "Tidak ada sandi admin bawaan: admin = data yang diisi",
            ""
        ],
        [
            true,
            "Beranda 200",
            ""
        ],
        [
            true,
            "CSP script-src tanpa unsafe-inline\/unsafe-eval dan memakai nonce",
            ""
        ],
        [
            true,
            "Header nosniff, frame-ancestors, referrer",
            ""
        ],
        [
            true,
            "Tidak ada statistik\/testimoni karangan di beranda",
            ""
        ],
        [
            true,
            "Katalog menampilkan 4 desain",
            ""
        ],
        [
            true,
            "Demo glass-wonder 200 & berlabel demo",
            ""
        ],
        [
            true,
            "Demo burgundy-vintage-hitam 200 & berlabel demo",
            ""
        ],
        [
            true,
            "Demo isometric-castle 200 & berlabel demo",
            ""
        ],
        [
            true,
            "Demo istana-kertas 200 & berlabel demo",
            ""
        ],
        [
            true,
            "Traversal pada URL media ditolak",
            ""
        ],
        [
            true,
            "robots.txt menutup area privat",
            ""
        ],
        [
            true,
            "Pendaftaran berhasil",
            "status 303"
        ],
        [
            true,
            "Parameter role=admin diabaikan: pendaftar selalu member",
            ""
        ],
        [
            true,
            "Sandi di-hash (Argon2id\/bcrypt), bukan teks asli",
            ""
        ],
        [
            true,
            "Email ganda (beda huruf besar) ditolak",
            ""
        ],
        [
            true,
            "POST tanpa token CSRF ditolak (419)",
            ""
        ],
        [
            true,
            "Member tidak bisa membuka panel admin (403)",
            ""
        ],
        [
            true,
            "Tamu diarahkan ke halaman masuk",
            ""
        ],
        [
            true,
            "Percobaan masuk berulang dibatasi",
            ""
        ],
        [
            true,
            "Admin masuk",
            ""
        ],
        [
            true,
            "Belum bisa membeli sebelum admin konfirmasi lisensi & metode bayar",
            ""
        ],
        [
            true,
            "Admin mengonfirmasi lisensi & mengubah kuota WA produk",
            ""
        ],
        [
            true,
            "Pesanan dibuat (pending_payment) dengan snapshot harga",
            ""
        ],
        [
            true,
            "Kirim ganda dengan kunci idempoten tidak membuat pesanan ganda",
            ""
        ],
        [
            true,
            "Ubah harga produk tidak mengubah pesanan lama",
            ""
        ],
        [
            true,
            "Bukti transfer diunggah → menunggu verifikasi",
            "status 303 "
        ],
        [
            true,
            "Bukti transfer saja tidak membuat hak aktif",
            ""
        ],
        [
            true,
            "Bukti transfer tidak bisa dibuka member lain",
            ""
        ],
        [
            true,
            "Bukti transfer tidak bisa dibuka tamu",
            ""
        ],
        [
            true,
            "Member tidak dapat menyetujui pembayaran sendiri",
            ""
        ],
        [
            true,
            "Admin menyetujui → lunas, 1 hak, 1 undangan",
            ""
        ],
        [
            true,
            "Persetujuan ganda idempoten (tetap 1 hak)",
            ""
        ],
        [
            true,
            "Masa aktif 365 hari sejak konfirmasi",
            ""
        ],
        [
            true,
            "Pemilik pesanan lain tidak bisa melihat invoice orang lain",
            ""
        ],
        [
            true,
            "Admin aktivitas tercatat di audit",
            ""
        ],
        [
            true,
            "Draft dapat dibaca pemilik",
            ""
        ],
        [
            true,
            "Member lain tidak bisa membaca draft (404)",
            ""
        ],
        [
            true,
            "Simpan draft berhasil",
            "status 200 {\"rev\":2,\"saved_at\":\"2026-11-13 09:09:16\",\"payload\":{\"mode\":\"preview\",\"template\":\"glass-wonder\",\"data\":{\"v\":1,\"couple\":{\"order\":\"bride_first\",\"bride\":{\"nick\":\"<script>alert(1)<\/script>Salsa\",\"full\":\"\",\"childOrder\":\"\",\"father\":\"\",\"mother\":\"\",\"origin\":\"\",\"instagram\":\"\",\"photo\":null,\"photoUrl\":null},\"g"
        ],
        [
            true,
            "Revisi usang ditolak sebagai konflik (409)",
            ""
        ],
        [
            true,
            "Mengganti template lewat data tidak mengubah template undangan",
            ""
        ],
        [
            true,
            "Member lain tidak bisa menyimpan draft (404)",
            ""
        ],
        [
            true,
            "Terbit ditolak bila acara belum lengkap (422)",
            ""
        ],
        [
            true,
            "URL peta javascript: tidak pernah tersimpan (ditolak\/dibuang)",
            "status 422"
        ],
        [
            true,
            "Terbit berhasil",
            "status 200 {\"ok\":true,\"status\":\"published\",\"published_at\":\"2026-11-13 09:09:16\",\"url\":\"http:\/\/kn.test\/i\/undangan-4e92f61\"}"
        ],
        [
            true,
            "Undangan publik 200",
            ""
        ],
        [
            true,
            "Nama berisi <script> tidak tereksekusi (di-escape)",
            ""
        ],
        [
            true,
            "Tidak ada javascript: di halaman publik",
            ""
        ],
        [
            true,
            "Foto model contoh template tidak dimuat di undangan member",
            ""
        ],
        [
            true,
            "Draft yang belum diterbitkan tidak tampil ke tamu",
            ""
        ],
        [
            true,
            "RSVP publik tersimpan",
            ""
        ],
        [
            true,
            "Ucapan tersimpan sebagai teks (HTML tidak dieksekusi saat tampil)",
            ""
        ],
        [
            true,
            "Honeypot ucapan menolak bot",
            ""
        ],
        [
            true,
            "Masa aktif habis → editor terkunci (403)",
            ""
        ],
        [
            true,
            "Masa aktif habis → tautan publik halaman tidak aktif tanpa data pribadi",
            ""
        ],
        [
            true,
            "Perpanjangan memperbarui hak & undangan yang sama",
            ""
        ],
        [
            true,
            "Perpanjangan setelah habis dihitung dari waktu aktivasi",
            ""
        ],
        [
            true,
            "Pesanan gateway dibuat",
            "status 303 loc \/akun\/pesanan\/KN-202611-00003?bayar=1 "
        ],
        [
            true,
            "Notifikasi bertanda tangan salah ditolak (403) & tidak melunasi",
            ""
        ],
        [
            true,
            "Tanda tangan valid tetapi status tidak terverifikasi ke API → tidak lunas",
            "ditolak: data transaksi tidak cocok"
        ],
        [
            true,
            "Halaman kembali dari browser tidak melunasi pesanan",
            ""
        ],
        [
            true,
            "Kunci server tersimpan terenkripsi (tidak ada teks asli di DB)",
            ""
        ],
        [
            true,
            "Kunci server tidak tampil di halaman admin",
            ""
        ],
        [
            true,
            "Berkas CSV diunggah ke penyimpanan privat",
            ""
        ],
        [
            true,
            "Validasi: 2 valid, 2 tidak valid, 1 ganda",
            "{\"total\":5,\"valid\":2,\"invalid\":2,\"duplicate_file\":1,\"existing\":0,\"empty\":0,\"formulas\":0,\"truncated\":false}"
        ],
        [
            true,
            "CSV baris ditolak tersedia",
            ""
        ],
        [
            true,
            "Impor menyimpan kontak valid & menghapus berkas asli",
            ""
        ],
        [
            true,
            "Simpan impor ulang tidak menggandakan kontak",
            ""
        ],
        [
            true,
            "Kontak member lain tidak terlihat",
            ""
        ],
        [
            true,
            "Ekspor CSV menetralkan formula (=HYPERLINK diawali apostrof)",
            ""
        ],
        [
            true,
            "Templat: variabel tak dikenal ditolak",
            ""
        ],
        [
            true,
            "Templat: render hanya variabel daftar-putih",
            ""
        ],
        [
            true,
            "Normalisasi nomor (lokal, +62, notasi ilmiah ditolak, huruf ditolak, internasional)",
            ""
        ],
        [
            true,
            "Pengaturan pesan disimpan per member",
            ""
        ],
        [
            true,
            "Kampanye draf dibuat dengan snapshot pesan per penerima",
            ""
        ],
        [
            true,
            "Pesan berisi nama tamu & tautan pribadi",
            ""
        ],
        [
            true,
            "Kampanye member lain tidak dapat dibuka (404)",
            ""
        ],
        [
            true,
            "Konfirmasi tanpa persetujuan ditolak",
            ""
        ],
        [
            true,
            "Kampanye masuk antrean setelah persetujuan",
            ""
        ],
        [
            true,
            "Worker tanpa tanda tangan ditolak (401)",
            ""
        ],
        [
            true,
            "Worker dengan tanda tangan salah ditolak (401)",
            ""
        ],
        [
            true,
            "Stempel waktu kedaluwarsa ditolak (401)",
            ""
        ],
        [
            true,
            "Klaim sah mendapat 1 pekerjaan (1 pesan dalam proses per nomor)",
            ""
        ],
        [
            true,
            "Nonce yang sama ditolak (anti-replay, 409)",
            ""
        ],
        [
            true,
            "Jeda per pengirim: klaim berikutnya kosong selama jeda",
            ""
        ],
        [
            true,
            "Pekerjaan memuat Idempotency-Key = correlation id",
            ""
        ],
        [
            true,
            "Worker lain ditolak saat lease dipegang (409)",
            ""
        ],
        [
            true,
            "Laporan dengan lease token salah diabaikan",
            ""
        ],
        [
            true,
            "Laporan sah → status diterima server",
            ""
        ],
        [
            true,
            "Webhook bertanda tangan salah ditolak (401)",
            ""
        ],
        [
            true,
            "Webhook ack \"read\" diterapkan",
            ""
        ],
        [
            true,
            "Ack terlambat \"delivered\" tidak menurunkan status \"read\"",
            ""
        ],
        [
            true,
            "Webhook duplikat diabaikan (idempoten)",
            ""
        ],
        [
            true,
            "Kuota: pesan terkirim tercatat 1 di buku kuota",
            ""
        ],
        [
            true,
            "Gagal pasti → status gagal & kuota dikembalikan",
            ""
        ],
        [
            true,
            "Kampanye selesai dengan kegagalan tercatat",
            ""
        ],
        [
            true,
            "Kirim ulang yang gagal atas permintaan member",
            ""
        ],
        [
            true,
            "Nomor dikecualikan → penerima tertunda dilewati",
            ""
        ],
        [
            true,
            "API key OpenWA tidak pernah dikirim ke browser member",
            ""
        ],
        [
            true,
            "Admin memberi hak manual (+1 undangan, tercatat)",
            ""
        ],
        [
            true,
            "Member diblokir langsung keluar",
            ""
        ],
        [
            true,
            "Cadangan dibuat (VACUUM INTO + kunci)",
            ""
        ],
        [
            true,
            "Arsip pemulihan dengan jalur ..\/ ditolak",
            ""
        ],
        [
            true,
            "Unduh cadangan dengan traversal ditolak",
            ""
        ],
        [
            true,
            "Pemeriksaan sistem tampil",
            ""
        ]
    ],
    "php": "8.3.6",
    "at": "2026-11-13T09:09:18+00:00"
}