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