From d194b6605f7f5bea465c30dda6999f71840db16b Mon Sep 17 00:00:00 2001 From: NagyZoltanPeter <113987313+NagyZoltanPeter@users.noreply.github.com> Date: Fri, 3 Jul 2026 12:25:09 +0200 Subject: [PATCH] test: assert 404 via raw string client in messaging REST test presto's typed REST client raises RestDecodingError when it cannot decode a non-2xx text error body into the response type. Add a RestResponse[string] stub (messagingGetSendEventsByIdRawV1) and point the "already-polled id -> 404" assertion at it, matching the relay REST test pattern. Co-Authored-By: Claude Opus 4.8 --- logos_delivery/messaging/rest_api/client.nim | 8 ++++++++ tests/api/test_messaging_rest.nim | 9 +++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/logos_delivery/messaging/rest_api/client.nim b/logos_delivery/messaging/rest_api/client.nim index c202b3f1d..c618849ca 100644 --- a/logos_delivery/messaging/rest_api/client.nim +++ b/logos_delivery/messaging/rest_api/client.nim @@ -50,6 +50,14 @@ proc messagingGetSendEventsByIdV1*( rest, endpoint: "/messaging/v1/events/send/{requestId}", meth: HttpMethod.MethodGet .} +# Raw variant: the typed client above cannot decode a non-2xx text error body, +# so status-code assertions (e.g. 404) use this string form. +proc messagingGetSendEventsByIdRawV1*( + requestId: string +): RestResponse[string] {. + rest, endpoint: "/messaging/v1/events/send/{requestId}", meth: HttpMethod.MethodGet +.} + proc messagingGetReceivedMessagesV1*(): RestResponse[seq[ReceivedMessageRecord]] {. rest, endpoint: "/messaging/v1/events/received", meth: HttpMethod.MethodGet .} diff --git a/tests/api/test_messaging_rest.nim b/tests/api/test_messaging_rest.nim index 8e86d912e..66c1816d8 100644 --- a/tests/api/test_messaging_rest.nim +++ b/tests/api/test_messaging_rest.nim @@ -11,6 +11,7 @@ import brokers/broker_context import logos_delivery import logos_delivery/messaging/rest_api/client as messaging_rest_client, + logos_delivery/waku/rest_api/endpoint/client, logos_delivery/waku/common/base64 import tools/confutils/cli_args import ../testlib/[wakucore, testasync] @@ -99,8 +100,7 @@ suite "Messaging REST API": brokerCtx, MessageSentEvent(requestId: reqA, messageHash: "0xaa") ) MessageErrorEvent.emit( - brokerCtx, - MessageErrorEvent(requestId: reqB, messageHash: "0xbb", error: "boom"), + brokerCtx, MessageErrorEvent(requestId: reqB, messageHash: "0xbb", error: "boom") ) await sleepAsync(settleDelay) @@ -113,8 +113,9 @@ suite "Messaging REST API": byIdResp.data.events.anyIt(it.kind == SendEventKind.Sent) byIdResp.data.events.anyIt(it.kind == SendEventKind.Propagated) - # Unknown / already-polled id → 404. - let missingResp = await client.messagingGetSendEventsByIdV1($reqA) + # Unknown / already-polled id → 404 (raw string client so the text error + # body decodes; the typed client would raise on a non-2xx body). + let missingResp = await client.messagingGetSendEventsByIdRawV1($reqA) check missingResp.status == 404 # GET all now returns only reqB (with its error), then clears.