Project

General

Profile

Actions

Issue #817

closed
RA

問題:ECONNREFUSED/發卡行硬斷線沒有自動化測試

Issue #817: 問題:ECONNREFUSED/發卡行硬斷線沒有自動化測試

Added by Redmine Admin 6 days ago. Updated 6 days ago.

Status:
Closed
Priority:
P2-Normal
Assignee:
-
Category:
Testing
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「新增發卡行斷線/恢復控制介面」搭配執行。


Related issues 2 (1 open — 1 closed)

Related to CR #814: CR:新增發卡行斷線/恢復控制介面(toggle-down)New10/19/202610/19/2026

Actions
Related to Requirement #809: NCCC HTTPS JSON STIP Mock:建立可驗證的專業測試基準Closed10/19/202610/19/2026

Actions

RA Updated by Redmine Admin 6 days ago Actions #1

開工(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 Actions #2

【完成+結案(2026-10-20,#A-365)】ECONNREFUSED/發卡行硬斷線之自動化測試已補。

實作:nccc-stip-mock/test/integration/disconnect.test.js(新增)——以「取得空埠但不啟動 Issuer」製造 ECONNREFUSED,三案例:

  1. 斷線 → 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 與連線錯誤碼。
  2. 斷線+黑名單:仍拒絕 05(rule=BLACKLISTED)——黑名單不因斷線放行。
  3. #819 冪等過期:IDEMPOTENCY_TTL_MS=120 → 立即重送回原 STAN(replayed=true)、過窗後視為新交易(新 STAN、replayed=false)。

結果:該檔 3 測全過;nccc-stip-mock 全量 35 測 0 失敗(原 27+新增 8)。
(驗證前置:程式端 classifyIssuerFailure 已正確分類,本筆補的是測試證據——「有程式、沒證據」正是 G1 型假綠,故補齊。)

Actions

Also available in: PDF Atom