Test BMC managers use case

Added Test Cases:
    - Verify BMC Firmware Version
    - Verify BMC Manager Properties
    - Test BMC Manager GracefulRestart

Tested: On Master build.

Resolves: openbmc/openbmc-test-automation#1513

Change-Id: Ib4cc29a6693dc48919686b47a9306a6662b9ff3e
Signed-off-by: George Keishing <gkeishin@in.ibm.com>
diff --git a/redfish/managers/test_managers_bmc.robot b/redfish/managers/test_managers_bmc.robot
new file mode 100644
index 0000000..320b478
--- /dev/null
+++ b/redfish/managers/test_managers_bmc.robot
@@ -0,0 +1,69 @@
+*** Settings ***
+Resource         ../../lib/resource.txt
+Resource         ../../lib/bmc_redfish_resource.robot
+Resource         ../../lib/common_utils.robot
+
+Suite Teardown   redfish.Logout
+
+*** Test Cases ***
+
+Verify BMC Firmware Version
+    [Documentation]  Get firmware version from BMC manager.
+    [Tags]  Verify_BMC_Firmware_Version
+
+    redfish.Login
+    ${resp}=  redfish.Get  Managers/bmc
+    Should Be Equal As Strings  ${resp.status}  ${HTTP_OK}
+    ${bmc_version}=  Get BMC Version
+    Should Be Equal As Strings
+    ...  ${resp.dict["FirmwareVersion"]}  ${bmc_version.strip('"')}
+    redfish.Logout
+
+
+Verify BMC Manager Properties
+    [Documentation]  Verify BMC managers resource properties.
+    [Tags]  Verify_BMC_Manager_Properties
+
+    redfish.Login
+    ${resp}=  redfish.Get  Managers/bmc
+    Should Be Equal As Strings  ${resp.status}  ${HTTP_OK}
+    # Example:
+    #  "Description": "Baseboard Management Controller"
+    #  "Id": "bmc"
+    #  "Model": "OpenBmc",
+    #  "Name": "OpenBmc Manager",
+    #  "UUID": "xxxxxxxx-xxx-xxx-xxx-xxxxxxxxxxxx"
+    #  "PowerState": "On"
+
+    Should Be Equal As Strings
+    ...  ${resp.dict["Description"]}  Baseboard Management Controller
+    Should Be Equal As Strings  ${resp.dict["Id"]}  bmc
+    Should Be Equal As Strings  ${resp.dict["Model"]}  OpenBmc
+    Should Be Equal As Strings  ${resp.dict["Name"]}  OpenBmc Manager
+    Should Not Be Empty  ${resp.dict["UUID"]}
+    Should Be Equal As Strings  ${resp.dict["PowerState"]}  On
+    redfish.Logout
+
+
+Test BMC Manager GracefulRestart
+    [Documentation]  BMC graceful restart.
+    [Tags]  Test_BMC_Manager_GracefulRestart
+
+    # Example:
+    # "Actions": {
+    # "#Manager.Reset": {
+    #  "ResetType@Redfish.AllowableValues": [
+    #    "GracefulRestart"
+    #  ],
+    #  "target": "/redfish/v1/Managers/bmc/Actions/Manager.Reset"
+    # }
+
+    redfish.Login
+    ${payload}=  Create Dictionary  ResetType=GracefulRestart
+    ${resp}=  redfish.Post  Managers/bmc/Actions/Manager.Reset  body=&{payload}
+    Should Be Equal As Strings  ${resp.status}  ${HTTP_OK}
+
+    # TODO: Add logic to ping and check BMC online state
+
+
+