tools: blob: implement open blob
Implement the host-side tool's open blob command.
Change-Id: Iee432eae0539015e87969159a3d03761df9f8fb5
Signed-off-by: Patrick Venture <venture@google.com>
diff --git a/test/tools_blob_unittest.cpp b/test/tools_blob_unittest.cpp
index 0d5787e..e7e0ed6 100644
--- a/test/tools_blob_unittest.cpp
+++ b/test/tools_blob_unittest.cpp
@@ -140,3 +140,23 @@
std::vector<std::uint8_t> metadata = {};
EXPECT_EQ(metadata, meta.metadata);
}
+
+TEST(BlobHandler, openBlobSucceeds)
+{
+ /* The open blob succeeds. */
+ IpmiInterfaceMock ipmiMock;
+ BlobHandler blob(&ipmiMock);
+
+ std::vector<std::uint8_t> request = {
+ 0xcf, 0xc2, 0x00, BlobHandler::BlobOEMCommands::bmcBlobOpen,
+ 0x00, 0x00, 0x02, 0x04,
+ 'a', 'b', 'c', 'd'};
+
+ std::vector<std::uint8_t> resp = {0xcf, 0xc2, 0x00, 0x00, 0x00, 0xfe, 0xed};
+
+ EXPECT_CALL(ipmiMock, sendPacket(Eq(request))).WillOnce(Return(resp));
+
+ auto session =
+ blob.openBlob("abcd", blobs::FirmwareBlobHandler::UpdateFlags::lpc);
+ EXPECT_EQ(0xedfe, session);
+}