1 #include "src/processing.hpp"
2 #include "src/test/util/asio_server_class.hpp"
3 #include "src/test/util/association_objects.hpp"
4 #include "src/test/util/debug_output.hpp"
5 
6 #include <sdbusplus/asio/connection.hpp>
7 #include <sdbusplus/asio/object_server.hpp>
8 
9 #include <gtest/gtest.h>
10 
11 class TestInterfacesAdded : public AsioServerClassTest
12 {
13 };
14 sdbusplus::asio::object_server*
15     TestInterfacesAdded::AsioServerClassTest::server = nullptr;
16 
17 // This is the data structure that comes in via the InterfacesAdded
18 // signal
19 InterfacesAdded createInterfacesAdded(const std::string& interface,
20                                       const std::string& property)
21 {
22     std::vector<Association> associations = {
23         {"inventory", "error",
24          "/xyz/openbmc_project/inventory/system/chassis"}};
25     std::variant<std::vector<Association>> sdbVecAssoc = {associations};
26     std::vector<std::pair<std::string, std::variant<std::vector<Association>>>>
27         vecMethToAssoc = {{property, sdbVecAssoc}};
28     InterfacesAdded intfAdded = {{interface, vecMethToAssoc}};
29     return intfAdded;
30 }
31 
32 // Verify good path of interfaces added function
33 TEST_F(TestInterfacesAdded, InterfacesAddedGoodPath)
34 {
35     auto interfaceMap = createDefaultInterfaceMap();
36     AssociationMaps assocMaps;
37 
38     auto intfAdded =
39         createInterfacesAdded(assocDefsInterface, assocDefsProperty);
40 
41     processInterfaceAdded(interfaceMap, DEFAULT_SOURCE_PATH, intfAdded,
42                           DEFAULT_DBUS_SVC, assocMaps, *server);
43 
44     // Interface map will get the following:
45     // /logging/entry/1 /logging/entry /logging/ / system/chassis
46     // dump_InterfaceMapType(interfaceMap);
47     EXPECT_EQ(interfaceMap.size(), 5);
48 
49     // New association ower created so ensure it now contains a single entry
50     // dump_AssociationOwnersType(assocOwners);
51     EXPECT_EQ(assocMaps.owners.size(), 1);
52 
53     // Ensure the 2 association interfaces were created
54     // dump_AssociationInterfaces(assocInterfaces);
55     EXPECT_EQ(assocMaps.ifaces.size(), 2);
56 
57     // No pending associations
58     EXPECT_EQ(assocMaps.pending.size(), 0);
59 }
60