xref: /openbmc/phosphor-ipmi-blobs/test/manager_sessionstat_unittest.cpp (revision 8bc117792fbf118dd74d015546c22612961ccc26)
1 #include "blob_mock.hpp"
2 #include "manager.hpp"
3 
4 #include <gtest/gtest.h>
5 
6 namespace blobs
7 {
8 
9 using ::testing::_;
10 using ::testing::Return;
11 
TEST(ManagerSessionStatTest,StatNoSessionReturnsFalse)12 TEST(ManagerSessionStatTest, StatNoSessionReturnsFalse)
13 {
14     // Calling Stat on a session that doesn't exist should return false.
15 
16     BlobManager mgr;
17     BlobMeta meta;
18     uint16_t sess = 1;
19 
20     EXPECT_FALSE(mgr.stat(sess, &meta));
21 }
22 
TEST(ManagerSessionStatTest,StatSessionFoundButHandlerReturnsFalse)23 TEST(ManagerSessionStatTest, StatSessionFoundButHandlerReturnsFalse)
24 {
25     // The handler was found but it returned failure.
26 
27     BlobManager mgr;
28     std::unique_ptr<BlobMock> m1 = std::make_unique<BlobMock>();
29     auto m1ptr = m1.get();
30     EXPECT_TRUE(mgr.registerHandler(std::move(m1)));
31 
32     uint16_t flags = OpenFlags::read, sess;
33     std::string path = "/asdf/asdf";
34 
35     EXPECT_CALL(*m1ptr, canHandleBlob(path)).WillOnce(Return(true));
36     EXPECT_CALL(*m1ptr, open(_, flags, path)).WillOnce(Return(true));
37     EXPECT_TRUE(mgr.open(flags, path, &sess));
38 
39     BlobMeta meta;
40     EXPECT_CALL(*m1ptr, stat(sess, &meta)).WillOnce(Return(false));
41 
42     EXPECT_FALSE(mgr.stat(sess, &meta));
43 }
44 
TEST(ManagerSessionStatTest,StatSessionFoundAndHandlerReturnsSuccess)45 TEST(ManagerSessionStatTest, StatSessionFoundAndHandlerReturnsSuccess)
46 {
47     // The handler was found and returned success.
48 
49     BlobManager mgr;
50     std::unique_ptr<BlobMock> m1 = std::make_unique<BlobMock>();
51     auto m1ptr = m1.get();
52     EXPECT_TRUE(mgr.registerHandler(std::move(m1)));
53 
54     uint16_t flags = OpenFlags::read, sess;
55     std::string path = "/asdf/asdf";
56 
57     EXPECT_CALL(*m1ptr, canHandleBlob(path)).WillOnce(Return(true));
58     EXPECT_CALL(*m1ptr, open(_, flags, path)).WillOnce(Return(true));
59     EXPECT_TRUE(mgr.open(flags, path, &sess));
60 
61     BlobMeta meta;
62     EXPECT_CALL(*m1ptr, stat(sess, &meta)).WillOnce(Return(true));
63 
64     EXPECT_TRUE(mgr.stat(sess, &meta));
65 }
66 } // namespace blobs
67