From 4c3816468866f56ad462e1bd72f1aadb415768de Mon Sep 17 00:00:00 2001 From: coffeepots Date: Mon, 11 Jun 2018 19:26:16 +0100 Subject: [PATCH] WIP tests for errors --- tests/debugclient.nim | 18 ++++++++++++++++++ tests/testerrors.nim | 25 +++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 tests/debugclient.nim create mode 100644 tests/testerrors.nim diff --git a/tests/debugclient.nim b/tests/debugclient.nim new file mode 100644 index 0000000..1e1f5b1 --- /dev/null +++ b/tests/debugclient.nim @@ -0,0 +1,18 @@ +include ../ eth-rpc / client +import chronicles + +proc rawCall*(self: RpcClient, name: string, + msg: string): Future[Response] {.async.} = + # For debug purposes only + let id = $self.nextId + self.nextId.inc + debug "Sending message", msg = msg + let res = await self.transp.write(msg & "\c\l") + debug "Receiving length assert", value = res, length = len(msg), lengthDifferent = res != len(msg) + + # completed by processMessage. + var newFut = newFuture[Response]() + # add to awaiting responses + self.awaiting[id] = newFut + + result = await newFut diff --git a/tests/testerrors.nim b/tests/testerrors.nim new file mode 100644 index 0000000..7390591 --- /dev/null +++ b/tests/testerrors.nim @@ -0,0 +1,25 @@ +#[ + This module uses debug versions of the rpc components that + allow unchecked and unformatted calls. +]# + +import unittest, debugclient, ../rpcserver +import strformat, chronicles + +var server = newRpcServer("localhost", 8547.Port) +var client = newRpcClient() + +server.start() +waitFor client.connect("localhost", Port(8547)) + +server.rpc("rpc") do(a: int, b: int): + result = %(&"a: {a}, b: {b}") + +suite "RPC Errors": + test "Malformed json": + expect ValueError: + let + malformedJson = "{field: 2, \"field: 3}\n" + res = waitFor client.rawCall("rpc", malformedJson) + info "res", res +