1 #include "helper.hpp"
2 #include "ipmi.hpp"
3 #include "manager_mock.hpp"
4 
5 #include <cstring>
6 #include <vector>
7 
8 #include <gtest/gtest.h>
9 
10 namespace blobs
11 {
12 
13 using ::testing::Return;
14 
15 // the request here is only the subcommand byte and therefore there's no invalid
16 // length check, etc to handle within the method.
17 
TEST(BlobCountTest,ReturnsZeroBlobs)18 TEST(BlobCountTest, ReturnsZeroBlobs)
19 {
20     // Calling BmcBlobGetCount if there are no handlers registered should just
21     // return that there are 0 blobs.
22 
23     ManagerMock mgr;
24     struct BmcBlobCountRx rep;
25 
26     rep.crc = 0;
27     rep.blobCount = 0;
28 
29     EXPECT_CALL(mgr, buildBlobList()).WillOnce(Return(0));
30 
31     auto result = validateReply(getBlobCount(&mgr, {}));
32 
33     EXPECT_EQ(sizeof(rep), result.size());
34     EXPECT_EQ(0, std::memcmp(result.data(), &rep, sizeof(rep)));
35 }
36 
TEST(BlobCountTest,ReturnsTwoBlobs)37 TEST(BlobCountTest, ReturnsTwoBlobs)
38 {
39     // Calling BmcBlobGetCount with one handler registered that knows of two
40     // blobs will return that it found two blobs.
41 
42     ManagerMock mgr;
43     struct BmcBlobCountRx rep;
44 
45     rep.crc = 0;
46     rep.blobCount = 2;
47 
48     EXPECT_CALL(mgr, buildBlobList()).WillOnce(Return(2));
49 
50     auto result = validateReply(getBlobCount(&mgr, {}));
51 
52     EXPECT_EQ(sizeof(rep), result.size());
53     EXPECT_EQ(0, std::memcmp(result.data(), &rep, sizeof(rep)));
54 }
55 } // namespace blobs
56