diff --git a/oem/ibm/test/libpldm_fileio_test.cpp b/oem/ibm/test/libpldm_fileio_test.cpp
index 81facea..275f295 100644
--- a/oem/ibm/test/libpldm_fileio_test.cpp
+++ b/oem/ibm/test/libpldm_fileio_test.cpp
@@ -670,7 +670,7 @@
     // ReadFile check invalid file length
     auto rc = encode_read_file_req(0, fileHandle, offset, length, requestPtr);
 
-    ASSERT_EQ(rc, PLDM_INVALID_READ_LENGTH);
+    ASSERT_EQ(rc, PLDM_ERROR_INVALID_LENGTH);
 
     // Bad encode request for write file
     std::array<uint8_t, sizeof(pldm_msg_hdr) + PLDM_WRITE_FILE_REQ_BYTES>
@@ -680,7 +680,7 @@
     // WriteFile check for invalid file length
     rc = encode_write_file_req(0, fileHandle, offset, length, requestWr);
 
-    ASSERT_EQ(rc, PLDM_INVALID_WRITE_LENGTH);
+    ASSERT_EQ(rc, PLDM_ERROR_INVALID_LENGTH);
 }
 
 TEST(ReadWriteFile, testBadEncodeResponse)
diff --git a/oem/ibm/test/libpldmresponder_fileio_test.cpp b/oem/ibm/test/libpldmresponder_fileio_test.cpp
index c19d769..d50e5fc 100644
--- a/oem/ibm/test/libpldmresponder_fileio_test.cpp
+++ b/oem/ibm/test/libpldmresponder_fileio_test.cpp
@@ -316,7 +316,7 @@
     oem_ibm::Handler handler;
     auto response = handler.readFileIntoMemory(request, requestPayloadLength);
     auto responsePtr = reinterpret_cast<pldm_msg*>(response.data());
-    ASSERT_EQ(responsePtr->payload[0], PLDM_INVALID_READ_LENGTH);
+    ASSERT_EQ(responsePtr->payload[0], PLDM_ERROR_INVALID_LENGTH);
     // Clear the file table contents.
     table.clear();
 }
@@ -350,7 +350,7 @@
     oem_ibm::Handler handler;
     auto response = handler.readFileIntoMemory(request, requestPayloadLength);
     auto responsePtr = reinterpret_cast<pldm_msg*>(response.data());
-    ASSERT_EQ(responsePtr->payload[0], PLDM_INVALID_READ_LENGTH);
+    ASSERT_EQ(responsePtr->payload[0], PLDM_ERROR_INVALID_LENGTH);
     // Clear the file table contents.
     table.clear();
 }
@@ -383,7 +383,7 @@
     // The length field is not a multiple of DMA minsize
     response = handler.writeFileFromMemory(request, requestPayloadLength);
     responsePtr = reinterpret_cast<pldm_msg*>(response.data());
-    ASSERT_EQ(responsePtr->payload[0], PLDM_INVALID_WRITE_LENGTH);
+    ASSERT_EQ(responsePtr->payload[0], PLDM_ERROR_INVALID_LENGTH);
 }
 
 TEST_F(TestFileTable, WriteFileInvalidFileHandle)
@@ -778,7 +778,7 @@
 
     resp = reinterpret_cast<struct pldm_read_write_file_by_type_memory_resp*>(
         responsePtr->payload);
-    ASSERT_EQ(PLDM_INVALID_WRITE_LENGTH, resp->completion_code);
+    ASSERT_EQ(PLDM_ERROR_INVALID_LENGTH, resp->completion_code);
 }
 
 TEST(getHandlerByType, allPaths)
@@ -845,7 +845,7 @@
     responsePtr = reinterpret_cast<pldm_msg*>(response.data());
     resp = reinterpret_cast<struct pldm_read_write_file_by_type_memory_resp*>(
         responsePtr->payload);
-    ASSERT_EQ(PLDM_INVALID_WRITE_LENGTH, resp->completion_code);
+    ASSERT_EQ(PLDM_ERROR_INVALID_LENGTH, resp->completion_code);
 
     request->length = 16;
     response = handler.readFileByTypeIntoMemory(
