diff --git a/test/handler_unittest.cpp b/test/handler_unittest.cpp
index 418ba46..2edb977 100644
--- a/test/handler_unittest.cpp
+++ b/test/handler_unittest.cpp
@@ -18,7 +18,10 @@
 
 #include <systemd/sd-bus.h>
 
+#include <charconv>
+#include <filesystem>
 #include <fstream>
+#include <functional>
 #include <nlohmann/json.hpp>
 #include <sdbusplus/message.hpp>
 #include <sdbusplus/test/sdbus_mock.hpp>
@@ -32,6 +35,9 @@
 namespace ipmi
 {
 
+using testing::_;
+using testing::Return;
+
 TEST(HandlerTest, EthCheckValidHappy)
 {
     Handler h;
@@ -112,6 +118,7 @@
 
 using ::testing::_;
 using ::testing::AnyNumber;
+using ::testing::ContainerEq;
 using ::testing::DoAll;
 using ::testing::ElementsAre;
 using ::testing::Eq;
@@ -586,6 +593,50 @@
                  IpmiException);
 }
 
+TEST(HandlerTest, PcieBifurcation)
+{
+    const std::string& testJson = "/tmp/test-json";
+    auto j = R"(
+        {
+            "1": [ 1, 3 ],
+            "3": [ 3, 6 ],
+            "4": [ 3, 4, 1 ],
+            "6": [ 8 ]
+        }
+    )"_json;
+
+    std::ofstream bifurcationJson(testJson);
+    bifurcationJson << j.dump();
+    bifurcationJson.flush();
+    bifurcationJson.close();
+
+    BifurcationStatic bifurcationHelper(testJson);
+    Handler h(std::ref(bifurcationHelper));
+
+    std::unordered_map<uint8_t, std::vector<uint8_t>> expectedMapping = {
+        {1, {1, 3}}, {3, {3, 6}}, {4, {3, 4, 1}}, {6, {8}}};
+    std::vector<uint8_t> invalidBus = {0, 2, 5, 7};
+
+    for (const auto& [bus, output] : expectedMapping)
+    {
+        EXPECT_THAT(h.pcieBifurcation(bus), ContainerEq(output));
+    }
+
+    for (const auto& bus : invalidBus)
+    {
+        EXPECT_TRUE(h.pcieBifurcation(bus).empty());
+    }
+
+    std::filesystem::remove(testJson.data());
+    bifurcationHelper = BifurcationStatic(testJson);
+    Handler h2(std::ref(bifurcationHelper));
+    for (uint8_t i = 0; i < 8; ++i)
+    {
+        auto bifurcation = h2.pcieBifurcation(i);
+        EXPECT_TRUE(bifurcation.empty());
+    }
+}
+
 // TODO: Add checks for other functions of handler.
 
 } // namespace ipmi
