1 #include "src/processing.hpp"
2 #include "src/test/util/asio_server_class.hpp"
3 #include "src/test/util/association_objects.hpp"
4 
5 #include <gtest/gtest.h>
6 
7 class TestNameChange : public AsioServerClassTest
8 {
9 };
10 sdbusplus::asio::object_server* TestNameChange::AsioServerClassTest::server =
11     nullptr;
12 
13 // Verify unique name is removed from nameOwners
14 TEST_F(TestNameChange, UniqueNameNoInterfaces)
15 {
16     boost::container::flat_map<std::string, std::string> nameOwners = {
17         {":1.99", "test-name"}};
18     std::string wellKnown = {"test-name"};
19     std::string oldOwner = {":1.99"};
20     interface_map_type interfaceMap;
21     AssociationOwnersType assocOwners;
22     AssociationInterfaces assocInterfaces;
23 
24     processNameChangeDelete(nameOwners, wellKnown, oldOwner, interfaceMap,
25                             assocOwners, assocInterfaces, *server);
26     EXPECT_EQ(nameOwners.size(), 0);
27 }
28 
29 // Verify path removed from interface map and association objects
30 TEST_F(TestNameChange, UniqueNameAssociationsAndInterface)
31 {
32     boost::container::flat_map<std::string, std::string> nameOwners = {
33         {":1.99", DEFAULT_DBUS_SVC}};
34     std::string oldOwner = {":1.99"};
35     boost::container::flat_set<std::string> assocInterfacesSet = {
36         assocDefsInterface};
37 
38     // Build up these objects so that an associated interface will match
39     // with the associated owner being removed
40     auto assocOwners = createDefaultOwnerAssociation();
41     auto assocInterfaces = createDefaultInterfaceAssociation(server);
42     auto interfaceMap = createInterfaceMap(
43         DEFAULT_SOURCE_PATH, DEFAULT_DBUS_SVC, assocInterfacesSet);
44 
45     processNameChangeDelete(nameOwners, DEFAULT_DBUS_SVC, oldOwner,
46                             interfaceMap, assocOwners, assocInterfaces,
47                             *server);
48     EXPECT_EQ(nameOwners.size(), 0);
49 
50     // Verify owner association was deleted
51     EXPECT_TRUE(assocOwners.empty());
52 
53     // Verify endpoint was deleted from interface association
54     auto intfEndpoints =
55         std::get<endpointsPos>(assocInterfaces[DEFAULT_FWD_PATH]);
56     EXPECT_EQ(intfEndpoints.size(), 0);
57     intfEndpoints = std::get<endpointsPos>(assocInterfaces[DEFAULT_REV_PATH]);
58     EXPECT_EQ(intfEndpoints.size(), 0);
59 
60     // Verify interface map was deleted
61     EXPECT_TRUE(interfaceMap.empty());
62 }
63