diff --git a/test/Makefile.am b/test/Makefile.am
index 282a824..392db5c 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -14,6 +14,7 @@
 	ipmi_flashdata_unittest \
 	ipmi_flashfinish_unittest \
 	ipmi_starthash_unittest \
+	ipmi_hashdata_unittest \
 	ipmi_validate_unittest
 
 TESTS = $(check_PROGRAMS)
@@ -30,5 +31,8 @@
 ipmi_starthash_unittest_SOURCES = ipmi_starthash_unittest.cpp
 ipmi_starthash_unittest_LDADD = $(top_builddir)/ipmi.o
 
+ipmi_hashdata_unittest_SOURCES = ipmi_hashdata_unittest.cpp
+ipmi_hashdata_unittest_LDADD = $(top_builddir)/ipmi.o
+
 ipmi_validate_unittest_SOURCES = ipmi_validate_unittest.cpp
 ipmi_validate_unittest_LDADD = $(top_builddir)/ipmi.o
diff --git a/test/ipmi_hashdata_unittest.cpp b/test/ipmi_hashdata_unittest.cpp
new file mode 100644
index 0000000..17de66c
--- /dev/null
+++ b/test/ipmi_hashdata_unittest.cpp
@@ -0,0 +1,43 @@
+#include "flash-ipmi.hpp"
+#include "ipmi.hpp"
+
+#include "updater_mock.hpp"
+
+#include <cstring>
+#include <gtest/gtest.h>
+
+using ::testing::ElementsAreArray;
+using ::testing::Return;
+using ::testing::StrictMock;
+
+// ipmid.hpp isn't installed where we can grab it and this value is per BMC
+// SoC.
+#define MAX_IPMI_BUFFER 64
+
+TEST(IpmiHashData, DataReceivedIsPassedOnOk)
+{
+    // If valid data was passed in, it'll pass it onto the update handler.
+
+    StrictMock<UpdaterMock> updater;
+
+    size_t dataLen;
+    uint8_t request[MAX_IPMI_BUFFER] = {0};
+    uint8_t reply[MAX_IPMI_BUFFER] = {0};
+
+    struct ChunkHdr tx;
+    tx.cmd = FlashSubCmds::flashHashData;
+    tx.offset = 0x00;
+    std::memcpy(request, &tx, sizeof(tx));
+
+    uint8_t bytes[] = {0x04, 0x05};
+    std::memcpy(&request[sizeof(struct ChunkHdr)], bytes, sizeof(bytes));
+
+    dataLen = sizeof(struct ChunkHdr) + sizeof(bytes);
+
+    EXPECT_CALL(updater, hashData(0x00, ElementsAreArray(bytes, sizeof(bytes))))
+        .WillOnce(Return(true));
+
+    EXPECT_EQ(IPMI_CC_OK, hashBlock(&updater, request, reply, &dataLen));
+    EXPECT_EQ(sizeof(uint8_t), dataLen);
+    EXPECT_EQ(0, reply[0]);
+}
diff --git a/test/ipmi_validate_unittest.cpp b/test/ipmi_validate_unittest.cpp
index be4b128..14ada91 100644
--- a/test/ipmi_validate_unittest.cpp
+++ b/test/ipmi_validate_unittest.cpp
@@ -41,8 +41,15 @@
 TEST(IpmiValidateTest, StartHashInvalidReturnsFalse)
 {
     // Verify the request is sanity checked w.r.t length.
-
     auto cmd = FlashSubCmds::flashStartHash;
     size_t dataLen = sizeof(struct StartTx) - 1;
     EXPECT_FALSE(validateRequestLength(cmd, dataLen));
 }
+
+TEST(IpmiValidateTest, InvalidLengthHashBlockReturnsFalse)
+{
+    // This request isn't large enough to be well-formed.
+    auto cmd = FlashSubCmds::flashHashData;
+    size_t dataLen = sizeof(struct ChunkHdr) - 1;
+    EXPECT_FALSE(validateRequestLength(cmd, dataLen));
+}
diff --git a/test/updater_mock.hpp b/test/updater_mock.hpp
index 561deaa..1e03a31 100644
--- a/test/updater_mock.hpp
+++ b/test/updater_mock.hpp
@@ -14,4 +14,5 @@
     MOCK_METHOD2(flashData, bool(uint32_t, const std::vector<uint8_t>&));
     MOCK_METHOD0(flashFinish, bool());
     MOCK_METHOD1(startHash, bool(uint32_t));
+    MOCK_METHOD2(hashData, bool(uint32_t, const std::vector<uint8_t>&));
 };
