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     sdbusplus::message::variant<std::vector<Association>> sdbVecAssoc = {
26         associations};
27     std::vector<std::pair<
28         std::string, sdbusplus::message::variant<std::vector<Association>>>>
29         vecMethToAssoc = {{property, sdbVecAssoc}};
30     InterfacesAdded intfAdded = {{interface, vecMethToAssoc}};
31     return intfAdded;
32 }
33 
34 // Verify good path of interfaces added function
35 TEST_F(TestInterfacesAdded, InterfacesAddedGoodPath)
36 {
37     interface_map_type interfaceMap;
38     AssociationOwnersType assocOwners;
39     AssociationInterfaces assocInterfaces;
40     auto intfAdded = createInterfacesAdded(
41         assocDefsInterface, getAssocDefPropName(assocDefsInterface));
42 
43     processInterfaceAdded(interfaceMap, DEFAULT_SOURCE_PATH, intfAdded,
44                           DEFAULT_DBUS_SVC, assocOwners, assocInterfaces,
45                           *server);
46 
47     // Interface map will get the following:
48     // /logging/entry/1 /logging/entry /logging/ /
49     // dump_InterfaceMapType(interfaceMap);
50     EXPECT_EQ(interfaceMap.size(), 4);
51 
52     // New association ower created so ensure it now contains a single entry
53     // dump_AssociationOwnersType(assocOwners);
54     EXPECT_EQ(assocOwners.size(), 1);
55 
56     // Ensure the 2 association interfaces were created
57     // dump_AssociationInterfaces(assocInterfaces);
58     EXPECT_EQ(assocInterfaces.size(), 2);
59 }
60 
61 TEST_F(TestInterfacesAdded, OrgOpenBmcInterfacesAddedGoodPath)
62 {
63     interface_map_type interfaceMap;
64     AssociationOwnersType assocOwners;
65     AssociationInterfaces assocInterfaces;
66     auto intfAdded = createInterfacesAdded(
67         orgOpenBMCAssocDefsInterface,
68         getAssocDefPropName(orgOpenBMCAssocDefsInterface));
69 
70     processInterfaceAdded(interfaceMap, DEFAULT_SOURCE_PATH, intfAdded,
71                           DEFAULT_DBUS_SVC, assocOwners, assocInterfaces,
72                           *server);
73 
74     // Interface map will get the following:
75     // /logging/entry/1 /logging/entry /logging/ /
76     // dump_InterfaceMapType(interfaceMap);
77     EXPECT_EQ(interfaceMap.size(), 4);
78 
79     // New association ower created so ensure it now contains a single entry
80     // dump_AssociationOwnersType(assocOwners);
81     EXPECT_EQ(assocOwners.size(), 1);
82 
83     // Ensure the 2 association interfaces were created
84     // dump_AssociationInterfaces(assocInterfaces);
85     EXPECT_EQ(assocInterfaces.size(), 2);
86 }
87