bmc: firmware updatePending: stat(blob)
Signed-off-by: Patrick Venture <venture@google.com>
Change-Id: I4b51f7d0d876c1b81f6ea7cb414e342e89407988
diff --git a/firmware_handler.cpp b/firmware_handler.cpp
index 6e64d9d..77e0e50 100644
--- a/firmware_handler.cpp
+++ b/firmware_handler.cpp
@@ -157,7 +157,7 @@
{
/* We know we support this path because canHandle is called ahead */
if (path == verifyBlobId || path == activeImageBlobId ||
- path == activeHashBlobId)
+ path == activeHashBlobId || path == updateBlobId)
{
/* These blobs are placeholders that indicate things, or allow actions,
* but are not stat-able as-is.
diff --git a/test/firmware_state_updatepending_unittest.cpp b/test/firmware_state_updatepending_unittest.cpp
index 5fdc952..9b8b755 100644
--- a/test/firmware_state_updatepending_unittest.cpp
+++ b/test/firmware_state_updatepending_unittest.cpp
@@ -173,11 +173,47 @@
}
/*
- * TODO: deleteBlob(blob)
+ * stat(blob)
*/
+TEST_F(FirmwareHandlerUpdatePendingTest, StatOnActiveImageReturnsFailure)
+{
+ getToUpdatePending();
+ ASSERT_TRUE(handler->canHandleBlob(activeImageBlobId));
+
+ blobs::BlobMeta meta;
+ EXPECT_FALSE(handler->stat(activeImageBlobId, &meta));
+}
+
+TEST_F(FirmwareHandlerUpdatePendingTest, StatOnUpdateBlobReturnsFailure)
+{
+ getToUpdatePending();
+ ASSERT_TRUE(handler->canHandleBlob(updateBlobId));
+
+ blobs::BlobMeta meta;
+ EXPECT_FALSE(handler->stat(updateBlobId, &meta));
+}
+
+TEST_F(FirmwareHandlerUpdatePendingTest, StatOnNormalBlobsReturnsSuccess)
+{
+ getToUpdatePending();
+
+ blobs::BlobMeta expected;
+ expected.blobState = FirmwareBlobHandler::UpdateFlags::ipmi;
+ expected.size = 0;
+
+ std::vector<std::string> testBlobs = {staticLayoutBlobId, hashBlobId};
+ for (const auto& blob : testBlobs)
+ {
+ ASSERT_TRUE(handler->canHandleBlob(blob));
+
+ blobs::BlobMeta meta = {};
+ EXPECT_TRUE(handler->stat(blob, &meta));
+ EXPECT_EQ(expected, meta);
+ }
+}
/*
- * stat(blob)
+ * TODO: deleteBlob(blob)
*/
/*