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