Added test to verify enabling SSH via GUI

Change-Id: Ie206475ba3830e6f034069e7465e40532a213e82
Signed-off-by: meghagn12345 <Megha.GN@ibm.com>
diff --git a/gui/gui_test/security_and_access_menu/test_policies_sub_menu.robot b/gui/gui_test/security_and_access_menu/test_policies_sub_menu.robot
index c5e177a..afdfd46 100644
--- a/gui/gui_test/security_and_access_menu/test_policies_sub_menu.robot
+++ b/gui/gui_test/security_and_access_menu/test_policies_sub_menu.robot
@@ -1,9 +1,8 @@
 *** Settings ***
 
-Documentation    Test OpenBMC GUI "Policies" sub-menu of "Security and access" menu.
+Documentation    Test OpenBMC GUI "Policies" sub-menu of "Security and Access" menu.
 
 Resource         ../../lib/gui_resource.robot
-
 Suite Setup      Launch Browser And Login GUI
 Suite Teardown   Close Browser
 Test Setup       Test Setup Execution
@@ -11,15 +10,15 @@
 
 *** Variables ***
 
-${xpath_policies_heading}           //h1[text()="Policies"]
-${xpath_bmc_ssh_toggle}             //*[@data-test-id='policies-toggle-bmcShell']
-${xpath_network_ipmi_toggle}        //*[@data-test-id='polices-toggle-networkIpmi']
+${xpath_policies_heading}       //h1[text()="Policies"]
+${xpath_bmc_ssh_toggle}         //*[@data-test-id='policies-toggle-bmcShell']/following-sibling::label
+${xpath_network_ipmi_toggle}    //*[@data-test-id='polices-toggle-networkIpmi']
 
 
 *** Test Cases ***
 
 Verify Navigation To Policies Page
-    [Documentation]  Verify navigation to Policies page.
+    [Documentation]  Verify navigation to policies page.
     [Tags]  Verify_Navigation_To_Policies_Page
 
     Page Should Contain Element  ${xpath_policies_heading}
@@ -42,11 +41,37 @@
     Page Should Contain Element  ${xpath_network_ipmi_toggle}
 
 
+Enable SSH Via GUI And Verify
+    [Documentation]  Verify that SSH to BMC starts working after enabling SSH.
+    [Tags]  Enable_SSH_Via_GUI_And_Verify
+    [Teardown]  Run Keywords  Redfish.Patch  /redfish/v1/Managers/bmc/NetworkProtocol
+    ...  body={"SSH":{"ProtocolEnabled":True}}  valid_status_codes=[200, 204]  AND
+    ...  Wait Until Keyword Succeeds  30 sec  5 sec  Open Connection And Login
+
+    # Disable ssh via Redfish.
+    Redfish.Patch  /redfish/v1/Managers/bmc/NetworkProtocol  body={"SSH":{"ProtocolEnabled":False}}
+    ...   valid_status_codes=[200, 204]
+
+    # Wait for GUI to reflect disable SSH status.
+    Wait Until Keyword Succeeds  30 sec  10 sec
+    ...  Refresh GUI And Verify Element Value  ${xpath_bmc_ssh_toggle}  Disabled
+
+    # Enable ssh via GUI.
+    Click Element  ${xpath_bmc_ssh_toggle}
+
+    # Wait for GUI to reflect enable SSH status.
+    Wait Until Keyword Succeeds  30 sec  10 sec
+    ...  Refresh GUI And Verify Element Value  ${xpath_bmc_ssh_toggle}  Enabled
+
+    Wait Until Keyword Succeeds  10 sec  5 sec  Open Connection And Login
+
+
 *** Keywords ***
 
 Test Setup Execution
     [Documentation]  Do test case setup tasks.
-
     Click Element  ${xpath_secuity_and_accesss_menu}
     Click Element  ${xpath_policies_sub_menu}
     Wait Until Keyword Succeeds  30 sec  10 sec  Location Should Contain  policies
+
+
diff --git a/gui/lib/gui_resource.robot b/gui/lib/gui_resource.robot
index 38266f4..794adf7 100644
--- a/gui/lib/gui_resource.robot
+++ b/gui/lib/gui_resource.robot
@@ -128,3 +128,22 @@
     Click Element  ${xpath_refresh_button}
     # Added delay for page to load fully after refresh.
     Sleep  5s
+
+
+Refresh GUI And Verify Element Value
+    [Documentation]  Refresh GUI using refresh button and verify that given element contains expected value.
+    [Arguments]  ${element}  ${expected_value}
+
+    # Description of argument(s):
+    # element         Element whose value need to be checked.
+    # expected_value  Expected value of for the given element.
+
+    # Refresh GUI.
+
+    Click Element  ${xpath_refresh_button}
+
+    # Check element value and verify that it contains expected value.
+    ${element_value}=  Get Text  ${element}
+    Log  ${element_value}
+    Should Contain  ${element_value}  ${expected_value}
+