diff --git a/test/openpower-pels/json_utils_test.cpp b/test/openpower-pels/json_utils_test.cpp
index a7203aa..5a3d1a1 100644
--- a/test/openpower-pels/json_utils_test.cpp
+++ b/test/openpower-pels/json_utils_test.cpp
@@ -14,6 +14,11 @@
  * limitations under the License.
  */
 #include "extensions/openpower-pels/json_utils.hpp"
+#include "extensions/openpower-pels/paths.hpp"
+
+#include <nlohmann/json.hpp>
+
+#include <filesystem>
 
 #include <gtest/gtest.h>
 
@@ -47,3 +52,33 @@
     EXPECT_EQ(json, "    \"Key\":                      \"Value1\",\n"
                     "        \"Keyxxxxxxxxxxxxxxxxxxxxxxxxxx\": \"Value2\",\n");
 }
+
+TEST(JsonUtilsTest, GetComponentNameTest)
+{
+    const auto compIDs = R"(
+    {
+        "1000": "some comp",
+        "2222": "another comp"
+    })"_json;
+
+    auto dataPath = getPELReadOnlyDataPath();
+    std::ofstream file{dataPath / "O_component_ids.json"};
+    file << compIDs;
+    file.close();
+
+    // The component ID file exists
+    EXPECT_EQ(getComponentName(0x1000, 'O'), "some comp");
+    EXPECT_EQ(getComponentName(0x2222, 'O'), "another comp");
+    EXPECT_EQ(getComponentName(0x0001, 'O'), "0x0001");
+
+    // No component ID file
+    EXPECT_EQ(getComponentName(0x3456, 'B'), "0x3456");
+
+    // PHYP, uses characters if both bytes nonzero
+    EXPECT_EQ(getComponentName(0x4552, 'H'), "ER");
+    EXPECT_EQ(getComponentName(0x584D, 'H'), "XM");
+    EXPECT_EQ(getComponentName(0x5800, 'H'), "0x5800");
+    EXPECT_EQ(getComponentName(0x0058, 'H'), "0x0058");
+
+    std::filesystem::remove_all(dataPath);
+}
diff --git a/test/openpower-pels/pel_test.cpp b/test/openpower-pels/pel_test.cpp
index cc951ec..66cb6cf 100644
--- a/test/openpower-pels/pel_test.cpp
+++ b/test/openpower-pels/pel_test.cpp
@@ -476,14 +476,14 @@
     // The getJSON() response needs to be wrapped in a { } to make
     // actual valid JSON (PEL::toJSON() usually handles that).
 
-    auto jsonString = pel.privateHeader().getJSON();
+    auto jsonString = pel.privateHeader().getJSON('O');
 
     // PrivateHeader always prints JSON
     ASSERT_TRUE(jsonString);
     *jsonString = '{' + *jsonString + '}';
     auto json = nlohmann::json::parse(*jsonString);
 
-    jsonString = pel.userHeader().getJSON();
+    jsonString = pel.userHeader().getJSON('O');
 
     // UserHeader always prints JSON
     ASSERT_TRUE(jsonString);
@@ -493,7 +493,7 @@
     for (const auto& section : pel.optionalSections())
     {
         // The optional sections may or may not have implemented getJSON().
-        jsonString = section->getJSON();
+        jsonString = section->getJSON('O');
         if (jsonString)
         {
             *jsonString = '{' + *jsonString + '}';
