@@ -135,18 +135,28 @@ class CheckoutProtocolTest {
135135
136136 @Test
137137 fun `process dispatches ec error to registered handler with decoded payload` () {
138- var received: CheckoutError ? = null
138+ var received: ErrorResponse ? = null
139139 val client = CheckoutProtocol .Client ()
140140 .on(CheckoutProtocol .error) { received = it }
141141
142142 val errorMsg = """ {"jsonrpc":"2.0","method":"ec.error","params":""" +
143- """ {"messages":[{"code":"unknown_error","content":"fail","severity":"unrecoverable"}]}}"""
143+ """ {"error":{"ucp":{"version":"2026-04-08","status":"error"},"messages":[""" +
144+ """ {"type":"error","code":"unknown_error","content":"fail","severity":"unrecoverable"},""" +
145+ """ {"type":"error","code":"session_expired","content":"expired","severity":"recoverable"}""" +
146+ """ ],"continue_url":"https://example.com/retry"}}}"""
144147 client.process(errorMsg)
145148 shadowOf(Looper .getMainLooper()).runToEndOfTasks()
146149
147- assertThat(received?.code).isEqualTo(" unknown_error" )
148- assertThat(received?.content).isEqualTo(" fail" )
149- assertThat(received?.severity).isEqualTo(" unrecoverable" )
150+ assertThat(received?.ucp?.version).isEqualTo(" 2026-04-08" )
151+ assertThat(received?.ucp?.status).isEqualTo(StatusEnum .Error )
152+ assertThat(received?.messages).hasSize(2 )
153+ assertThat(received?.messages?.get(0 )?.type).isEqualTo(MessageType .Error )
154+ assertThat(received?.messages?.get(0 )?.code).isEqualTo(" unknown_error" )
155+ assertThat(received?.messages?.get(0 )?.content).isEqualTo(" fail" )
156+ assertThat(received?.messages?.get(0 )?.severity).isEqualTo(Severity .Unrecoverable )
157+ assertThat(received?.messages?.get(1 )?.code).isEqualTo(" session_expired" )
158+ assertThat(received?.messages?.get(1 )?.severity).isEqualTo(Severity .Recoverable )
159+ assertThat(received?.continueURL).isEqualTo(" https://example.com/retry" )
150160 }
151161
152162 @Test
0 commit comments