diff --git a/test/firmware_state_updatestarted_unittest.cpp b/test/firmware_state_updatestarted_unittest.cpp
index 8638953..e2348e4 100644
--- a/test/firmware_state_updatestarted_unittest.cpp
+++ b/test/firmware_state_updatestarted_unittest.cpp
@@ -157,6 +157,59 @@
 /*
  * stat(session) - this will trigger a check, and the state may change.
  */
+TEST_F(FirmwareHandlerUpdateStartedTest,
+       CallStatChecksUpdateStatusReturnsRunningDoesNotChangeState)
+{
+    getToUpdateStarted();
+    EXPECT_CALL(*updateMockPtr, status())
+        .WillOnce(Return(UpdateStatus::running));
+
+    blobs::BlobMeta meta, expectedMeta = {};
+    expectedMeta.size = 0;
+    expectedMeta.blobState = flags | blobs::StateFlags::committing;
+    expectedMeta.metadata.push_back(
+        static_cast<std::uint8_t>(UpdateStatus::running));
+
+    EXPECT_TRUE(handler->stat(session, &meta));
+    EXPECT_EQ(expectedMeta, meta);
+    expectedState(FirmwareBlobHandler::UpdateState::updateStarted);
+}
+
+TEST_F(FirmwareHandlerUpdateStartedTest,
+       CallStatChecksUpdateStatusReturnsFailedChangesStateToCompleted)
+{
+    getToUpdateStarted();
+    EXPECT_CALL(*updateMockPtr, status())
+        .WillOnce(Return(UpdateStatus::failed));
+
+    blobs::BlobMeta meta, expectedMeta = {};
+    expectedMeta.size = 0;
+    expectedMeta.blobState = flags | blobs::StateFlags::commit_error;
+    expectedMeta.metadata.push_back(
+        static_cast<std::uint8_t>(UpdateStatus::failed));
+
+    EXPECT_TRUE(handler->stat(session, &meta));
+    EXPECT_EQ(expectedMeta, meta);
+    expectedState(FirmwareBlobHandler::UpdateState::updateCompleted);
+}
+
+TEST_F(FirmwareHandlerUpdateStartedTest,
+       CallStatChecksUpdateStatusReturnsSuccessChangesStateToCompleted)
+{
+    getToUpdateStarted();
+    EXPECT_CALL(*updateMockPtr, status())
+        .WillOnce(Return(UpdateStatus::success));
+
+    blobs::BlobMeta meta, expectedMeta = {};
+    expectedMeta.size = 0;
+    expectedMeta.blobState = flags | blobs::StateFlags::committed;
+    expectedMeta.metadata.push_back(
+        static_cast<std::uint8_t>(UpdateStatus::success));
+
+    EXPECT_TRUE(handler->stat(session, &meta));
+    EXPECT_EQ(expectedMeta, meta);
+    expectedState(FirmwareBlobHandler::UpdateState::updateCompleted);
+}
 
 /*
  * TODO: close(session) - this will abort.
diff --git a/test/firmware_state_verificationcompleted_unittest.cpp b/test/firmware_state_verificationcompleted_unittest.cpp
index f36427d..3c9f34d 100644
--- a/test/firmware_state_verificationcompleted_unittest.cpp
+++ b/test/firmware_state_verificationcompleted_unittest.cpp
@@ -151,7 +151,7 @@
      * until it's completed.
      */
     getToVerificationCompleted(VerifyCheckResponses::success);
-    EXPECT_CALL(*verifyMockPtr, checkVerificationState()).Times(0);
+    EXPECT_CALL(*verifyMockPtr, status()).Times(0);
 
     blobs::BlobMeta meta, expectedMeta = {};
     expectedMeta.size = 0;
@@ -168,7 +168,7 @@
        SessionStatOnVerifyAfterFailureDoesNothing)
 {
     getToVerificationCompleted(VerifyCheckResponses::failed);
-    EXPECT_CALL(*verifyMockPtr, checkVerificationState()).Times(0);
+    EXPECT_CALL(*verifyMockPtr, status()).Times(0);
 
     blobs::BlobMeta meta, expectedMeta = {};
     expectedMeta.size = 0;
diff --git a/test/firmware_state_verificationpending_unittest.cpp b/test/firmware_state_verificationpending_unittest.cpp
index 4452f17..b96ecb3 100644
--- a/test/firmware_state_verificationpending_unittest.cpp
+++ b/test/firmware_state_verificationpending_unittest.cpp
@@ -210,7 +210,7 @@
     getToVerificationPending(staticLayoutBlobId);
     EXPECT_TRUE(handler->open(session, flags, verifyBlobId));
     EXPECT_CALL(*verifyMockPtr, triggerVerification()).Times(0);
-    EXPECT_CALL(*verifyMockPtr, checkVerificationState()).Times(0);
+    EXPECT_CALL(*verifyMockPtr, status()).Times(0);
 
     blobs::BlobMeta meta, expectedMeta = {};
     expectedMeta.size = 0;
diff --git a/test/firmware_state_verificationstarted_unittest.cpp b/test/firmware_state_verificationstarted_unittest.cpp
index 9072ab9..e031fe3 100644
--- a/test/firmware_state_verificationstarted_unittest.cpp
+++ b/test/firmware_state_verificationstarted_unittest.cpp
@@ -70,7 +70,7 @@
        StatOnVerifyBlobIdAfterCommitChecksStateAndReturnsRunning)
 {
     getToVerificationStarted(staticLayoutBlobId);
-    EXPECT_CALL(*verifyMockPtr, checkVerificationState())
+    EXPECT_CALL(*verifyMockPtr, status())
         .WillOnce(Return(VerifyCheckResponses::running));
 
     blobs::BlobMeta meta, expectedMeta = {};
@@ -87,7 +87,7 @@
        StatOnVerifyBlobIdAfterCommitChecksStateAndReturnsOther)
 {
     getToVerificationStarted(staticLayoutBlobId);
-    EXPECT_CALL(*verifyMockPtr, checkVerificationState())
+    EXPECT_CALL(*verifyMockPtr, status())
         .WillOnce(Return(VerifyCheckResponses::other));
 
     blobs::BlobMeta meta, expectedMeta = {};
@@ -107,7 +107,7 @@
      * commit_error and transitions to verificationCompleted.
      */
     getToVerificationStarted(staticLayoutBlobId);
-    EXPECT_CALL(*verifyMockPtr, checkVerificationState())
+    EXPECT_CALL(*verifyMockPtr, status())
         .WillOnce(Return(VerifyCheckResponses::failed));
 
     blobs::BlobMeta meta, expectedMeta = {};
@@ -128,7 +128,7 @@
      * committed and transitions to verificationCompleted.
      */
     getToVerificationStarted(staticLayoutBlobId);
-    EXPECT_CALL(*verifyMockPtr, checkVerificationState())
+    EXPECT_CALL(*verifyMockPtr, status())
         .WillOnce(Return(VerifyCheckResponses::success));
 
     blobs::BlobMeta meta, expectedMeta = {};
diff --git a/test/firmware_unittest.hpp b/test/firmware_unittest.hpp
index d49e9f5..d077818 100644
--- a/test/firmware_unittest.hpp
+++ b/test/firmware_unittest.hpp
@@ -79,8 +79,7 @@
     {
         getToVerificationStarted(staticLayoutBlobId);
 
-        EXPECT_CALL(*verifyMockPtr, checkVerificationState())
-            .WillOnce(Return(checkResponse));
+        EXPECT_CALL(*verifyMockPtr, status()).WillOnce(Return(checkResponse));
         blobs::BlobMeta meta;
         EXPECT_TRUE(handler->stat(session, &meta));
         expectedState(FirmwareBlobHandler::UpdateState::verificationCompleted);
diff --git a/test/verification_mock.hpp b/test/verification_mock.hpp
index e027f00..b3071ef 100644
--- a/test/verification_mock.hpp
+++ b/test/verification_mock.hpp
@@ -16,7 +16,7 @@
   public:
     MOCK_METHOD0(triggerVerification, bool());
     MOCK_METHOD0(abortVerification, void());
-    MOCK_METHOD0(checkVerificationState, VerifyCheckResponses());
+    MOCK_METHOD0(status, VerifyCheckResponses());
 };
 
 std::unique_ptr<VerificationInterface> CreateVerifyMock()
