diff --git a/test/handler_unittest.cpp b/test/handler_unittest.cpp
index c1f4093..a4f9281 100644
--- a/test/handler_unittest.cpp
+++ b/test/handler_unittest.cpp
@@ -1,6 +1,8 @@
 #include "errors.hpp"
 #include "handler.hpp"
 
+#include <fstream>
+#include <nlohmann/json.hpp>
 #include <string>
 #include <tuple>
 
@@ -27,6 +29,70 @@
     EXPECT_THROW(h.getRxPackets("eth0/../../"), IpmiException);
 }
 
+TEST(HandlerTest, readNameFromConfigInstanceVariety)
+{
+    // Make sure it handles the failures and successes as we expect.
+    struct testCase
+    {
+        std::string type;
+        std::uint8_t instance;
+        std::string expectedName;
+    };
+
+    std::vector<testCase> tests = {
+        {"cpu", 5, ""},
+        {"cpu", 3, "CPU2"},
+    };
+
+    auto j2 = R"(
+      {
+        "cpu": [
+          {"instance": 1, "name": "CPU0"},
+          {"instance": 2, "name": "CPU1"},
+          {"instance": 3, "name": "CPU2"},
+          {"instance": 4, "name": "CPU3"}
+        ]
+      }
+    )"_json;
+
+    for (const auto& test : tests)
+    {
+        EXPECT_STREQ(test.expectedName.c_str(),
+                     readNameFromConfig(test.type, test.instance, j2).c_str());
+    }
+}
+
+// TODO: If we can test with phosphor-logging in the future, there are more
+// failure cases.
+
+TEST(HandlerTest, getEntityNameWithNameNotFoundExcepts)
+{
+    const char* testFilename = "test.json";
+    std::string contents = R"({"cpu": [{"instance": 1, "name": "CPU0"}]})";
+    std::ofstream outputJson(testFilename);
+    outputJson << contents;
+    outputJson.flush();
+    outputJson.close();
+
+    Handler h(testFilename);
+    EXPECT_THROW(h.getEntityName(0x03, 2), IpmiException);
+    (void)std::remove(testFilename);
+}
+
+TEST(HandlerTest, getEntityNameWithNameFoundReturnsIt)
+{
+    const char* testFilename = "test.json";
+    std::string contents = R"({"cpu": [{"instance": 1, "name": "CPU0"}]})";
+    std::ofstream outputJson(testFilename);
+    outputJson << contents;
+    outputJson.flush();
+    outputJson.close();
+
+    Handler h(testFilename);
+    EXPECT_STREQ("CPU0", h.getEntityName(0x03, 1).c_str());
+    (void)std::remove(testFilename);
+}
+
 // TODO: Add checks for other functions of handler.
 
 } // namespace ipmi
