diff --git a/test/Makefile.am b/test/Makefile.am
index ecd0ad8..7ea9cd6 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -12,7 +12,8 @@
 check_PROGRAMS = \
 	firmware_handler_unittest \
 	firmware_stat_unittest \
-	firmware_canhandle_unittest
+	firmware_canhandle_unittest \
+	firmware_open_unittest
 
 TESTS = $(check_PROGRAMS)
 
@@ -24,3 +25,6 @@
 
 firmware_canhandle_unittest_SOURCES = firmware_canhandle_unittest.cpp
 firmware_canhandle_unittest_LDADD = $(top_builddir)/firmware_handler.o
+
+firmware_open_unittest_SOURCES = firmware_open_unittest.cpp
+firmware_open_unittest_LDADD = $(top_builddir)/firmware_handler.o
diff --git a/test/firmware_open_unittest.cpp b/test/firmware_open_unittest.cpp
new file mode 100644
index 0000000..d77bafc
--- /dev/null
+++ b/test/firmware_open_unittest.cpp
@@ -0,0 +1,126 @@
+#include "data_mock.hpp"
+#include "firmware_handler.hpp"
+#include "image_mock.hpp"
+
+#include <memory>
+#include <vector>
+
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+namespace blobs
+{
+using ::testing::Return;
+
+TEST(FirmwareHandlerOpenTest, OpenWithEverythingValid)
+{
+    /* The client passes write set, and a transport that's supported, and a
+     * firmware image blob_id that's supported. */
+
+    ImageHandlerMock imageMock;
+
+    std::vector<HandlerPack> blobs = {
+        {"asdf", &imageMock},
+    };
+    std::vector<DataHandlerPack> data = {
+        {FirmwareBlobHandler::FirmwareUpdateFlags::bt, nullptr},
+    };
+
+    auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
+
+    EXPECT_CALL(imageMock, open("asdf")).WillOnce(Return(true));
+
+    EXPECT_TRUE(handler->open(
+        0, OpenFlags::write | FirmwareBlobHandler::FirmwareUpdateFlags::bt,
+        "asdf"));
+}
+
+TEST(FirmwareHandlerOpenTest, OpenWithEverythingValidImageHandlerFails)
+{
+    /* The image handler for a specific type of image is allowed to return
+     * failure on open.  let's simulate that. */
+
+    ImageHandlerMock imageMock;
+
+    std::vector<HandlerPack> blobs = {
+        {"asdf", &imageMock},
+    };
+    std::vector<DataHandlerPack> data = {
+        {FirmwareBlobHandler::FirmwareUpdateFlags::bt, nullptr},
+    };
+
+    auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
+
+    EXPECT_CALL(imageMock, open("asdf")).WillOnce(Return(false));
+
+    EXPECT_FALSE(handler->open(
+        0, OpenFlags::write | FirmwareBlobHandler::FirmwareUpdateFlags::bt,
+        "asdf"));
+}
+
+TEST(FirmwareHandlerOpenTest, OpenWithoutWriteFails)
+{
+    /* The client must set the file write bit. */
+
+    ImageHandlerMock imageMock;
+
+    std::vector<HandlerPack> blobs = {
+        {"asdf", &imageMock},
+    };
+    std::vector<DataHandlerPack> data = {
+        {FirmwareBlobHandler::FirmwareUpdateFlags::bt, nullptr},
+    };
+
+    auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
+
+    EXPECT_FALSE(
+        handler->open(0, FirmwareBlobHandler::FirmwareUpdateFlags::bt, "asdf"));
+}
+
+TEST(FirmwareHandlerOpenTest, OpenWithInvalidTransportBit)
+{
+    /* The client sends a request with a transport mechanism not supported. */
+
+    ImageHandlerMock imageMock;
+
+    std::vector<HandlerPack> blobs = {
+        {"asdf", &imageMock},
+    };
+    std::vector<DataHandlerPack> data = {
+        {FirmwareBlobHandler::FirmwareUpdateFlags::bt, nullptr},
+    };
+
+    auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
+
+    EXPECT_FALSE(handler->open(0, FirmwareBlobHandler::FirmwareUpdateFlags::lpc,
+                               "asdf"));
+}
+
+TEST(FirmwareHandlerOpenTest, OpenWithInvalidImageBlobId)
+{
+    /* The client sends a request with an invalid image blob_id. */
+
+    ImageHandlerMock imageMock;
+
+    std::vector<HandlerPack> blobs = {
+        {"asdf", &imageMock},
+    };
+    std::vector<DataHandlerPack> data = {
+        {FirmwareBlobHandler::FirmwareUpdateFlags::bt, nullptr},
+    };
+
+    auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
+
+    EXPECT_FALSE(handler->open(
+        0, OpenFlags::write | FirmwareBlobHandler::FirmwareUpdateFlags::bt,
+        "bcdf"));
+}
+
+/* TODO: The client sends a request during verification. */
+/* TODO: The client sends a second request to open when there is already an open
+ * file.
+ */
+/* TODO: The client sends a request to open active image. */
+/* TODO: The client sends a request to open active hash. */
+
+} // namespace blobs
