#include "dns_updater.hpp" #include #include #include static constexpr auto IN_FILE = "/tmp/" __BASE_FILE__ "netif_state"; static constexpr auto OUT_FILE = "/tmp/" __BASE_FILE__ "resolv.conf"; static constexpr auto COMPARE_FILE = "/tmp/" __BASE_FILE__ "resolv_compare.conf"; static constexpr auto DNS_ENTRY_1 = "DNS=1.2.3.4\n"; static constexpr auto DNS_ENTRY_2 = "DNS=5.6.7.8\n"; namespace fs = std::experimental::filesystem; class DnsUpdateTest : public ::testing::Test { public: // Gets called as part of each TEST_F construction DnsUpdateTest() { // Create a file containing DNS entries like in netif/state std::ofstream file(IN_FILE); file << DNS_ENTRY_1; file << DNS_ENTRY_2; // Create a file to compare the results against std::ofstream compare(COMPARE_FILE); compare << "### Generated by phosphor-networkd ###\n"; compare << "nameserver 1.2.3.4\n"; compare << "nameserver 5.6.7.8\n"; } // Gets called as part of each TEST_F destruction ~DnsUpdateTest() { if (fs::exists(IN_FILE)) { fs::remove(IN_FILE); } if (fs::exists(OUT_FILE)) { fs::remove(OUT_FILE); } if (fs::exists(COMPARE_FILE)) { fs::remove(COMPARE_FILE); } } }; /** @brief Makes outfile is updated with right contents */ TEST_F(DnsUpdateTest, validateOutFile) { phosphor::network::dns::updater::updateDNSEntries(IN_FILE, OUT_FILE); // Read files and compare std::ifstream resolv(OUT_FILE); std::ifstream compare(COMPARE_FILE); // From actual file std::string resolvEntry{}; std::string resolvContent{}; while (std::getline(resolv, resolvEntry)) { resolvContent += resolvEntry; } // From compare file std::string compareEntry{}; std::string compareContent{}; while (std::getline(compare, compareEntry)) { compareContent += compareEntry; } EXPECT_EQ(resolvContent, compareContent); }