Blackbox Testing — Cross-doc Validation & Eligibility (Apostille & Legalisasi)
- Domain: Apostille & Legalisasi
- Fitur: Cross-doc Validation & Eligibility
- Role/aktor: umum (pemohon), verifikator_apostille (di tahap berikutnya)
- Tanggal uji: 2026-08-19
- Penguji (sesi): Supervisor Apostille
- Build/commit: 63c40a17 (dev/4)
1. Ringkasan fitur
Pada fase 2 (setelah "Lanjut ke Ekstraksi"), sistem mengekstraksi field tiap dokumen, mencocokkan identitas, mem-pre-match pejabat penandatangan, dan menjalankan APOSTILLE_RULE_SET (17 aturan). Aturan bertingkat FAIL/WARNING/SKIPPED menentukan apakah pemohon boleh mengirim ke verifikator. Aturan kelayakan kunci: kedua KTP wajib (termasuk saat mewakilkan/ORANG_LAIN), surat kuasa jadi sumber identitas untuk ORANG_LAIN, dokumen konvensional dengan pejabat tak terdaftar wajib Keterangan Keabsahan (elektronik dikecualikan), nama pemilik dokumen berbeda dari pemohon hanya WARNING, dan tipe (konvensional/elektronik) terdeteksi otomatis dari marker TTE.
2. Full workflow
2.1 Diagram state
stateDiagram-v2
[*] --> AWAITING_CLASSIFICATION
AWAITING_CLASSIFICATION --> EXTRACTING: /start (gate identitas + kedua KTP)
EXTRACTING --> VALIDATING: ekstraksi field + signer prematch
VALIDATING --> READY: APOSTILLE_RULE_SET
READY --> IN_VERIFICATION: /submit (gate FAIL + semua field dikonfirmasi + signer)
READY --> READY: perbaiki field / override
2.2 Sequence (aktor - sistem)
sequenceDiagram
actor U as umum
participant BE as Backend
participant V as Validator
U->>BE: POST /:id/start
BE->>BE: gate identitas KTP readable + kedua KTP (ORANG_LAIN)
BE->>V: fase 2 ekstraksi + APOSTILLE_RULE_SET
V-->>BE: hasil (FAIL/WARNING/SKIPPED/PASS)
U->>BE: POST /:id/submit
BE->>BE: gate (a) tidak ada FAIL, (b) semua field dikonfirmasi, (c) signer resolved
BE-->>U: IN_VERIFICATION atau 409
2.3 Peta route & UI
| Langkah |
Route |
Komponen |
Elemen |
Selector |
| Gate mulai ekstraksi |
POST /:id/start |
- |
- |
- |
| Tinjau + konfirmasi field |
/apostille/permohonan/:id/review |
ApostilleReviewPage |
konfirmasi field, atestasi |
[data-testid="apostille-pernyataan-progress"] |
| Kirim ke verifikator |
POST /:id/submit |
tombol Selesai |
- |
- |
3. Prasyarat & data uji
| ID data |
Tipe |
Berkas |
Deskripsi |
Ekspektasi sistem |
| D-POS-30 |
Positive |
apostille_elektronik_nosk (DIRI_SENDIRI) |
1 KTP + 1 dokumen elektronik |
READY, signer SKIPPED (elektronik exempt) |
| D-NEG-35 |
Negative |
apostille_konvensional_sk (ORANG_LAIN) |
2 KTP + surat kuasa + dokumen, satu KTP tak cocok |
/start 409 KTP_REQUIRED |
| D-NEG-36 |
Negative |
submit sebelum konfirmasi field |
Field belum dikonfirmasi |
409 SECTIONS_NOT_CONFIRMED |
| D-NEG-37 |
Negative |
applicant minta bypass |
bypassValidations=true dari pemohon |
Ditolak (tetap 409); bypass hanya untuk staff + ALLOW_DEBUG_BYPASS |
4. Matriks skenario uji
| ID |
Tipe |
Lapisan |
Langkah ringkas |
Ekspektasi |
Hasil aktual |
Status |
Bukti |
| TC-ELG-01 |
Negative |
API |
ORANG_LAIN, satu KTP tak cocok, /start |
409 KTP_REQUIRED (kedua KTP wajib) |
Sesuai |
PASS |
eligibility.spec |
| TC-ELG-02 |
Negative |
API |
/submit sebelum konfirmasi field |
409 SECTIONS_NOT_CONFIRMED |
Sesuai |
PASS |
eligibility.spec |
| TC-ELG-03 |
Negative |
API |
/submit bypass dari pemohon |
Ditolak, tetap 409 |
Sesuai |
PASS |
eligibility.spec |
| TC-ELG-04 |
Positive |
API |
Cek posture validasi di READY |
AP_DOCS_NAME_MATCH = WARNING; signer elektronik SKIPPED |
Sesuai |
PASS |
eligibility.spec |
| TC-ELG-05 |
Positive |
API |
Konfirmasi semua field lalu /submit |
200 IN_VERIFICATION |
Sesuai |
PASS |
eligibility.spec |
| TC-ELG-06 |
Positive |
API |
ORANG_LAIN routing dari surat kuasa |
pemberi=pemohon, penerima=proxy terbaca dari teks surat kuasa |
Sesuai |
PASS |
inspeksi review konvensional |
5. Cakupan UI (semua yang diakses user)
| Route/Elemen |
Diuji? |
Perilaku benar? |
Catatan |
Gate /start (identitas + kedua KTP) |
Ya (API) |
Ya |
409 KTP_REQUIRED saat KTP penerima/pemohon tak cocok |
| Konfirmasi field (review) |
Ya (API) |
Ya |
Gate SECTIONS_NOT_CONFIRMED |
| Atestasi pernyataan (4 item) |
Sebagian |
- |
Progress badge bertestid; belum dicentang via UI penuh |
| Tombol Selesai (/submit) |
Ya (API) |
Ya |
Gate FAIL + field + signer |
6. Temuan bug & perbaikan
| ID bug |
Severity |
Ringkas |
Reproduksi |
Ekspektasi |
Aktual |
Screenshot |
Rekomendasi perbaikan |
| - |
- |
Tidak ada bug pada logika kelayakan |
- |
- |
- |
- |
- |
Observasi penting (bukan bug):
- Aturan berjalan sesuai memori proyek. AP_DOCS_NAME_MATCH = WARNING (bukan FAIL) saat nama pemilik dokumen berbeda dari pemohon. Untuk dokumen ELEKTRONIK, aturan signer (AP_T3_SIGNER_REQUIRED_FOR_TYPE, AP_SIGNER_UNREGISTERED) SKIPPED. Kedua KTP wajib untuk ORANG_LAIN ditegakkan di /start.
- Keamanan bypass (F17) tegak. Permintaan bypassValidations=true dari pemohon ditolak dan dicatat; hanya berlaku dengan ALLOW_DEBUG_BYPASS=on + pemanggil internal.
- Interaksi signer di tahap verifikator: dokumen elektronik pun dapat memiliki SignerMatch bila nama pejabat ter-OCR; ini memengaruhi gate APPROVE verifikator (lihat laporan Verifier Workspace), bukan gate submit pemohon.
7. Ringkasan & rekomendasi
- Total skenario: 6 (PASS 6 / FAIL 0)
- Cakupan UI: gate utama teruji via API; atestasi UI penuh sebagian
- Bug: High 0, Med 0, Low 0
- Rekomendasi prioritas: perkuat deteksi KTP (lihat laporan Classification BUG-CLS-01) agar jalur ORANG_LAIN happy-path tidak terhambat kedua-KTP-wajib.
- Gap/keterbatasan: Jalur ORANG_LAIN sampai READY belum bisa diuji end-to-end dari data nyata karena satu KTP (format PDF) salah klasifikasi sehingga gate kedua-KTP memblokir (perilaku BENAR, tapi memblokir happy-path). Aturan signer keabsahan konvensional (AP_SIGNER_UNREGISTERED = FAIL tanpa Keterangan Keabsahan) diverifikasi dari kode + posture; end-to-end butuh dokumen konvensional yang sampai READY dengan signer tak terdaftar ("butuh data").