Actions
Issue #817
closed
RA
問題:ECONNREFUSED/發卡行硬斷線沒有自動化測試
Issue #817:
問題:ECONNREFUSED/發卡行硬斷線沒有自動化測試
Start date:
10/19/2026
Due date:
10/19/2026
% Done:
0%
Estimated time:
Story Points:
Description
現象¶
nccc_server.js 已將連線失敗歸為 ISSUER_UNAVAILABLE 並啟動 STIP,
但現有整合測試只涵蓋 Timeout,沒有在交易中關閉 Issuer 的案例。
影響¶
無法證明 ECONNREFUSED、ECONNRESET 與 keep-alive 連線中斷時都能正確代理授權。
待辦¶
- 以未監聽 Port 或測試控制介面製造
ECONNREFUSED。 - 驗證
stip_reason=ISSUER_UNAVAILABLE、reply_code=00、issuer_reply_code=null。 - 補測黑名單時回
05。
關聯¶
與 CR「新增發卡行斷線/恢復控制介面」搭配執行。
RA Updated by Redmine Admin 6 days ago
開工(2026-10-20,#A-365):實作與測試已完成並全綠(詳結案 journal)。★ 本筆併記:Issue tracker 之工作流原漏 New → In Progress(D-023 當時僅補 CR/Task/Requirement)——已擴充 fix_workflow.rb 補齊(冪等),下筆即結案。
RA Updated by Redmine Admin 6 days ago
【完成+結案(2026-10-20,#A-365)】ECONNREFUSED/發卡行硬斷線之自動化測試已補。
實作:nccc-stip-mock/test/integration/disconnect.test.js(新增)——以「取得空埠但不啟動 Issuer」製造 ECONNREFUSED,三案例:
-
斷線 → STIP 代理核准:
reply_code=00、stip_flag=true、stip_reason=ISSUER_UNAVAILABLE(與 Timeout 之ISSUER_TIMEOUT區分——#835 同源問題)、issuer_reply_code=null、source=NCCC_STIP;並以waitForOutput斷言 NCCC 日誌含reason=ISSUER_UNAVAILABLE與連線錯誤碼。 -
斷線+黑名單:仍拒絕
05(rule=BLACKLISTED)——黑名單不因斷線放行。 -
#819 冪等過期:
IDEMPOTENCY_TTL_MS=120→ 立即重送回原 STAN(replayed=true)、過窗後視為新交易(新 STAN、replayed=false)。
結果:該檔 3 測全過;nccc-stip-mock 全量 35 測 0 失敗(原 27+新增 8)。
(驗證前置:程式端 classifyIssuerFailure 已正確分類,本筆補的是測試證據——「有程式、沒證據」正是 G1 型假綠,故補齊。)
Actions