diff --git a/firmware_handler.cpp b/firmware_handler.cpp
index 675929c..6a317a7 100644
--- a/firmware_handler.cpp
+++ b/firmware_handler.cpp
@@ -441,16 +441,7 @@
 
     lookup[session] = curr;
 
-    /* This may be them re-opening a blob, so let's only push it onto the list
-     * when appropriate.
-     */
-    auto blobIdMatch =
-        std::find_if(blobIDs.begin(), blobIDs.end(),
-                     [active](const auto& iter) { return (iter == *active); });
-    if (blobIdMatch == blobIDs.end())
-    {
-        blobIDs.push_back(*active);
-    }
+    addBlobId(*active);
 
     state = UpdateState::uploadInProgress;
     fileOpen = true;
diff --git a/firmware_handler.hpp b/firmware_handler.hpp
index def20a8..3f2d21d 100644
--- a/firmware_handler.hpp
+++ b/firmware_handler.hpp
@@ -8,6 +8,7 @@
 #include "util.hpp"
 #include "verify.hpp"
 
+#include <algorithm>
 #include <blobs-ipmid/blobs.hpp>
 #include <cstdint>
 #include <map>
@@ -176,6 +177,17 @@
     };
 
   private:
+    void addBlobId(const std::string& blob)
+    {
+        auto blobIdMatch =
+            std::find_if(blobIDs.begin(), blobIDs.end(),
+                         [&blob](const auto& iter) { return (iter == blob); });
+        if (blobIdMatch == blobIDs.end())
+        {
+            blobIDs.push_back(blob);
+        }
+    }
+
     /** List of handlers by type. */
     std::vector<HandlerPack> handlers;
 
diff --git a/test/firmware_state_notyetstarted_unittest.cpp b/test/firmware_state_notyetstarted_unittest.cpp
index 0cc724d..a97a348 100644
--- a/test/firmware_state_notyetstarted_unittest.cpp
+++ b/test/firmware_state_notyetstarted_unittest.cpp
@@ -99,6 +99,8 @@
     EXPECT_TRUE(handler->open(session, flags, staticLayoutBlobId));
     EXPECT_EQ(FirmwareBlobHandler::UpdateState::uploadInProgress,
               realHandler->getCurrentState());
+
+    EXPECT_TRUE(handler->canHandleBlob(activeImageBlobId));
 }
 
 TEST_F(FirmwareHandlerNotYetStartedTest, OpenHashFileVerifyStateChange)
@@ -110,6 +112,8 @@
     EXPECT_TRUE(handler->open(session, flags, hashBlobId));
     EXPECT_EQ(FirmwareBlobHandler::UpdateState::uploadInProgress,
               realHandler->getCurrentState());
+
+    EXPECT_TRUE(handler->canHandleBlob(activeHashBlobId));
 }
 
 } // namespace
diff --git a/test/firmware_state_verificationpending_unittest.cpp b/test/firmware_state_verificationpending_unittest.cpp
index e8a3bf2..af777c7 100644
--- a/test/firmware_state_verificationpending_unittest.cpp
+++ b/test/firmware_state_verificationpending_unittest.cpp
@@ -21,6 +21,7 @@
 
 using ::testing::IsEmpty;
 using ::testing::Return;
+using ::testing::UnorderedElementsAreArray;
 
 /*
  * There are the following calls (parameters may vary):
@@ -150,12 +151,26 @@
        OpenImageBlobTransitionsToUploadInProgress)
 {
     getToVerificationPending(staticLayoutBlobId);
+
+    /* Verify the active blob for the image is in the list once to start.
+     * Note: This is truly tested under the notYetStarted::open() test.
+     */
+    std::vector<std::string> expectedBlobs = {staticLayoutBlobId, hashBlobId,
+                                              verifyBlobId, activeImageBlobId};
+
+    EXPECT_THAT(handler->getBlobIds(),
+                UnorderedElementsAreArray(expectedBlobs));
+
     EXPECT_CALL(imageMock, open(staticLayoutBlobId)).WillOnce(Return(true));
     EXPECT_TRUE(handler->open(session, flags, staticLayoutBlobId));
 
     auto realHandler = dynamic_cast<FirmwareBlobHandler*>(handler.get());
     EXPECT_EQ(FirmwareBlobHandler::UpdateState::uploadInProgress,
               realHandler->getCurrentState());
+
+    /* Verify the active blob ID was not added to the list twice. */
+    EXPECT_THAT(handler->getBlobIds(),
+                UnorderedElementsAreArray(expectedBlobs));
 }
 
 /*
