1 #include <blobs-ipmid/manager.hpp>
2 #include <blobs-ipmid/test/blob_mock.hpp>
3 
4 #include <gtest/gtest.h>
5 
6 namespace blobs
7 {
8 
9 using ::testing::Return;
10 
11 TEST(ManagerStatTest, StatNoHandler)
12 {
13     // There is no handler for this path.
14 
15     BlobManager mgr;
16     std::unique_ptr<BlobMock> m1 = std::make_unique<BlobMock>();
17     auto m1ptr = m1.get();
18     EXPECT_TRUE(mgr.registerHandler(std::move(m1)));
19 
20     struct BlobMeta meta;
21     std::string path = "/asdf/asdf";
22     EXPECT_CALL(*m1ptr, canHandleBlob(path)).WillOnce(Return(false));
23 
24     EXPECT_FALSE(mgr.stat(path, &meta));
25 }
26 
27 TEST(ManagerStatTest, StatHandlerFoundButFails)
28 {
29     // There is a handler for this path but Stat fails.
30 
31     BlobManager mgr;
32     std::unique_ptr<BlobMock> m1 = std::make_unique<BlobMock>();
33     auto m1ptr = m1.get();
34     EXPECT_TRUE(mgr.registerHandler(std::move(m1)));
35 
36     struct BlobMeta meta;
37     std::string path = "/asdf/asdf";
38     EXPECT_CALL(*m1ptr, canHandleBlob(path)).WillOnce(Return(true));
39     EXPECT_CALL(*m1ptr, stat(path, &meta)).WillOnce(Return(false));
40 
41     EXPECT_FALSE(mgr.stat(path, &meta));
42 }
43 
44 TEST(ManagerStatTest, StatHandlerFoundAndSucceeds)
45 {
46     // There is a handler and Stat succeeds.
47 
48     BlobManager mgr;
49     std::unique_ptr<BlobMock> m1 = std::make_unique<BlobMock>();
50     auto m1ptr = m1.get();
51     EXPECT_TRUE(mgr.registerHandler(std::move(m1)));
52 
53     struct BlobMeta meta;
54     std::string path = "/asdf/asdf";
55     EXPECT_CALL(*m1ptr, canHandleBlob(path)).WillOnce(Return(true));
56     EXPECT_CALL(*m1ptr, stat(path, &meta)).WillOnce(Return(true));
57 
58     EXPECT_TRUE(mgr.stat(path, &meta));
59 }
60 } // namespace blobs
61