firmware: add handler for static layout

Add static layout handler.

Change-Id: I5c4cfe9782d59d32b16556e1d82b468c119eeb76
Signed-off-by: Patrick Venture <venture@google.com>
diff --git a/test/firmware_canhandle_unittest.cpp b/test/firmware_canhandle_unittest.cpp
index 2350828..b82ab6a 100644
--- a/test/firmware_canhandle_unittest.cpp
+++ b/test/firmware_canhandle_unittest.cpp
@@ -1,4 +1,5 @@
 #include "firmware_handler.hpp"
+#include "image_mock.hpp"
 
 #include <memory>
 #include <vector>
@@ -9,7 +10,6 @@
 {
 TEST(FirmwareHandlerCanHandleTest, VerifyItemsInListAreOk)
 {
-
     struct ListItem
     {
         std::string name;
@@ -19,8 +19,15 @@
     std::vector<ListItem> items = {
         {"asdf", true}, {"nope", false}, {"123123", false}, {"bcdf", true}};
 
+    ImageHandlerMock imageMock;
+
+    std::vector<HandlerPack> blobs = {
+        {"asdf", &imageMock},
+        {"bcdf", &imageMock},
+    };
+
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
-        {"asdf", "bcdf"}, static_cast<uint16_t>(FirmwareUpdateFlags::bt));
+        blobs, static_cast<uint16_t>(FirmwareUpdateFlags::bt));
 
     for (const auto& item : items)
     {
diff --git a/test/firmware_handler_unittest.cpp b/test/firmware_handler_unittest.cpp
index 8ef74c1..16395df 100644
--- a/test/firmware_handler_unittest.cpp
+++ b/test/firmware_handler_unittest.cpp
@@ -1,7 +1,9 @@
 #include "firmware_handler.hpp"
+#include "image_mock.hpp"
 
 #include <algorithm>
 #include <memory>
+#include <vector>
 
 #include <gtest/gtest.h>
 
@@ -15,7 +17,13 @@
 }
 TEST(FirmwareHandlerTest, CreateEmptyListVerifyHasHash)
 {
-    auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler({"asdf"}, 0);
+    ImageHandlerMock imageMock;
+
+    std::vector<HandlerPack> blobs = {
+        {"asdf", &imageMock},
+    };
+
+    auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, 0);
     auto result = handler->getBlobIds();
     EXPECT_EQ(2, result.size());
     EXPECT_EQ(2, std::count(result.begin(), result.end(), "asdf") +
diff --git a/test/firmware_stat_unittest.cpp b/test/firmware_stat_unittest.cpp
index b872b16..7d0961b 100644
--- a/test/firmware_stat_unittest.cpp
+++ b/test/firmware_stat_unittest.cpp
@@ -1,6 +1,8 @@
 #include "firmware_handler.hpp"
+#include "image_mock.hpp"
 
 #include <memory>
+#include <vector>
 
 #include <gtest/gtest.h>
 
@@ -15,8 +17,14 @@
      * the input for this function.
      */
 
+    ImageHandlerMock imageMock;
+
+    std::vector<HandlerPack> blobs = {
+        {"asdf", &imageMock},
+    };
+
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
-        {"asdf"}, static_cast<uint16_t>(FirmwareUpdateFlags::bt));
+        blobs, static_cast<uint16_t>(FirmwareUpdateFlags::bt));
     struct BlobMeta meta;
     EXPECT_TRUE(handler->stat("asdf", &meta));
     EXPECT_EQ(static_cast<uint16_t>(FirmwareUpdateFlags::bt), meta.blobState);
diff --git a/test/image_mock.hpp b/test/image_mock.hpp
new file mode 100644
index 0000000..4e615b1
--- /dev/null
+++ b/test/image_mock.hpp
@@ -0,0 +1,18 @@
+#pragma once
+
+#include "image_handler.hpp"
+
+#include <gmock/gmock.h>
+
+namespace blobs
+{
+
+class ImageHandlerMock : public ImageHandlerInterface
+{
+  public:
+    virtual ~ImageHandlerMock() = default;
+
+    MOCK_METHOD1(open, bool(const std::string&));
+};
+
+} // namespace blobs