#include #include #include #include #include #include using namespace std; using namespace Di; using namespace Di::Rpc; TEST(Msg, MsgType) { Msg msg; unique_ptr json; // Unknown (initial) EXPECT_EQ(msg.getMsgType(), Msg::Type::UNKNOWN); // Unknown json = unique_ptr(new Json("{\"test\":\"connection:disconnect\"}", 1)); msg.decodeHeader(move(json)); EXPECT_EQ(msg.getMsgType(), Msg::Type::UNKNOWN); // Request json = unique_ptr(new Json("{\"req\":\"test\"}", 1)); msg.decodeHeader(move(json)); EXPECT_EQ(msg.getMsgType(), Msg::Type::REQUEST); // Reply json = unique_ptr(new Json("{\"rep\":\"test\"}", 1)); msg.decodeHeader(move(json)); EXPECT_EQ(msg.getMsgType(), Msg::Type::REPLY); // Publish json = unique_ptr(new Json("{\"pub\":\"test\"}", 1)); msg.decodeHeader(move(json)); EXPECT_EQ(msg.getMsgType(), Msg::Type::PUBLISH); } TEST(Msg, RpcVersion) { Msg msg; unique_ptr json; EXPECT_EQ(msg.getRpcVersion(), 0U); json = unique_ptr(new Json("{\"dinetrpc\": 1}", 1)); msg.decodeHeader(move(json)); EXPECT_EQ(msg.getRpcVersion(), 1U); json = unique_ptr(new Json("{\"dinetrpc\": 1234}", 1)); msg.decodeHeader(move(json)); EXPECT_EQ(msg.getRpcVersion(), 1234U); } TEST(Msg, ProjectId) { Msg msg; shared_ptr json; EXPECT_EQ(msg.getProjectId(), 0U); json = make_shared("{\"project:id\": 1234}", 0); msg.decodeHeader(json); EXPECT_EQ(msg.getProjectId(), 1234U); } TEST(Msg, DeviceUid) { Msg msg; shared_ptr json; EXPECT_EQ(msg.getDeviceUid(), ""); json = make_shared("{\"device:uid\": \"1234\"}", 0); msg.decodeHeader(json); EXPECT_EQ(msg.getDeviceUid(), "1234"); json = make_shared("{\"device:uid\": \"5f5f64695f73696d756c61746f725f5f\"}"); msg.decodeHeader(json); EXPECT_EQ(msg.getDeviceUid(), "5f5f64695f73696d756c61746f725f5f"); } // The device:uid and project:id may coexist TEST(Msg, DeviceUidAndProjectID) { Msg msg; shared_ptr json; EXPECT_EQ(msg.getDeviceUid(), ""); json = make_shared("{\"device:uid\": \"1234\", \"project:id\": 666}", 0); msg.decodeHeader(json); EXPECT_EQ(msg.getDeviceUid(), "1234"); EXPECT_EQ(msg.getProjectId(), 666); } TEST(Msg, Id) { Msg msg; shared_ptr json; EXPECT_EQ(msg.getId(), 0); json = make_shared("{\"rep\":\"boem:bats\", \"id\": 1234}", 0); msg.decodeHeader(move(json)); EXPECT_EQ(msg.getId(), 1234U); } TEST(Msg, ClassMethod) { Msg msg; shared_ptr json; // Published connection disconnect event json = make_shared("{\"pub\":\"connection:disconnect\"}", 0); msg.decodeHeader(move(json)); EXPECT_EQ(msg.getMsgType(), Msg::Type::PUBLISH); EXPECT_EQ(msg.getClass(), "connection"); EXPECT_EQ(msg.getMethod(), "disconnect"); } TEST(Msg, getMsgType_StringFromEnum) { Msg msg; msg._msgType = Msg::Type::REQUEST; EXPECT_EQ("req", msg.getMsgTypeString()); msg._msgType = Msg::Type::REPLY; EXPECT_EQ("rep", msg.getMsgTypeString()); msg._msgType = Msg::Type::PUBLISH; EXPECT_EQ("pub", msg.getMsgTypeString()); msg._msgType = Msg::Type::UNKNOWN; EXPECT_EQ("", msg.getMsgTypeString()); }