1 #include "blob_mock.hpp"
2 #include "manager.hpp"
3
4 #include <gtest/gtest.h>
5
6 namespace blobs
7 {
8
9 using ::testing::Return;
10
TEST(ManagerStatTest,StatNoHandler)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 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
TEST(ManagerStatTest,StatHandlerFoundButFails)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 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
TEST(ManagerStatTest,StatHandlerFoundAndSucceeds)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 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