New test cases added and code fixes

New Test cases:
    1. Send CSR request from different user roles
    2. Send CSR request when VMI is down
Code fixes:
    1. Code to handle CSR request when VMI is up and when VMI is down
    2. Generate CSR with right csr file

Signed-off-by: Prashanth Katti <prkatti1@in.ibm.com>
Change-Id: Icd6127f28a4612aa459c4841010eb63bf5d4f6b6
diff --git a/openpower/ext_interfaces/test_vmicert_management.robot b/openpower/ext_interfaces/test_vmicert_management.robot
index a939438..921d579 100644
--- a/openpower/ext_interfaces/test_vmicert_management.robot
+++ b/openpower/ext_interfaces/test_vmicert_management.robot
@@ -18,7 +18,10 @@
 # users           User Name               password
 @{ADMIN}          admin_user              TestPwd123
 @{OPERATOR}       operator_user           TestPwd123
-&{USERS}          Administrator=${ADMIN}  Operator=${OPERATOR}
+@{ReadOnly}       readonly_user           TestPwd123
+@{NoAccess}       noaccess_user           TestPwd123
+&{USERS}          Administrator=${ADMIN}  Operator=${OPERATOR}  ReadOnly=${ReadOnly}
+...               NoAccess=${NoAccess}
 ${VMI_BASE_URI}   /ibm/v1/
 ${CSR_FILE}       csr_server.csr
 ${CSR_KEY}        csr_server.key
@@ -28,22 +31,60 @@
 Get CSR Request Signed By VMI And Verify
     [Documentation]  Get CSR request signed by VMI using different user roles and verify.
     [Tags]  Get_CSR_Request_Signed_By_VMI_And_Verify
+    [Setup]  Redfish Power On
     [Template]  Get Certificate Signed By VMI
 
     # username           password             force_create  valid_csr  valid_status_code
     ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}  ${True}       ${True}    ${HTTP_OK}
+
+    # Send CSR request from operator user.
     operator_user        TestPwd123           ${False}      ${True}    ${HTTP_FORBIDDEN}
 
+    # Send CSR request from ReadOnly user.
+    readonly_user        TestPwd123           ${False}      ${True}    ${HTTP_FORBIDDEN}
+
+    # Send CSR request from NoAccess user.
+    noaccess_user        TestPwd123           ${False}      ${True}    ${HTTP_FORBIDDEN}
+
 
 Get Root Certificate Using Different Privilege Users Roles
     [Documentation]  Get root certificate using different users.
     [Tags]  Get_Root_Certificate_Using_Different_Users
+    [Setup]  Redfish Power On
     [Template]  Get Root Certificate
 
     # username     password    force_create  valid_csr  valid_status_code
+    # Request root certificate from admin user.
     admin_user     TestPwd123  ${True}       ${True}    ${HTTP_OK}
+
+    # Request root certificate from operator user.
     operator_user  TestPwd123  ${False}      ${True}    ${HTTP_FORBIDDEN}
 
+    # Request root certificate from ReadOnly user.
+    readonly_user  TestPwd123  ${False}      ${True}    ${HTTP_FORBIDDEN}
+
+    # Request root certificate from NoAccess user.
+    noaccess_user  TestPwd123  ${False}      ${True}    ${HTTP_FORBIDDEN}
+
+
+Send CSR Request When VMI Is Off And Verify
+    [Documentation]  Send CSR signing request to VMI when it is off and expect an error.
+    [Tags]  Get_CSR_Request_When_VMI_Is_Off_And_verify
+    [Setup]  Redfish Power Off
+    [Template]  Get Certificate Signed By VMI
+
+    # username           password             force_create  valid_csr  valid_status_code
+    ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}  ${True}       ${True}    ${HTTP_INTERNAL_SERVER_ERROR}
+
+    # Send CSR request from operator user.
+    operator_user        TestPwd123           ${False}      ${True}    ${HTTP_INTERNAL_SERVER_ERROR}
+
+    # Send CSR request from ReadOnly user.
+    readonly_user        TestPwd123           ${False}      ${True}    ${HTTP_INTERNAL_SERVER_ERROR}
+
+    # Send CSR request from NoAccess user.
+    noaccess_user        TestPwd123           ${False}      ${True}    ${HTTP_INTERNAL_SERVER_ERROR}
+
 
 *** Keywords ***
 
@@ -58,7 +99,7 @@
     # Run openssl command to create a new private key and use that to generate a CSR string
     # in server.csr file.
     ${output}=  Run  ${ssl_cmd} ${ssl_sub}
-    ${csr}=  OperatingSystem.Get File  server.csr
+    ${csr}=  OperatingSystem.Get File  ${CSR_FILE}
 
     [Return]  ${csr}