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   public:
10     boost::asio::io_context io;
11     virtual void SetUp()
12     {
13         io.run();
14     }
15 };
16 sdbusplus::asio::object_server* TestNameChange::AsioServerClassTest::server =
17     nullptr;
18 
19 // Verify unique name is removed from nameOwners
20 TEST_F(TestNameChange, UniqueNameNoInterfaces)
21 {
22     boost::container::flat_map<std::string, std::string> nameOwners = {
23         {":1.99", "test-name"}};
24     std::string wellKnown = {"test-name"};
25     std::string oldOwner = {":1.99"};
26     InterfaceMapType interfaceMap;
27     AssociationMaps assocMaps;
28 
29     processNameChangeDelete(io, nameOwners, wellKnown, oldOwner, interfaceMap,
30                             assocMaps, *server);
31     EXPECT_EQ(nameOwners.size(), 0);
32 }
33 
34 // Verify path removed from interface map and association objects
35 TEST_F(TestNameChange, UniqueNameAssociationsAndInterface)
36 {
37     boost::container::flat_map<std::string, std::string> nameOwners = {
38         {":1.99", defaultDbusSvc}};
39     std::string oldOwner = {":1.99"};
40     InterfaceNames assocInterfacesSet = {assocDefsInterface};
41 
42     // Build up these objects so that an associated interface will match
43     // with the associated owner being removed
44     AssociationMaps assocMaps;
45     assocMaps.owners = createDefaultOwnerAssociation();
46     assocMaps.ifaces = createDefaultInterfaceAssociation(server);
47     auto interfaceMap = createInterfaceMap(defaultSourcePath, defaultDbusSvc,
48                                            assocInterfacesSet);
49 
50     processNameChangeDelete(io, nameOwners, defaultDbusSvc, oldOwner,
51                             interfaceMap, assocMaps, *server);
52     EXPECT_EQ(nameOwners.size(), 0);
53 
54     // Verify owner association was deleted
55     EXPECT_TRUE(assocMaps.owners.empty());
56 
57     // Verify endpoint was deleted from interface association
58     auto intfEndpoints =
59         std::get<endpointsPos>(assocMaps.ifaces[defaultFwdPath]);
60     EXPECT_EQ(intfEndpoints.size(), 0);
61     intfEndpoints = std::get<endpointsPos>(assocMaps.ifaces[defaultRevPath]);
62     EXPECT_EQ(intfEndpoints.size(), 0);
63 
64     // Verify interface map was deleted
65     EXPECT_TRUE(interfaceMap.empty());
66 }
67