diff --git a/test/Makefile.am b/test/Makefile.am
index 8d01588..2af6033 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -19,6 +19,7 @@
 	firmware_close_unittest \
 	firmware_delete_unittest \
 	firmware_sessionstat_unittest \
+	firmware_commit_unittest \
 	file_handler_unittest
 
 TESTS = $(check_PROGRAMS)
@@ -50,5 +51,8 @@
 firmware_sessionstat_unittest_SOURCES = firmware_sessionstat_unittest.cpp
 firmware_sessionstat_unittest_LDADD = $(top_builddir)/firmware_handler.o
 
+firmware_commit_unittest_SOURCES = firmware_commit_unittest.cpp
+firmware_commit_unittest_LDADD = $(top_builddir)/firmware_handler.o
+
 file_handler_unittest_SOURCES = file_handler_unittest.cpp
 file_handler_unittest_LDADD = $(top_builddir)/file_handler.o -lstdc++fs
diff --git a/test/firmware_close_unittest.cpp b/test/firmware_close_unittest.cpp
index 5bbd333..546d6df 100644
--- a/test/firmware_close_unittest.cpp
+++ b/test/firmware_close_unittest.cpp
@@ -42,7 +42,7 @@
 
     /* The active hash blob_id was added. */
     auto currentBlobs = handler->getBlobIds();
-    EXPECT_EQ(3, currentBlobs.size());
+    EXPECT_EQ(4, currentBlobs.size());
     EXPECT_EQ(1, std::count(currentBlobs.begin(), currentBlobs.end(),
                             FirmwareBlobHandler::activeHashBlobID));
 
@@ -84,7 +84,7 @@
 
     /* The active hash blob_id was added. */
     auto currentBlobs = handler->getBlobIds();
-    EXPECT_EQ(3, currentBlobs.size());
+    EXPECT_EQ(4, currentBlobs.size());
     EXPECT_EQ(1, std::count(currentBlobs.begin(), currentBlobs.end(),
                             FirmwareBlobHandler::activeHashBlobID));
 
diff --git a/test/firmware_commit_unittest.cpp b/test/firmware_commit_unittest.cpp
new file mode 100644
index 0000000..d7bb744
--- /dev/null
+++ b/test/firmware_commit_unittest.cpp
@@ -0,0 +1,111 @@
+#include "data_mock.hpp"
+#include "firmware_handler.hpp"
+#include "image_mock.hpp"
+
+#include <vector>
+
+#include <gtest/gtest.h>
+
+namespace blobs
+{
+using ::testing::Return;
+
+TEST(FirmwareHandlerCommitTest, VerifyCannotCommitOnFlashImage)
+{
+    /* Verify the flash image returns failure on this command.  It's a fairly
+     * artificial test.
+     */
+    ImageHandlerMock imageMock1, imageMock2;
+    std::vector<HandlerPack> blobs = {
+        {FirmwareBlobHandler::hashBlobID, &imageMock1},
+        {"asdf", &imageMock2},
+    };
+
+    std::vector<DataHandlerPack> data = {
+        {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
+    };
+
+    auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
+
+    EXPECT_CALL(imageMock2, open("asdf")).WillOnce(Return(true));
+
+    EXPECT_TRUE(handler->open(
+        0, OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi, "asdf"));
+
+    EXPECT_FALSE(handler->commit(0, {}));
+}
+
+TEST(FirmwareHandlerCommitTest, VerifyCannotCommitOnHashFile)
+{
+    /* Verify the hash file returns failure on this command.  It's a fairly
+     * artificial test.
+     */
+    ImageHandlerMock imageMock1, imageMock2;
+    std::vector<HandlerPack> blobs = {
+        {FirmwareBlobHandler::hashBlobID, &imageMock1},
+        {"asdf", &imageMock2},
+    };
+
+    std::vector<DataHandlerPack> data = {
+        {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
+    };
+
+    auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
+
+    EXPECT_CALL(imageMock1, open(FirmwareBlobHandler::hashBlobID))
+        .WillOnce(Return(true));
+
+    EXPECT_TRUE(handler->open(
+        0, OpenFlags::write | FirmwareBlobHandler::UpdateFlags::ipmi,
+        FirmwareBlobHandler::hashBlobID));
+
+    EXPECT_FALSE(handler->commit(0, {}));
+}
+
+TEST(FirmwareHandlerCommitTest, VerifyCommitAcceptedOnVerifyBlob)
+{
+    /* Verify the verify blob lets you call this command, and it returns
+     * success.
+     */
+    ImageHandlerMock imageMock1, imageMock2;
+    std::vector<HandlerPack> blobs = {
+        {FirmwareBlobHandler::hashBlobID, &imageMock1},
+        {"asdf", &imageMock2},
+    };
+
+    std::vector<DataHandlerPack> data = {
+        {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
+    };
+
+    auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
+
+    EXPECT_TRUE(
+        handler->open(0, OpenFlags::write, FirmwareBlobHandler::verifyBlobID));
+
+    EXPECT_TRUE(handler->commit(0, {}));
+}
+
+TEST(FirmwareHandlerCommitTest, VerifyCommitCanOnlyBeCalledOnce)
+{
+    /* Verify you cannot call the commit() command once verification is started.
+     */
+    ImageHandlerMock imageMock1, imageMock2;
+    std::vector<HandlerPack> blobs = {
+        {FirmwareBlobHandler::hashBlobID, &imageMock1},
+        {"asdf", &imageMock2},
+    };
+
+    std::vector<DataHandlerPack> data = {
+        {FirmwareBlobHandler::UpdateFlags::ipmi, nullptr},
+    };
+
+    auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
+
+    EXPECT_TRUE(
+        handler->open(0, OpenFlags::write, FirmwareBlobHandler::verifyBlobID));
+
+    EXPECT_TRUE(handler->commit(0, {}));
+    EXPECT_FALSE(handler->commit(0, {}));
+}
+
+} // namespace blobs
diff --git a/test/firmware_delete_unittest.cpp b/test/firmware_delete_unittest.cpp
index 0697bbd..a5550a9 100644
--- a/test/firmware_delete_unittest.cpp
+++ b/test/firmware_delete_unittest.cpp
@@ -39,7 +39,7 @@
 
     /* The active hash blob_id was added. */
     auto currentBlobs = handler->getBlobIds();
-    EXPECT_EQ(3, currentBlobs.size());
+    EXPECT_EQ(4, currentBlobs.size());
     EXPECT_EQ(1, std::count(currentBlobs.begin(), currentBlobs.end(),
                             FirmwareBlobHandler::activeHashBlobID));
 
@@ -48,7 +48,7 @@
     EXPECT_TRUE(handler->close(0));
 
     currentBlobs = handler->getBlobIds();
-    EXPECT_EQ(3, currentBlobs.size());
+    EXPECT_EQ(4, currentBlobs.size());
     EXPECT_EQ(1, std::count(currentBlobs.begin(), currentBlobs.end(),
                             FirmwareBlobHandler::activeHashBlobID));
 
@@ -56,7 +56,7 @@
     EXPECT_TRUE(handler->deleteBlob(FirmwareBlobHandler::activeHashBlobID));
 
     currentBlobs = handler->getBlobIds();
-    EXPECT_EQ(2, currentBlobs.size());
+    EXPECT_EQ(3, currentBlobs.size());
     EXPECT_EQ(0, std::count(currentBlobs.begin(), currentBlobs.end(),
                             FirmwareBlobHandler::activeHashBlobID));
 }
diff --git a/test/firmware_handler_unittest.cpp b/test/firmware_handler_unittest.cpp
index f29668b..ce65ad4 100644
--- a/test/firmware_handler_unittest.cpp
+++ b/test/firmware_handler_unittest.cpp
@@ -49,9 +49,11 @@
 
     handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(blobs, data);
     auto result = handler->getBlobIds();
-    EXPECT_EQ(2, result.size());
-    EXPECT_EQ(2, std::count(result.begin(), result.end(), "asdf") +
+    EXPECT_EQ(3, result.size());
+    EXPECT_EQ(3, std::count(result.begin(), result.end(), "asdf") +
                      std::count(result.begin(), result.end(),
-                                FirmwareBlobHandler::hashBlobID));
+                                FirmwareBlobHandler::hashBlobID) +
+                     std::count(result.begin(), result.end(),
+                                FirmwareBlobHandler::verifyBlobID));
 }
 } // namespace blobs
diff --git a/test/firmware_open_unittest.cpp b/test/firmware_open_unittest.cpp
index 1975740..81a1977 100644
--- a/test/firmware_open_unittest.cpp
+++ b/test/firmware_open_unittest.cpp
@@ -37,7 +37,7 @@
 
     /* The active image blob_id was added. */
     auto currentBlobs = handler->getBlobIds();
-    EXPECT_EQ(3, currentBlobs.size());
+    EXPECT_EQ(4, currentBlobs.size());
     EXPECT_EQ(1, std::count(currentBlobs.begin(), currentBlobs.end(),
                             FirmwareBlobHandler::activeImageBlobID));
 }
@@ -66,7 +66,7 @@
 
     /* The active hash blob_id was added. */
     auto currentBlobs = handler->getBlobIds();
-    EXPECT_EQ(3, currentBlobs.size());
+    EXPECT_EQ(4, currentBlobs.size());
     EXPECT_EQ(1, std::count(currentBlobs.begin(), currentBlobs.end(),
                             FirmwareBlobHandler::activeHashBlobID));
 }
@@ -100,7 +100,7 @@
 
     /* The active hash blob_id was added. */
     auto currentBlobs = handler->getBlobIds();
-    EXPECT_EQ(3, currentBlobs.size());
+    EXPECT_EQ(4, currentBlobs.size());
     EXPECT_EQ(1, std::count(currentBlobs.begin(), currentBlobs.end(),
                             FirmwareBlobHandler::activeHashBlobID));
 }
@@ -130,7 +130,7 @@
 
     /* The active hash blob_id was added. */
     auto currentBlobs = handler->getBlobIds();
-    EXPECT_EQ(2, currentBlobs.size());
+    EXPECT_EQ(3, currentBlobs.size());
 }
 
 TEST(FirmwareHandlerOpenTest, OpenEverythingSucceedsVerifyOpenFileCheck)
@@ -157,7 +157,7 @@
 
     /* The active image blob_id was added. */
     auto currentBlobs = handler->getBlobIds();
-    EXPECT_EQ(3, currentBlobs.size());
+    EXPECT_EQ(4, currentBlobs.size());
     EXPECT_EQ(1, std::count(currentBlobs.begin(), currentBlobs.end(),
                             FirmwareBlobHandler::activeImageBlobID));
 
@@ -202,7 +202,7 @@
 
     /* The active image blob_id was added. */
     auto currentBlobs = handler->getBlobIds();
-    EXPECT_EQ(3, currentBlobs.size());
+    EXPECT_EQ(4, currentBlobs.size());
     EXPECT_EQ(1, std::count(currentBlobs.begin(), currentBlobs.end(),
                             FirmwareBlobHandler::activeImageBlobID));
 
@@ -240,7 +240,7 @@
 
     /* Verify blob_id list doesn't grow. */
     auto currentBlobs = handler->getBlobIds();
-    EXPECT_EQ(2, currentBlobs.size());
+    EXPECT_EQ(3, currentBlobs.size());
 }
 
 TEST(FirmwareHandlerOpenTest, OpenWithoutWriteFails)
