unit-test: Test interfaces added function

Tested:
- processing.cpp at 94% coverage
- Verified QEMU booted to standby and mapper command line worked
- Verified hardware CI (witherspoon) passed with this patch series

Change-Id: I73e5feb3495ed0aa974acd521fefd8d0193fc1b3
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
diff --git a/src/test/interfaces_added.cpp b/src/test/interfaces_added.cpp
new file mode 100644
index 0000000..6fbeead
--- /dev/null
+++ b/src/test/interfaces_added.cpp
@@ -0,0 +1,57 @@
+#include "src/processing.hpp"
+#include "src/test/util/asio_server_class.hpp"
+#include "src/test/util/association_objects.hpp"
+#include "src/test/util/debug_output.hpp"
+
+#include <sdbusplus/asio/connection.hpp>
+#include <sdbusplus/asio/object_server.hpp>
+
+#include <gtest/gtest.h>
+
+class TestInterfacesAdded : public AsioServerClassTest
+{
+};
+sdbusplus::asio::object_server*
+    TestInterfacesAdded::AsioServerClassTest::server = nullptr;
+
+// This is the data structure that comes in via the InterfacesAdded
+// signal
+InterfacesAdded createInterfacesAdded()
+{
+    std::vector<Association> associations = {
+        {"inventory", "error",
+         "/xyz/openbmc_project/inventory/system/chassis"}};
+    sdbusplus::message::variant<std::vector<Association>> sdbVecAssoc = {
+        associations};
+    std::vector<std::pair<
+        std::string, sdbusplus::message::variant<std::vector<Association>>>>
+        vecMethToAssoc = {{"associations", sdbVecAssoc}};
+    InterfacesAdded intfAdded = {{ASSOCIATIONS_INTERFACE, vecMethToAssoc}};
+    return intfAdded;
+}
+
+// Verify good path of interfaces added function
+TEST_F(TestInterfacesAdded, InterfacesAddedGoodPath)
+{
+    interface_map_type interfaceMap;
+    AssociationOwnersType assocOwners;
+    AssociationInterfaces assocInterfaces;
+    auto intfAdded = createInterfacesAdded();
+
+    processInterfaceAdded(interfaceMap, DEFAULT_SOURCE_PATH, intfAdded,
+                          DEFAULT_DBUS_SVC, assocOwners, assocInterfaces,
+                          *server);
+
+    // Interface map will get the following:
+    // /logging/entry/1 /logging/entry /logging/ /
+    // dump_InterfaceMapType(interfaceMap);
+    EXPECT_EQ(interfaceMap.size(), 4);
+
+    // New association ower created so ensure it now contains a single entry
+    // dump_AssociationOwnersType(assocOwners);
+    EXPECT_EQ(assocOwners.size(), 1);
+
+    // Ensure the 2 association interfaces were created
+    // dump_AssociationInterfaces(assocInterfaces);
+    EXPECT_EQ(assocInterfaces.size(), 2);
+}