#include #include #include using json = nlohmann::json; namespace StatusGo = Status::StatusGo; namespace Status::Testing { TEST(StatusGoQt, TestJsonParsing) { auto callRawRPCJsonStr = R"({"jsonrpc":"2.0","id":42,"error":{"code":-32601,"message":"Method not found"}})"; auto callRawRPCJson = json::parse(callRawRPCJsonStr).get(); ASSERT_EQ(callRawRPCJson.jsonrpc, "2.0"); ASSERT_EQ(callRawRPCJson.id, 42); StatusGo::JsonError expectedJsonError = {-32601, "Method not found"}; ASSERT_EQ(callRawRPCJson.error.code, expectedJsonError.code); ASSERT_EQ(callRawRPCJson.error.message, expectedJsonError.message); auto callRawRPCBadJsonKeyStr = R"({"unknown":"2.0","id":42,"error":{"code":-32601,"message":"Method not found"}})"; ASSERT_THROW(json::parse(callRawRPCBadJsonKeyStr).get(), nlohmann::detail::out_of_range); auto callRawRPCBadJsonValStr = R"({"jsonrpc":"2.0","id":42,"error":23})"; ASSERT_THROW(json::parse(callRawRPCBadJsonValStr).get(), nlohmann::detail::type_error); auto statusGoWithResultJsonStr = R"({"result":"0x123"})"; auto statusGoWithResultJson = json::parse(statusGoWithResultJsonStr).get(); ASSERT_EQ(statusGoWithResultJson.result, "0x123"); } } // namespace Status::Testing