{
  "info": {
    "_postman_id": "c8e23f11-9a74-4b51-8d23-256sanitize001",
    "name": "LNSW Pengangkut - [ND-256] Sanitize Nama Wajib Bayar Test Suite",
    "description": "Postman collection khusus untuk pengujian fungsi sanitasi string nama_wajib_bayar pada endpoint POST /tagihan (Injeksi Tagihan Kemenhub KL 022) berdasarkan Nota Dinas ND-256/LNSW.34/2026. Mencakup uji length truncation (> 50 karakter), special character stripping, dan kombinasi keduanya.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://demo-backend.insw.go.id/pengangkut/api",
      "type": "string"
    },
    {
      "key": "billingKemenhubKey",
      "value": "xxx",
      "type": "string"
    },
    {
      "key": "inswKemenhubKey",
      "value": "xxx",
      "type": "string"
    },
    {
      "key": "bearerToken",
      "value": "KZ6IlAA4NxocmCozKC71xaYymS7sMAgM_94h0gftFnG",
      "type": "string"
    },
    {
      "key": "serviceNumber",
      "value": "102019B83694C",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "1. Simulasi Data Prasyarat (Data Seeding)",
      "item": [
        {
          "name": "1. Simulasi Approval LK3 Kemenhub",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "insw-kemenhub-key",
                "value": "{{inswKemenhubKey}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"no_aju\": \"{{serviceNumber}}\",\n  \"tipe\": \"LK3\",\n  \"nomor_layanan\": \"BDN.IDMAK.2609.000140\",\n  \"status\": 2,\n  \"message\": \"\",\n  \"nomor_produk\": \"SL003.IDMAK.0926.000142\",\n  \"waktu_approve\": \"2026-09-09 11:10:22\",\n  \"link_produk\": \"https://simpadu-inaportnet.dephub.go.id/index.php/document/pdfs/lk3_nakhoda/SL003.DN.IDMAK.2609.000139\",\n  \"kode_dermaga\": \"\"\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/warta-kapal/send/putResponse",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "warta-kapal",
                "send",
                "putResponse"
              ]
            },
            "description": "Simulasi kirim respon approval LK3 dari Kemenhub (doc=7, status=2)."
          },
          "response": []
        },
        {
          "name": "2. Simulasi Tagihan Inaportnet (Kemenhub - KL 022)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"simponi_req\": {\n    \"method\": \"billingcode\",\n    \"key\": \"{{billingKemenhubKey}}\",\n    \"data\": [\n      {\n        \"header\": [\n          \"{{serviceNumber}}\",\n          \"INV.IDMAK.2609.000003\",\n          \"\",\n          null,\n          \"022\",\n          \"04\",\n          \"413439\",\n          \"F\",\n          \"1\",\n          834660,\n          \"Labuh-PU-PT. JELAJAH LAUT NUSANTARA\",\n          \"413439\",\n          \"014844831042001\"\n        ],\n        \"detail\": [\n          [\n            \"Labuh-PU-PT. JELAJAH LAUT NUSANTARA\",\n            \"000401\",\n            \"201615C\",\n            \"425513\",\n            90,\n            9274,\n            \"Per GT/15 Hari\",\n            834660,\n            \"19\",\n            \"51\",\n            0\n          ]\n        ]\n      },\n      {\n        \"header\": [\n          \"{{serviceNumber}}\",\n          \"INV.IDMAK.2609.000009\",\n          \"\",\n          null,\n          \"022\",\n          \"04\",\n          \"287473\",\n          \"F\",\n          \"1\",\n          175000,\n          \"VTS-PU-IDMAK-PT. JELAJAH LAUT NUSANTARA\",\n          \"287473\",\n          \"014844831042001\"\n        ],\n        \"detail\": [\n          [\n            \"VTS-PU-IDMAK-PT. JELAJAH LAUT NUSANTARA\",\n            \"000930\",\n            \"201615C\",\n            \"425517\",\n            175000,\n            1,\n            \"Per Kapal\",\n            175000,\n            \"19\",\n            \"51\",\n            0\n          ]\n        ]\n      }\n    ]\n  }\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/tagihan",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "tagihan"
              ]
            },
            "description": "Injeksi data tagihan Warta Kapal Kemenhub (KL 022) ke sistem."
          },
          "response": []
        }
      ]
    },
    {
      "name": "2. Pengujian Sanitasi Nama Wajib Bayar",
      "item": [
        {
          "name": "1. Skenario 1 - Nama Wajib Bayar Melebihi 50 Karakter (Length Truncation)",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test(\"Status code is 200 OK\", function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "",
                  "pm.test(\"Respons payload valid\", function () {",
                  "    var jsonData = pm.response.json();",
                  "    pm.expect(jsonData).to.be.an(\"object\");",
                  "});",
                  "",
                  "// Verifikasi Database:",
                  "// SELECT nama_wajib_bayar, LENGTH(nama_wajib_bayar) FROM pengangkut.tagihan_hdr WHERE id_layanan = '{{serviceNumber}}';",
                  "// Ekspektasi: 'PT JELAJAH LAUT NUSANTARA LOGISTIK MARITIM INDONESI' (tepat 50 karakter)"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"simponi_req\": {\n    \"method\": \"billingcode\",\n    \"key\": \"{{billingKemenhubKey}}\",\n    \"data\": [\n      {\n        \"header\": [\n          \"{{serviceNumber}}\",\n          \"INV.IDMAK.2609.000003\",\n          \"\",\n          null,\n          \"022\",\n          \"04\",\n          \"413439\",\n          \"F\",\n          \"1\",\n          834660,\n          \"PT JELAJAH LAUT NUSANTARA LOGISTIK MARITIM INDONESIA JAYA MAKMUR ABADI\",\n          \"413439\",\n          \"014844831042001\"\n        ],\n        \"detail\": [\n          [\n            \"PT JELAJAH LAUT NUSANTARA LOGISTIK MARITIM INDONESIA JAYA MAKMUR ABADI\",\n            \"000401\",\n            \"201615C\",\n            \"425513\",\n            90,\n            9274,\n            \"Per GT/15 Hari\",\n            834660,\n            \"19\",\n            \"51\",\n            0\n          ]\n        ]\n      }\n    ]\n  }\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/tagihan",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "tagihan"
              ]
            },
            "description": "Pengujian sanitasi nama_wajib_bayar dengan panjang 70 karakter. Sistem wajib memotong string menjadi tepat 50 karakter saat diproses dan dikirim ke DJA Simponi."
          },
          "response": []
        },
        {
          "name": "2. Skenario 2 - Nama Wajib Bayar Mengandung Karakter Spesial (Special Character Stripping)",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test(\"Status code is 200 OK\", function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "",
                  "pm.test(\"Respons payload valid\", function () {",
                  "    var jsonData = pm.response.json();",
                  "    pm.expect(jsonData).to.be.an(\"object\");",
                  "});",
                  "",
                  "// Verifikasi Database:",
                  "// SELECT nama_wajib_bayar FROM pengangkut.tagihan_hdr WHERE id_layanan = '{{serviceNumber}}';",
                  "// Ekspektasi: 'Labuh PU PT JELAJAH LAUT NUSANTARA 123' (tanpa karakter spesial)"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"simponi_req\": {\n    \"method\": \"billingcode\",\n    \"key\": \"{{billingKemenhubKey}}\",\n    \"data\": [\n      {\n        \"header\": [\n          \"{{serviceNumber}}\",\n          \"INV.IDMAK.2609.000003\",\n          \"\",\n          null,\n          \"022\",\n          \"04\",\n          \"413439\",\n          \"F\",\n          \"1\",\n          834660,\n          \"Labuh-PU-PT. @JELAJAH# & LAUT* (NUSANTARA)!_123\",\n          \"413439\",\n          \"014844831042001\"\n        ],\n        \"detail\": [\n          [\n            \"Labuh-PU-PT. @JELAJAH# & LAUT* (NUSANTARA)!_123\",\n            \"000401\",\n            \"201615C\",\n            \"425513\",\n            90,\n            9274,\n            \"Per GT/15 Hari\",\n            834660,\n            \"19\",\n            \"51\",\n            0\n          ]\n        ]\n      }\n    ]\n  }\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/tagihan",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "tagihan"
              ]
            },
            "description": "Pengujian sanitasi nama_wajib_bayar yang mengandung berbagai karakter khusus/tanda baca. Sistem wajib membersihkan karakter khusus dan menyisakan hanya karakter alfanumerik serta spasi tunggal."
          },
          "response": []
        },
        {
          "name": "3. Skenario 3 - Nama Wajib Bayar Melebihi 50 Karakter DAN Mengandung Karakter Spesial",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test(\"Status code is 200 OK\", function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "",
                  "pm.test(\"Respons payload valid\", function () {",
                  "    var jsonData = pm.response.json();",
                  "    pm.expect(jsonData).to.be.an(\"object\");",
                  "});",
                  "",
                  "// Verifikasi Database:",
                  "// SELECT nama_wajib_bayar, LENGTH(nama_wajib_bayar) FROM pengangkut.tagihan_hdr WHERE id_layanan = '{{serviceNumber}}';",
                  "// Ekspektasi: 'PT JELAJAH LAUT NUSANTARA LOGISTIK MARITIM CABANG' (bersih karakter khusus dan panjang tepat 50 karakter)"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"simponi_req\": {\n    \"method\": \"billingcode\",\n    \"key\": \"{{billingKemenhubKey}}\",\n    \"data\": [\n      {\n        \"header\": [\n          \"{{serviceNumber}}\",\n          \"INV.IDMAK.2609.000003\",\n          \"\",\n          null,\n          \"022\",\n          \"04\",\n          \"413439\",\n          \"F\",\n          \"1\",\n          834660,\n          \"PT. JELAJAH LAUT @NUSANTARA #LOGISTIK (MARITIM) - CABANG UTAMA PELABUHAN TANJUNG PRIOK JAKARTA UTARA\",\n          \"413439\",\n          \"014844831042001\"\n        ],\n        \"detail\": [\n          [\n            \"PT. JELAJAH LAUT @NUSANTARA #LOGISTIK (MARITIM) - CABANG UTAMA PELABUHAN TANJUNG PRIOK JAKARTA UTARA\",\n            \"000401\",\n            \"201615C\",\n            \"425513\",\n            90,\n            9274,\n            \"Per GT/15 Hari\",\n            834660,\n            \"19\",\n            \"51\",\n            0\n          ]\n        ]\n      }\n    ]\n  }\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/tagihan",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "tagihan"
              ]
            },
            "description": "Pengujian kombinasi panjang 102 karakter yang sarat karakter spesial. Sistem wajib membersihkan karakter khusus terlebih dahulu, kemudian memotong string menjadi tepat <= 50 karakter."
          },
          "response": []
        }
      ]
    }
  ]
}