diff --git a/test/test_ethernet_interface.cpp b/test/test_ethernet_interface.cpp
index ad30c0a..4fd97a0 100644
--- a/test/test_ethernet_interface.cpp
+++ b/test/test_ethernet_interface.cpp
@@ -14,6 +14,7 @@
 #include <sdbusplus/bus.hpp>
 #include <stdplus/gtest/tmp.hpp>
 #include <string_view>
+#include <xyz/openbmc_project/Common/error.hpp>
 
 #include <gtest/gtest.h>
 
@@ -88,6 +89,17 @@
     {
         interface.ip(addressType, ipaddress, subnetMask, "");
     }
+
+    void setNtpServers()
+    {
+        ServerList ntpServers = {"10.1.1.1", "10.2.2.2", "10.3.3.3"};
+        interface.EthernetInterfaceIntf::ntpServers(ntpServers);
+    }
+
+    ServerList getNtpServers()
+    {
+        return interface.EthernetInterfaceIntf::ntpServers();
+    }
 };
 
 TEST_F(TestEthernetInterface, Fields)
@@ -185,17 +197,31 @@
     EXPECT_EQ(interface.getNameServerFromResolvd(), servers);
 }
 
-TEST_F(TestEthernetInterface, addNTPServers)
+TEST_F(TestEthernetInterface, addStaticNTPServers)
 {
     ServerList servers = {"10.1.1.1", "10.2.2.2", "10.3.3.3"};
     EXPECT_CALL(manager, reloadConfigs());
-    interface.ntpServers(servers);
+    interface.staticNTPServers(servers);
     fs::path filePath = confDir;
     filePath /= "00-bmc-test0.network";
     config::Parser parser(filePath.string());
     EXPECT_EQ(servers, parser.map.getValueStrings("Network", "NTP"));
 }
 
+TEST_F(TestEthernetInterface, addNTPServers)
+{
+    using namespace sdbusplus::xyz::openbmc_project::Common::Error;
+    ServerList servers = {"10.1.1.1", "10.2.2.2", "10.3.3.3"};
+    EXPECT_THROW(interface.ntpServers(servers), NotAllowed);
+}
+
+TEST_F(TestEthernetInterface, getNTPServers)
+{
+    ServerList servers = {"10.1.1.1", "10.2.2.2", "10.3.3.3"};
+    setNtpServers();
+    EXPECT_EQ(getNtpServers(), servers);
+}
+
 TEST_F(TestEthernetInterface, addGateway)
 {
     std::string gateway = "10.3.3.3";
