Fix for VMI test cases

Change-Id: I7d5a555ce41af091fd2c4ba68094f6dcd8a4d1c1
Signed-off-by: Megha GN <Megha.GN@ibm.com>
diff --git a/lib/external_intf/vmi_utils.robot b/lib/external_intf/vmi_utils.robot
index 1ff585e..4dac55c 100644
--- a/lib/external_intf/vmi_utils.robot
+++ b/lib/external_intf/vmi_utils.robot
@@ -87,7 +87,8 @@
     # Wait few seconds for configuration to get effective.
     Sleep  ${wait_time}
     ${vmi_ip}=  Get VMI Network Interface Details  ${interface}
-    Should Be Empty  ${vmi_ip["IPv4_Address"]}
+    ${default}=  Set Variable  0.0.0.0
+    Verify VMI Network Interface Details  ${default}  Static  ${default}  ${default}
 
 Set VMI IPv4 Origin
     [Documentation]  Set VMI IPv4 origin.
diff --git a/openpower/ext_interfaces/test_vmi.robot b/openpower/ext_interfaces/test_vmi.robot
index b523796..f78ad66 100644
--- a/openpower/ext_interfaces/test_vmi.robot
+++ b/openpower/ext_interfaces/test_vmi.robot
@@ -1,8 +1,8 @@
 *** Settings ***
 
-Documentation    VMI static/dynamic IP config tests.
+Documentation     VMI static/dynamic IP config tests.
 
-Resource         ../../lib/external_intf/vmi_utils.robot
+Resource          ../../lib/external_intf/vmi_utils.robot
 
 Suite Setup       Suite Setup Execution
 Test Teardown     FFDC On Test Case Fail
@@ -14,9 +14,7 @@
 @{ADMIN}          admin_user              TestPwd123
 @{OPERATOR}       operator_user           TestPwd123
 @{ReadOnly}       readonly_user           TestPwd123
-@{NoAccess}       noaccess_user           TestPwd123
-&{USERS}          Administrator=${ADMIN}  Operator=${OPERATOR}  ReadOnly=${ReadOnly}
-...               NoAccess=${NoAccess}
+&{USERS}          Administrator=${ADMIN}  ReadOnly=${ReadOnly}
 
 ${test_ipv4}              10.6.6.6
 ${test_gateway}           10.6.6.1
@@ -113,6 +111,7 @@
     10.5.5.10   10.5.5.1     255.255.252.0    ${HTTP_ACCEPTED}
     10.5.5.11   10.5.5.1     255.255.252.0    ${HTTP_ACCEPTED}
 
+
 Switch Between IP Origins On VMI And Verify Details
     [Documentation]  Switch between IP origins on VMI and verify details.
     [Tags]  Switch_Between_IP_Origins_On_VMI_And_Verify_Details
@@ -146,9 +145,6 @@
 
     Set Static IPv4 Address To VMI And Verify  ${test_ipv4}  ${test_gateway}  ${test_netmask}
     Delete VMI IPv4 Address
-    ${resp}=  Redfish.Get
-    ...  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${ethernet_interface}
-    Should Be Empty  ${resp.dict["IPv4Addresses"]}
 
 
 Verify Successful VMI IP Static Configuration On HOST Boot After Session Delete
@@ -208,6 +204,7 @@
     # Verifying the VMI static configuration
     Verify VMI Network Interface Details  ${test_ipv4}  Static   ${test_gateway}  ${test_netmask}
 
+
 Add Static IP When Host Poweroff And Verify On Poweron
     [Documentation]  Add Static IP When Host Poweroff And Verify on power on
     [Tags]   Add_Static_IP_When_Host_Poweroff_And_Verify_On_Poweron
@@ -218,6 +215,7 @@
     Redfish Power On
     Verify VMI Network Interface Details  ${test_ipv4}  Static  ${test_gateway}  ${test_netmask}
 
+
 Add VMI Static IP When Host Poweroff And Verify Static IP On BMC Reset
     [Documentation]  Add Static IP When Host Poweroff And Verify Static IP On BMC Reset.
     [Tags]  Add_VMI_Static_IP_When_Host_Poweroff_And_Verify_Static_IP_On_BMC_Reset
@@ -229,6 +227,7 @@
     Redfish Power On
     Verify VMI Network Interface Details  ${test_ipv4}  Static  ${test_gateway}  ${test_netmask}
 
+
 Enable DHCP When No Static IP Configured And Verify DHCP IP
     [Documentation]  Enable DHCP when no static ip configured and verify dhcp ip
     [Tags]  Enable_DHCP_When_No_Static_IP_Configured_And_Verify_DHCP_IP
@@ -241,6 +240,7 @@
     Verify VMI Network Interface Details  ${vmi_ip_config["IPv4_Address"]}
     ...  DHCP  ${vmi_ip_config["IPv4_Gateway"]}  ${vmi_ip_config["IPv4_SubnetMask"]}
 
+
 Verify User Cannot Delete VMI DHCP IP Address
     [Documentation]  Verify user cannot delete VMI DHCP IP Address
     [Tags]  Verify_User_Cannot_Delete_VMI_DHCP_IP_Address
@@ -252,6 +252,7 @@
     ...  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${ethernet_interface}
     Should Not Be Empty  ${resp.dict["IPv4Addresses"]}
 
+
 Enable DHCP When Static IP Configured DHCP Server Unavailable And Verify IP
     [Documentation]  Enable DHCP When Static IP Configured And DHCP Server Unavailable And Verify No IP.
     [Tags]  Enable_DHCP_When_Static_IP_Configured_DHCP_Server_Unavailable_And_Verify_IP
@@ -272,9 +273,18 @@
 
     # username     password    ip_address    gateway          nemask           valid_status_code
     admin_user     TestPwd123  ${test_ipv4}  ${test_gateway}  ${test_netmask}  ${HTTP_ACCEPTED}
-    operator_user  TestPwd123  ${test_ipv4}  ${test_gateway}  ${test_netmask}  ${HTTP_FORBIDDEN}
     readonly_user  TestPwd123  ${test_ipv4}  ${test_gateway}  ${test_netmask}  ${HTTP_FORBIDDEN}
-    noaccess_user  TestPwd123  ${test_ipv4}  ${test_gateway}  ${test_netmask}  ${HTTP_FORBIDDEN}
+
+
+Verify To Configure VMI Static IP Address With Operator User Role
+    [Documentation]  Verify to configure vmi static ip address with operator user role.
+    [Tags]  Verify_To_Configure_VMI_Static_IP_Address_With_Operator_User_Role
+    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
+    [Template]  Config VMI Static IP Address Using Different Users
+    [Teardown]  Delete BMC Users Using Redfish
+
+    # username     password    ip_address    gateway          nemask           valid_status_code
+    operator_user  TestPwd123  ${test_ipv4}  ${test_gateway}  ${test_netmask}  ${HTTP_FORBIDDEN}
 
 
 Verify To Delete VMI Static IP Address With Different User Roles
@@ -286,9 +296,18 @@
 
     # username     password     valid_status_code
     admin_user     TestPwd123   ${HTTP_ACCEPTED}
-    operator_user  TestPwd123   ${HTTP_FORBIDDEN}
     readonly_user  TestPwd123   ${HTTP_FORBIDDEN}
-    noaccess_user  TestPwd123   ${HTTP_FORBIDDEN}
+
+
+Verify To Delete VMI Static IP Address With Operator User Role
+    [Documentation]  Verify to delete vmi static IP address with operator user role.
+    [Tags]  Verify_To_Delete_VMI_Static_IP_Address_With_Operator_User_Role
+    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
+    [Template]  Delete VMI Static IP Address Using Different Users
+    [Teardown]  Delete BMC Users Using Redfish
+
+    # username     password     valid_status_code
+    operator_user     TestPwd123   ${HTTP_FORBIDDEN}
 
 
 Verify To Update VMI Static IP Address With Different User Roles
@@ -300,9 +319,18 @@
 
     # username     password     ip_address  gateway    netmask       valid_status_code
     admin_user     TestPwd123   10.5.10.20  10.5.10.1  255.255.0.0  ${HTTP_ACCEPTED}
-    operator_user  TestPwd123   10.5.10.30  10.5.10.1  255.255.0.0  ${HTTP_FORBIDDEN}
     readonly_user  TestPwd123   10.5.20.40  10.5.20.1  255.255.0.0  ${HTTP_FORBIDDEN}
-    noaccess_user  TestPwd123   10.5.30.50  10.5.30.1  255.255.0.0  ${HTTP_FORBIDDEN}
+
+
+Verify To Update VMI Static IP Address With Operator User Role
+    [Documentation]  Verify to update vmi static IP address with operator user role.
+    [Tags]  Verify_To_Update_VMI_Static_IP_Address_With_Operator_User_Role
+    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
+    [Template]  Config VMI Static IP Address Using Different Users
+    [Teardown]  Delete BMC Users Using Redfish
+
+    # username     password     ip_address  gateway    netmask       valid_status_code
+    operator_user  TestPwd123   10.5.10.30  10.5.10.1  255.255.0.0  ${HTTP_FORBIDDEN}
 
 
 Verify To Read VMI Network Configuration With Different User Roles
@@ -314,9 +342,19 @@
 
     # username     password     valid_status_code
     admin_user     TestPwd123   ${HTTP_OK}
-    operator_user  TestPwd123   ${HTTP_OK}
     readonly_user  TestPwd123   ${HTTP_OK}
-    noaccess_user  TestPwd123   ${HTTP_FORBIDDEN}
+
+
+Verify To Read VMI Network Configuration With Operator User Role
+    [Documentation]  Verify to read vmi network configuration with operator user role.
+    [Tags]  Verify_To_Read_VMI_Network_Configuration_With_Operator_User_Role
+    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
+    [Template]  Read VMI Static IP Address Using Different Users
+    [Teardown]  Delete BMC Users Using Redfish
+
+    # username     password     valid_status_code
+    operator_user  TestPwd123   ${HTTP_FORBIDDEN}
+
 
 Enable DHCP On VMI Network Via Different Users Roles And Verify
     [Documentation]  Enable DHCP On VMI Network Via Different Users Roles And Verify.
@@ -327,9 +365,19 @@
 
     # username     password     dhcp_enabled   valid_status_code
     admin_user     TestPwd123   ${True}        ${HTTP_ACCEPTED}
-    operator_user  TestPwd123   ${True}        ${HTTP_FORBIDDEN}
     readonly_user  TestPwd123   ${True}        ${HTTP_FORBIDDEN}
-    noaccess_user  TestPwd123   ${True}        ${HTTP_FORBIDDEN}
+
+
+Enable DHCP On VMI Network Via Operator User Role And Verify
+    [Documentation]  Enable DHCP On VMI Network Via Operator User Role And Verify.
+    [Tags]  Enable_DHCP_On_VMI_Network_Via_Operator_User_Role_And_Verify
+    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
+    [Template]  Update User Role And Set VMI IPv4 Origin
+    [Teardown]  Delete BMC Users Using Redfish
+
+    # username     password     dhcp_enabled   valid_status_code
+    operator_user  TestPwd123   ${True}        ${HTTP_FORBIDDEN}
+
 
 Disable DHCP On VMI Network Via Different Users Roles And Verify
     [Documentation]  Disable DHCP On VMI Network Via Different Users Roles And Verify.
@@ -340,9 +388,18 @@
 
     # username     password     dhcp_enabled    valid_status_code
     admin_user     TestPwd123   ${False}        ${HTTP_ACCEPTED}
-    operator_user  TestPwd123   ${False}        ${HTTP_FORBIDDEN}
     readonly_user  TestPwd123   ${False}        ${HTTP_FORBIDDEN}
-    noaccess_user  TestPwd123   ${False}        ${HTTP_FORBIDDEN}
+
+
+Disable DHCP On VMI Network Via Operator User Role And Verify
+    [Documentation]  Disable DHCP On VMI Network Via Operator User Role And Verify.
+    [Tags]  Disable_DHCP_On_VMI_Network_Via_Operator_User_Role_And_Verify
+    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
+    [Template]  Update User Role And Set VMI IPv4 Origin
+    [Teardown]  Delete BMC Users Using Redfish
+
+    # username     password     dhcp_enabled    valid_status_code
+    operator_user  TestPwd123   ${False}        ${HTTP_FORBIDDEN}
 
 
 Enable And Disable DHCP And Verify
@@ -353,8 +410,7 @@
     ${default}=  Set Variable  0.0.0.0
     Verify VMI Network Interface Details  ${default}  DHCP  ${default}  ${default}
     Set VMI IPv4 Origin  ${False}
-    ${vmi_ip}=  Get VMI Network Interface Details
-    Should Be Empty  ${vmi_ip["IPv4_Address"]}
+    Verify VMI Network Interface Details  ${default}  Static  ${default}  ${default}
 
 
 Multiple Times Enable And Disable DHCP And Verify
@@ -367,8 +423,7 @@
       Set VMI IPv4 Origin  ${True}
       Verify VMI Network Interface Details  ${default}  DHCP  ${default}  ${default}
       Set VMI IPv4 Origin  ${False}
-      ${vmi_ip}=  Get VMI Network Interface Details
-      Should Be Empty  ${vmi_ip["IPv4_Address"]}
+      Verify VMI Network Interface Details  ${default}  Static  ${default}  ${default}
     END
 
 
@@ -472,6 +527,8 @@
     # password            The host password.
     # valid_status_code   The expected valid status code.
 
+    # TODO: operator_user role is not yet supported.
+    Skip If  '${username}' == 'operator_user'
     Redfish.Login  ${username}  ${password}
     Delete VMI IPv4 Address  delete_param=IPv4StaticAddresses  valid_status_code=${valid_status_code}
 
@@ -490,6 +547,8 @@
     # gateway             Gateway for the IP to be added (e.g. "10.7.7.1").
     # valid_status_code   The expected valid status code.
 
+    # TODO: operator_user role is not yet supported.
+    Skip If  '${username}' == 'operator_user'
     Redfish.Login  ${username}  ${password}
     Set Static IPv4 Address To VMI And Verify  ${ip}  ${gateway}  ${netmask}  ${valid_status_code}
 
@@ -503,6 +562,8 @@
     # password            The host password.
     # valid_status_code   The expected valid status code.
 
+    # TODO: operator_user role is not yet supported.
+    Skip If  '${username}' == 'operator_user'
     Redfish.Login  ${username}  ${password}
     Redfish.Get
     ...  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${ethernet_interface}