1 #include <ipmid/sessionhelper.hpp> 2 3 #include <gtest/gtest.h> 4 5 TEST(parseSessionInputPayloadTest, ValidObjectPath) 6 { 7 uint32_t sessionId = 0; 8 uint8_t sessionHandle = 0; 9 std::string objectPath = 10 "/xyz/openbmc_project/ipmi/session/eth0/12a4567d_8a"; 11 12 EXPECT_TRUE( 13 parseCloseSessionInputPayload(objectPath, sessionId, sessionHandle)); 14 EXPECT_EQ(0x12a4567d, sessionId); 15 EXPECT_EQ(0x8a, sessionHandle); 16 } 17 18 TEST(parseSessionInputPayloadTest, InvalidObjectPath) 19 { 20 uint32_t sessionId = 0; 21 uint8_t sessionHandle = 0; 22 // A valid object path will be like 23 // "/xyz/openbmc_project/ipmi/session/channel/sessionId_sessionHandle" 24 // Ex: "/xyz/openbmc_project/ipmi/session/eth0/12a4567d_8a" 25 // SessionId : 0X12a4567d 26 // SessionHandle: 0X8a 27 std::string objectPath = "/xyz/openbmc_project/ipmi/session/eth0/12a4567d"; 28 29 EXPECT_FALSE( 30 parseCloseSessionInputPayload(objectPath, sessionId, sessionHandle)); 31 } 32 33 TEST(parseSessionInputPayloadTest, NoObjectPath) 34 { 35 uint32_t sessionId = 0; 36 uint8_t sessionHandle = 0; 37 std::string objectPath; 38 39 EXPECT_FALSE( 40 parseCloseSessionInputPayload(objectPath, sessionId, sessionHandle)); 41 } 42 43 TEST(isSessionObjectMatchedTest, ValidSessionId) 44 { 45 std::string objectPath = 46 "/xyz/openbmc_project/ipmi/session/eth0/12a4567d_8a"; 47 uint32_t sessionId = 0x12a4567d; 48 uint8_t sessionHandle = 0; 49 50 EXPECT_TRUE(isSessionObjectMatched(objectPath, sessionId, sessionHandle)); 51 } 52 53 TEST(isSessionObjectMatchedTest, ValidSessionHandle) 54 { 55 std::string objectPath = 56 "/xyz/openbmc_project/ipmi/session/eth0/12a4567d_8a"; 57 uint32_t sessionId = 0; 58 uint8_t sessionHandle = 0x8a; 59 60 EXPECT_TRUE(isSessionObjectMatched(objectPath, sessionId, sessionHandle)); 61 } 62 63 TEST(isSessionObjectMatchedTest, InvalidSessionId) 64 { 65 std::string objectPath = 66 "/xyz/openbmc_project/ipmi/session/eth0/12a4567d_8a"; 67 uint32_t sessionId = 0x1234b67d; 68 uint8_t sessionHandle = 0; 69 70 EXPECT_FALSE(isSessionObjectMatched(objectPath, sessionId, sessionHandle)); 71 } 72 73 TEST(isSessionObjectMatchedTest, InvalidSessionHandle) 74 { 75 std::string objectPath = 76 "/xyz/openbmc_project/ipmi/session/eth0/12a4567d_8a"; 77 uint32_t sessionId = 0; 78 uint8_t sessionHandle = 0x9b; 79 80 EXPECT_FALSE(isSessionObjectMatched(objectPath, sessionId, sessionHandle)); 81 } 82 83 TEST(isSessionObjectMatchedTest, ZeroSessionId_ZeroSessionHandle) 84 { 85 std::string objectPath = 86 "/xyz/openbmc_project/ipmi/session/eth0/12a4567d_8a"; 87 uint32_t sessionId = 0; 88 uint8_t sessionHandle = 0; 89 90 EXPECT_FALSE(isSessionObjectMatched(objectPath, sessionId, sessionHandle)); 91 } 92 93 TEST(isSessionObjectMatchedTest, InvalidObjectPath) 94 { 95 // A valid object path will be like 96 // "/xyz/openbmc_project/ipmi/session/channel/sessionId_sessionHandle" 97 // Ex: "/xyz/openbmc_project/ipmi/session/eth0/12a4567d_8a" 98 // SessionId : 0X12a4567d 99 // SessionHandle: 0X8a 100 std::string objectPath = "/xyz/openbmc_project/ipmi/session/eth0/12a4567d"; 101 uint32_t sessionId = 0x12a4567d; 102 uint8_t sessionHandle = 0; 103 104 EXPECT_FALSE(isSessionObjectMatched(objectPath, sessionId, sessionHandle)); 105 } 106 107 TEST(isSessionObjectMatchedTest, NoObjectPath) 108 { 109 std::string objectPath; 110 uint32_t sessionId = 0x12a4567d; 111 uint8_t sessionHandle = 0x8a; 112 113 EXPECT_FALSE(isSessionObjectMatched(objectPath, sessionId, sessionHandle)); 114 } 115