1 #include <blobs-ipmid/manager.hpp> 2 #include <blobs-ipmid/test/blob_mock.hpp> 3 #include <vector> 4 5 #include <gtest/gtest.h> 6 7 namespace blobs 8 { 9 10 using ::testing::_; 11 using ::testing::Return; 12 13 TEST(ManagerCommitTest, CommitNoSessionReturnsFalse) 14 { 15 // Calling Commit on a session that doesn't exist should return false. 16 17 BlobManager mgr; 18 uint16_t sess = 1; 19 std::vector<uint8_t> data; 20 21 EXPECT_FALSE(mgr.commit(sess, data)); 22 } 23 24 TEST(ManagerCommitTest, CommitSessionFoundButHandlerReturnsFalse) 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::write, 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 std::vector<uint8_t> data; 41 EXPECT_CALL(*m1ptr, commit(sess, data)).WillOnce(Return(false)); 42 43 EXPECT_FALSE(mgr.commit(sess, data)); 44 } 45 46 TEST(ManagerCommitTest, CommitSessionFoundAndHandlerReturnsSuccess) 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::write, 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 std::vector<uint8_t> data; 63 EXPECT_CALL(*m1ptr, commit(sess, data)).WillOnce(Return(true)); 64 65 EXPECT_TRUE(mgr.commit(sess, data)); 66 } 67 } // namespace blobs 68