src.dualinventive.com/dinet/libdi/tests/rpc_deserialize_msg.cpp

69 lines
1.3 KiB
C++

#include <string>
#include <memory>
#include <di/rpc.h>
#include <di/time.h>
#include <gtest/gtest.h>
/* Used because serialize message header loads di_time_get_stamp */
TEST(time, init)
{
di_time_init();
}
/**
Deserialize
```
{
"dinetrpc": 1,
"rep": "notify:info",
"device:uid": "00000000000000000000000000000000",
"id": 2,
"result": null
}
```
*/
TEST(rpc_deserialize, msg_rep)
{
mpack_reader_t r;
struct di_rpc_msg msg;
mpack_reader_init_file(&r, "data/rpc_deserialize_msg_1.mp");
di_rpc_deserialize_msg(&r, &msg);
ASSERT_EQ(1U, msg.dinetrpc);
ASSERT_STREQ("00000000000000000000000000000000", msg.device_uid);
ASSERT_EQ(DI_RPC_MSG_TYPE_REPLY, msg.msg_type);
ASSERT_EQ(DI_RPC_TYPE_NOTIFY_INFO, msg.type);
ASSERT_EQ(2U, msg.id);
mpack_reader_destroy(&r);
}
/**
Deserialize
```
{
"dinetrpc": 1,
"req": "deadbeef",
"device:uid": "00000000000000000000000000000000",
"id": 1337
}
```
*/
TEST(rpc_deserialize, msg_unknown_type)
{
mpack_reader_t r;
struct di_rpc_msg msg;
mpack_reader_init_file(&r, "data/rpc_deserialize_msg_2.mp");
di_rpc_deserialize_msg(&r, &msg);
ASSERT_EQ(1U, msg.dinetrpc);
ASSERT_EQ(DI_RPC_MSG_TYPE_REQUEST, msg.msg_type);
ASSERT_EQ(DI_RPC_TYPE_UNKNOWN, msg.type);
ASSERT_EQ(1337U, msg.id);
mpack_reader_destroy(&r);
}