1 #include "helper.hpp" 2 #include "ipmi.hpp" 3 #include "manager_mock.hpp" 4 5 #include <cstring> 6 #include <string> 7 8 #include <gtest/gtest.h> 9 10 namespace blobs 11 { 12 13 using ::testing::Return; 14 TEST(BlobEnumerateTest,VerifyIfRequestByIdInvalidReturnsFailure)15 TEST(BlobEnumerateTest, VerifyIfRequestByIdInvalidReturnsFailure) 16 { 17 // This tests to verify that if the index is invalid, it'll return failure. 18 19 ManagerMock mgr; 20 std::vector<uint8_t> request; 21 struct BmcBlobEnumerateTx req; 22 req.blobIdx = 0; 23 24 request.resize(sizeof(struct BmcBlobEnumerateTx)); 25 std::memcpy(request.data(), &req, sizeof(struct BmcBlobEnumerateTx)); 26 27 EXPECT_CALL(mgr, getBlobId(req.blobIdx)).WillOnce(Return("")); 28 EXPECT_EQ(ipmi::responseInvalidFieldRequest(), 29 enumerateBlob(&mgr, request)); 30 } 31 TEST(BlobEnumerateTest,BoringRequestByIdAndReceive)32 TEST(BlobEnumerateTest, BoringRequestByIdAndReceive) 33 { 34 // This tests that if an index into the blob_id cache is valid, the command 35 // will return the blobId. 36 37 ManagerMock mgr; 38 std::vector<uint8_t> request; 39 struct BmcBlobEnumerateTx req; 40 req.blobIdx = 0; 41 std::string blobId = "/asdf"; 42 43 request.resize(sizeof(struct BmcBlobEnumerateTx)); 44 std::memcpy(request.data(), &req, sizeof(struct BmcBlobEnumerateTx)); 45 46 EXPECT_CALL(mgr, getBlobId(req.blobIdx)).WillOnce(Return(blobId)); 47 48 auto result = validateReply(enumerateBlob(&mgr, request)); 49 50 // We're expecting this as a response. 51 // blobId.length + 1 + sizeof(uint16_t); 52 EXPECT_EQ(blobId.length() + 1 + sizeof(uint16_t), result.size()); 53 EXPECT_EQ(blobId, 54 // Remove crc and nul-terminator. 55 std::string(result.begin() + sizeof(uint16_t), result.end() - 1)); 56 } 57 } // namespace blobs 58