1 #include "config.h" 2 3 #include "config_parser.hpp" 4 5 #include <exception> 6 #include <fstream> 7 #include <phosphor-logging/elog-errors.hpp> 8 #include <stdexcept> 9 #include <xyz/openbmc_project/Common/error.hpp> 10 11 #include <gtest/gtest.h> 12 13 namespace phosphor 14 { 15 namespace network 16 { 17 18 class TestConfigParser : public testing::Test 19 { 20 public: 21 config::Parser parser; 22 TestConfigParser() 23 { 24 remove("/tmp/eth0.network"); 25 std::ofstream filestream("/tmp/eth0.network"); 26 27 filestream << "[Match]\nName=eth0\n" 28 << "[Network]\nDHCP=true\n[DHCP]\nClientIdentifier= mac\n"; 29 filestream.close(); 30 parser.setFile("/tmp/eth0.network"); 31 } 32 33 bool isValueFound(const std::vector<std::string>& values, 34 const std::string& expectedValue) 35 { 36 for (const auto& value : values) 37 { 38 if (expectedValue == value) 39 { 40 return true; 41 } 42 } 43 return false; 44 } 45 }; 46 47 TEST_F(TestConfigParser, ReadConfigDataFromFile) 48 { 49 config::ReturnCode rc = config::ReturnCode::SUCCESS; 50 config::ValueList values; 51 52 std::tie(rc, values) = parser.getValues("Network", "DHCP"); 53 std::string expectedValue = "true"; 54 bool found = isValueFound(values, expectedValue); 55 EXPECT_EQ(found, true); 56 57 std::tie(rc, values) = parser.getValues("DHCP", "ClientIdentifier"); 58 expectedValue = "mac"; 59 found = isValueFound(values, expectedValue); 60 EXPECT_EQ(found, true); 61 62 std::tie(rc, values) = parser.getValues("Match", "Name"); 63 expectedValue = "eth0"; 64 found = isValueFound(values, expectedValue); 65 EXPECT_EQ(found, true); 66 } 67 68 TEST_F(TestConfigParser, SectionNotExist) 69 { 70 config::ReturnCode rc = config::ReturnCode::SUCCESS; 71 config::ValueList values; 72 std::tie(rc, values) = parser.getValues("abc", "ipaddress"); 73 EXPECT_EQ(config::ReturnCode::SECTION_NOT_FOUND, rc); 74 } 75 76 TEST_F(TestConfigParser, KeyNotFound) 77 { 78 config::ReturnCode rc = config::ReturnCode::SUCCESS; 79 config::ValueList values; 80 std::tie(rc, values) = parser.getValues("Network", "abc"); 81 EXPECT_EQ(config::ReturnCode::KEY_NOT_FOUND, rc); 82 remove("/tmp/eth0.network"); 83 } 84 85 } // namespace network 86 } // namespace phosphor 87