Added GUI testcases to config and delete DNS Server

Change-Id: Ib15d13793dc348648d8fac0cd1cdf15d8c937d54
Signed-off-by: Anves Kumar rayankula <anvesr77@in.ibm.com>
diff --git a/gui/gui_test/server_config/test_obmc_gui_network_settings.robot b/gui/gui_test/server_config/test_obmc_gui_network_settings.robot
index ec226b9..0b11107 100644
--- a/gui/gui_test/server_config/test_obmc_gui_network_settings.robot
+++ b/gui/gui_test/server_config/test_obmc_gui_network_settings.robot
@@ -27,6 +27,11 @@
 ${xpath_network_interface}        //*[@data-test-id="networkSettings-select-interface"]
 ${xpath_input_netmask_addr0}      //*[@data-test-id="networkSettings-input-subnetMask-0"]
 ${xpath_delete_static_ip}         //*[@title="Delete IPv4 row"]
+${xpath_input_dns_server}         //*[@data-test-id="networkSettings-input-dnsAddress-0"]
+${xpath_delete_dns_server}        //*[@title="Delete DNS row"]
+
+
+@{static_name_servers}            10.10.10.10
 
 *** Test Cases ***
 
@@ -167,6 +172,26 @@
     ${xpath_hostname_input}           ${empty}       Field required
 
 
+Config And Verify DNS Server Via GUI
+    [Documentation]  Configure DNS server and verify.
+    [Tags]  Config_And_Verify_DNS_Server_Via_GUI
+    [Setup]   DNS Test Setup Execution
+    [Teardown]   Run Keywords  Delete DNS Server And Verify  ${static_name_servers}
+    ...  AND  DNS Test Teardown Execution
+
+    Add DNS Server And Verify  ${static_name_servers}
+
+
+Delete And Verify DNS Server Via GUI
+    [Documentation]  Delete DNS server and verify.
+    [Tags]  Delete_And_Verify_DNS_Server_Via_GUI
+    [Setup]   Run Keywords  DNS Test Setup Execution  AND
+    ...  Add DNS Server And Verify  ${static_name_servers}
+    [Teardown]  DNS Test Teardown Execution
+
+    Delete DNS Server And Verify  ${static_name_servers}
+
+
 *** Keywords ***
 
 Suite Setup Execution
@@ -194,3 +219,88 @@
     Click Element  ${xpath_network_save_settings}
     Page Should Contain  ${expected_error}
 
+
+Add DNS Server And Verify
+    [Documentation]  Add DNS server on BMC and verify it via BMC CLI.
+    [Arguments]  ${static_name_servers}
+
+    # Description of the argument(s):
+    # static_name_servers  A list of static name server IPs to be
+    #                      configured on the BMC.
+
+    Wait Until Page Contains Element  ${xpath_add_dns_server}
+    ${length}=  Get Length   ${static_name_servers}
+    FOR  ${i}  IN RANGE  ${length}
+      Click Button  ${xpath_add_dns_server}
+      Input Text  //*[@data-test-id="networkSettings-input-dnsAddress-${i}"]
+      ...  ${static_name_servers}[${i}]
+    END
+
+    Click Button  ${xpath_network_save_settings}
+    Wait Until Page Contains Element  ${xpath_setting_success}  timeout=15
+
+    Sleep  ${NETWORK_TIMEOUT}s
+    Verify Static Name Server Details On GUI  ${static_name_servers}
+    # Check if newly added DNS server is configured on BMC.
+    ${cli_name_servers}=  CLI Get Nameservers
+    List Should Contain Sub List  ${cli_name_servers}  ${static_name_servers}
+
+
+Delete DNS Server And Verify
+    [Documentation]  Delete static name servers.
+    [Arguments]  ${static_name_servers}
+
+    # Description of the argument(s):
+    # static_name_servers  A list of static name server IPs to be
+    #                      configured on the BMC.
+
+    ${length}=  Get Length  ${static_name_servers}
+    FOR  ${i}  IN RANGE   ${length}
+       ${status}=  Run Keyword And Return Status
+       ...  Page Should Contain Element  ${xpath_delete_dns_server}
+       Exit For Loop If   "${status}" == "False"
+       Wait Until Element Is Enabled  ${xpath_delete_dns_server}
+       Click Button  ${xpath_delete_dns_server}
+    END
+
+    Click Button  ${xpath_network_save_settings}
+    Wait Until Page Contains Element  ${xpath_setting_success}  timeout=15
+
+    Sleep  ${NETWORK_TIMEOUT}s
+    Page Should Not Contain Element  ${xpath_input_dns_server}
+    # Check if all name servers deleted on BMC.
+    ${nameservers}=  CLI Get Nameservers
+    Should Be Empty  ${nameservers}
+
+
+DNS Test Setup Execution
+    [Documentation]  Do DNS test setup execution.
+
+    ${original_name_server}=  CLI Get Nameservers
+    Set Suite Variable   ${original_name_server}
+    Run Keyword If  ${original_name_server} != @{EMPTY}
+    ...  Delete DNS Server And Verify  ${original_name_server}
+
+
+DNS Test Teardown Execution
+    [Documentation]  Do DNS test teardown execution.
+
+    Run Keyword If  ${original_name_server} != @{EMPTY}
+    ...  Add DNS Server And Verify  ${original_name_server}
+
+
+Verify Static Name Server Details On GUI
+    [Documentation]  Verify static name servers on GUI.
+    [Arguments]   ${static_name_servers}
+
+    # Description of the argument(s):
+    # static_name_servers  A list of static name server IPs to be
+    #                      configured on the BMC.
+
+    ${length}=  Get Length  ${static_name_servers}
+    FOR  ${i}  IN RANGE  ${length}
+       Page Should Contain Element  //*[@data-test-id="networkSettings-input-dnsAddress-${i}"]
+       Textfield Value Should Be   //*[@data-test-id="networkSettings-input-dnsAddress-${i}"]
+       ...  ${static_name_servers}[${i}]
+    END
+