Added new test for VMI menu

Changes:
    - Added test
    "Enable VMI SLAAC When DHCPv6 Is Enabled And Verify"
    - Added keyword
    "Set VMI DHCPv6 Property"

Tested:
    - Ran successfully test_vmi.robot

Change-Id: Ic5c5758616b0089daebc09d83b2400ad432674b1
Signed-off-by: Megha G N <Megha.G.N@ibm.com>
diff --git a/openpower/ext_interfaces/test_vmi.robot b/openpower/ext_interfaces/test_vmi.robot
index afccf95..7962a9e 100644
--- a/openpower/ext_interfaces/test_vmi.robot
+++ b/openpower/ext_interfaces/test_vmi.robot
@@ -34,8 +34,15 @@
 &{ENABLE_SLAAC}           StatelessAddressAutoConfig=&{SLAAC_ENABLED}
 &{DISABLE_SLAAC}          StatelessAddressAutoConfig=&{SLAAC_DISABLED}
 
+&{DHCPv6_ENABLED}         OperatingMode=Enabled
+&{DHCPv6_DISABLED}        OperatingMode=Disabled
+
+&{ENABLE_DHCPv6}          DHCPv6=&{DHCPv6_ENABLED}
+&{DISABLE_DHCPv6}         DHCPv6=&{DHCPv6_DISABLED}
+
 ${default}                0.0.0.0
 ${default_ipv6addr}       ::
+${prefix_length}          64
 
 
 *** Test Cases ***
@@ -550,6 +557,23 @@
     Verify VMI Network Interface Details  ${default}  Static  ${default}  ${default}
 
 
+Enable VMI SLAAC When DHCPv6 Is Enabled And Verify
+    [Documentation]  Enable VMI SLAACv6 when VMI DHCPv6 is enabled and
+    ...  check IPv6 gets Slaac address and this works on the setup
+    ...  where router advertise network prefix.
+    [Tags]  Enable_VMI_SLAAC_When_DHCPv6_Is_Enabled_And_Verify
+
+    Set VMI DHCPv6 Property  Enabled
+
+    # Enable SLAAC and check whether IPv6 origin is set to SLAAC.
+    Set VMI SLAACv6 Origin    ${True}
+
+    # Check if origin is set to slaac and address are getting displayed.
+    ${vmi_ipv6addr}=  Verify VMI IPv6 Address  SLAAC
+    Should Not Be Equal  ${vmi_ipv6addr["Address"]}  ${default_ipv6addr}
+    Should Be Equal  ${vmi_ipv6addr["PrefixLength"]}  ${prefix_length}
+
+
 *** Keywords ***
 
 Suite Setup Execution
@@ -747,3 +771,26 @@
     Should Not Be Empty  ${vmi_ipv6_config["Address"]}
     Should Be Equal As Strings   ${vmi_ipv6_config["AddressOrigin"]}  ${ipv6_origin}
     RETURN  &{vmi_ipv6_config}
+
+
+Set VMI DHCPv6 Property
+    [Documentation]  Set VMI DHCPv6 attribute.
+    [Arguments]  ${dhcpv6_operatingmode}=${Disabled}  ${valid_status_code}=${HTTP_ACCEPTED}
+    ...  ${interface}=${ethernet_interface}
+
+    # Description of argument(s):
+    # dhcpv6_operatingmode    Enabled if user wants to enable DHCPv6.
+    # ...                     Default is Static, hence value is set to Disabled.
+    # valid_status_code       Expected valid status code from PATCH request. Default is HTTP_OK.
+    # interface               VMI interface (eg. eth0 or eth1).
+
+    ${data}=  Set Variable If  '${dhcpv6_operatingmode}' == 'Disabled'  ${DISABLE_DHCPv6}  ${ENABLE_DHCPv6}
+    ${resp}=  Redfish.Patch
+    ...  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${interface}
+    ...  body=${data}  valid_status_codes=[${valid_status_code}]
+
+    Sleep  ${wait_time}
+    Return From Keyword If  ${valid_status_code} != ${HTTP_ACCEPTED}
+    ${resp}=  Redfish.Get
+    ...  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${interface}
+    Should Be Equal  ${resp.dict["DHCPv6"]["OperatingMode"]}  ${dhcpv6_operatingmode}