@@ -68,20 +68,53 @@ func TestHandleRPCError_Classification(t *testing.T) {
6868 wantRetry : false ,
6969 },
7070 {
71- name : "HTTP 413 (PoC) → ErrHTTPClientError (fatal)" ,
72- in : & rpc.HTTPStatusError {StatusCode : 413 , Body : `{"code":-32007,"message":"Request is too big"}` },
71+ name : "HTTP 400 → ErrHTTPClientError (fatal, malformed request )" ,
72+ in : & rpc.HTTPStatusError {StatusCode : 400 , Body : "" },
7373 wantIs : ErrHTTPClientError ,
7474 wantFatal : true ,
7575 },
7676 {
77- name : "HTTP 499 → ErrHTTPClientError (fatal)" ,
78- in : & rpc.HTTPStatusError {StatusCode : 499 , Body : "" },
77+ name : "HTTP 401 → ErrHTTPClientError (fatal, JWT misconfig )" ,
78+ in : & rpc.HTTPStatusError {StatusCode : 401 , Body : "" },
7979 wantIs : ErrHTTPClientError ,
8080 wantFatal : true ,
8181 },
8282 {
83- name : "HTTP 401 → ErrHTTPClientError (fatal)" ,
84- in : & rpc.HTTPStatusError {StatusCode : 401 , Body : "" },
83+ name : "HTTP 404 → ErrHTTPClientError (fatal, wrong RPC path)" ,
84+ in : & rpc.HTTPStatusError {StatusCode : 404 , Body : "" },
85+ wantIs : ErrHTTPClientError ,
86+ wantFatal : true ,
87+ },
88+ {
89+ name : "HTTP 408 → ErrBadConnection (retryable, idle-conn cleanup from proxy)" ,
90+ in : & rpc.HTTPStatusError {StatusCode : 408 , Body : "" },
91+ wantIs : ErrBadConnection ,
92+ wantFatal : false ,
93+ wantRetry : true ,
94+ },
95+ {
96+ name : "HTTP 413 (PoC) → ErrHTTPClientError (fatal)" ,
97+ in : & rpc.HTTPStatusError {StatusCode : 413 , Body : `{"code":-32007,"message":"Request is too big"}` },
98+ wantIs : ErrHTTPClientError ,
99+ wantFatal : true ,
100+ },
101+ {
102+ name : "HTTP 425 → ErrBadConnection (retryable, TLS 0-RTT replay)" ,
103+ in : & rpc.HTTPStatusError {StatusCode : 425 , Body : "" },
104+ wantIs : ErrBadConnection ,
105+ wantFatal : false ,
106+ wantRetry : true ,
107+ },
108+ {
109+ name : "HTTP 429 → ErrBadConnection (retryable, rate limited by proxy/WAF)" ,
110+ in : & rpc.HTTPStatusError {StatusCode : 429 , Body : "" },
111+ wantIs : ErrBadConnection ,
112+ wantFatal : false ,
113+ wantRetry : true ,
114+ },
115+ {
116+ name : "HTTP 499 → ErrHTTPClientError (fatal, non-retryable 4xx catch-all)" ,
117+ in : & rpc.HTTPStatusError {StatusCode : 499 , Body : "" },
85118 wantIs : ErrHTTPClientError ,
86119 wantFatal : true ,
87120 },
0 commit comments