1 #include "snmp_conf_manager.hpp"
2 #include "snmp_serialize.hpp"
3 
4 #include <xyz/openbmc_project/Common/error.hpp>
5 
6 #include <gtest/gtest.h>
7 
8 namespace phosphor
9 {
10 namespace network
11 {
12 namespace snmp
13 {
14 
15 using InvalidArgument =
16     sdbusplus::xyz::openbmc_project::Common::Error::InvalidArgument;
17 
18 auto mgrObjPath = "/xyz/openbmc_test/snmp/manager";
19 
20 class TestSNMPClient : public testing::Test
21 {
22   public:
23     sdbusplus::bus::bus bus;
24     ConfManager manager;
25     TestSNMPClient() :
26         bus(sdbusplus::bus::new_default()), manager(bus, mgrObjPath)
27     {
28         char tmp[] = "/tmp/snmpClient.XXXXXX";
29         auto confDir = mkdtemp(tmp);
30         manager.dbusPersistentLocation = confDir;
31     }
32 
33     ~TestSNMPClient()
34     {
35         fs::remove_all(manager.dbusPersistentLocation);
36     }
37 };
38 
39 TEST_F(TestSNMPClient, UpdateProperty)
40 {
41     std::string objPath = mgrObjPath;
42     objPath += "/" + std::to_string(1);
43     Client client(bus, objPath.c_str(), manager, "1.1.1.1", 202);
44     EXPECT_EQ(client.address(), "1.1.1.1");
45     EXPECT_EQ(client.port(), 202);
46     client.address("2.2.2.2");
47     EXPECT_EQ(client.address(), "2.2.2.2");
48     client.port(404);
49     EXPECT_EQ(client.port(), 404);
50 }
51 
52 TEST_F(TestSNMPClient, AddEmptyAddress)
53 {
54     std::string objPath = mgrObjPath;
55     objPath += "/" + std::to_string(1);
56     Client client(bus, objPath.c_str(), manager, "1.1.1.1", 202);
57     EXPECT_EQ(client.address(), "1.1.1.1");
58     EXPECT_EQ(client.port(), 202);
59 
60     EXPECT_THROW(client.address(""), InvalidArgument);
61 }
62 
63 TEST_F(TestSNMPClient, CheckPersistency)
64 {
65     std::string objPath = mgrObjPath;
66     objPath += "/" + std::to_string(1);
67     std::string objPath2 = mgrObjPath;
68     objPath2 += "/" + std::to_string(2);
69 
70     Client client(bus, objPath.c_str(), manager, "1.1.1.1", 23);
71     client.address("2.2.2.2");
72 
73     Client restoreClient(bus, objPath2.c_str(), manager);
74     auto persistentPath = manager.dbusPersistentLocation;
75     persistentPath += "/1";
76     deserialize(persistentPath, restoreClient);
77 
78     EXPECT_EQ("2.2.2.2", restoreClient.address());
79     EXPECT_EQ(23, restoreClient.port());
80 }
81 
82 } // namespace snmp
83 } // namespace network
84 } // namespace phosphor
85