mirror of
https://github.com/logos-messaging/logos-delivery.git
synced 2026-07-19 11:09:26 +00:00
Add messaging REST client test
This commit is contained in:
parent
6cc7b3b9a9
commit
821fbe028f
@ -1,10 +1,13 @@
|
||||
{.used.}
|
||||
|
||||
import std/[options, net]
|
||||
import chronos, testutils/unittests
|
||||
import chronos, testutils/unittests, presto, presto/client as presto_client
|
||||
import brokers/broker_context
|
||||
import logos_delivery
|
||||
import logos_delivery/api/conf/logos_delivery_conf
|
||||
import
|
||||
logos_delivery/api/conf/logos_delivery_conf,
|
||||
logos_delivery/messaging/rest_api/client as messaging_rest_client,
|
||||
logos_delivery/waku/rest_api/endpoint/client
|
||||
import tools/confutils/cli_args
|
||||
import ../testlib/testasync
|
||||
|
||||
@ -16,7 +19,7 @@ import ../testlib/testasync
|
||||
## messaging -> waku + messagingClient
|
||||
## channels -> waku + messagingClient + reliableChannelManager
|
||||
|
||||
proc nodeConf(entryLayer: EntryLayer): WakuNodeConf =
|
||||
proc nodeConf(entryLayer: EntryLayer, rest = false): WakuNodeConf =
|
||||
var conf = defaultWakuNodeConf().valueOr:
|
||||
raiseAssert error
|
||||
conf.entryLayer = entryLayer
|
||||
@ -26,9 +29,15 @@ proc nodeConf(entryLayer: EntryLayer): WakuNodeConf =
|
||||
conf.discv5UdpPort = Port(0)
|
||||
conf.clusterId = some(3'u16)
|
||||
conf.numShardsInNetwork = 1
|
||||
conf.rest = false
|
||||
conf.rest = rest
|
||||
conf.restAddress = parseIpAddress("127.0.0.1")
|
||||
conf.restPort = 0'u16 # bind to an ephemeral port
|
||||
return conf
|
||||
|
||||
proc restClientFor(node: LogosDelivery): RestClientRef =
|
||||
let boundPort = node.waku.restServer.httpServer.address.port
|
||||
newRestHttpClient(initTAddress(parseIpAddress("127.0.0.1"), boundPort))
|
||||
|
||||
suite "LogosDelivery - entry layer selection":
|
||||
asyncTest "kernel: waku only, no messaging / channels":
|
||||
var node: LogosDelivery
|
||||
@ -71,3 +80,49 @@ suite "LogosDelivery - entry layer selection":
|
||||
node.ensureChannels().isOk()
|
||||
(await node.stop()).isOkOr:
|
||||
raiseAssert "stop failed: " & error
|
||||
|
||||
asyncTest "messaging + rest: messaging REST endpoints are installed and working":
|
||||
## entry-layer=messaging, mode=Core, rest=true -> `start` mounts the messaging
|
||||
## REST endpoints; they respond over HTTP.
|
||||
var node: LogosDelivery
|
||||
lockNewGlobalBrokerContext:
|
||||
node = (await LogosDelivery.new(nodeConf(EntryLayer.messaging, rest = true))).valueOr:
|
||||
raiseAssert error
|
||||
(await node.start()).isOkOr:
|
||||
raiseAssert "start failed: " & error
|
||||
|
||||
check not node.messagingClient.isNil()
|
||||
|
||||
let client = restClientFor(node)
|
||||
|
||||
# A command endpoint and an observability endpoint both respond -> the
|
||||
# handlers were installed onto the kernel router.
|
||||
let subResp =
|
||||
await client.messagingPostSubscriptionsV1(@["/test/1/entry-layer/proto"])
|
||||
check subResp.status == 200
|
||||
|
||||
let sendEventsResp = await client.messagingGetSendEventsV1()
|
||||
check sendEventsResp.status == 200
|
||||
|
||||
(await node.stop()).isOkOr:
|
||||
raiseAssert "stop failed: " & error
|
||||
|
||||
asyncTest "kernel + rest: messaging REST endpoints are NOT installed":
|
||||
## Gating check: a kernel-only node still starts a REST server, but the
|
||||
## messaging endpoints must be absent (no messaging client to mount them).
|
||||
var node: LogosDelivery
|
||||
lockNewGlobalBrokerContext:
|
||||
node = (await LogosDelivery.new(nodeConf(EntryLayer.kernel, rest = true))).valueOr:
|
||||
raiseAssert error
|
||||
(await node.start()).isOkOr:
|
||||
raiseAssert "start failed: " & error
|
||||
|
||||
check node.messagingClient.isNil()
|
||||
|
||||
let client = restClientFor(node)
|
||||
let subResp =
|
||||
await client.messagingPostSubscriptionsV1(@["/test/1/entry-layer/proto"])
|
||||
check subResp.status == 404 # route not mounted
|
||||
|
||||
(await node.stop()).isOkOr:
|
||||
raiseAssert "stop failed: " & error
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user