1*** Settings ***
2Documentation    Verify that firmware update properties.
3
4Resource         ../../lib/resource.robot
5Resource         ../../lib/bmc_redfish_resource.robot
6Resource         ../../lib/openbmc_ffdc.robot
7Library          ../../lib/gen_robot_valid.py
8
9Suite Setup      Redfish.Login
10Suite Teardown   Redfish.Logout
11Test Setup       Printn
12Test Teardown    FFDC On Test Case Fail
13
14Test Tags    Firmware_Property
15
16*** Test Cases ***
17
18Verify Firmware Update ApplyTime Immediate
19    [Documentation]  Verify supported apply time "Immediate" property.
20    [Tags]  Verify_Firmware_Update_ApplyTime_Immediate
21
22    # Example:
23    # /redfish/v1/UpdateService
24    # "HttpPushUriOptions": {
25    #    "HttpPushUriApplyTime": {
26    #        "ApplyTime": "Immediate"
27    #    }
28    # }
29
30    Redfish.Patch  ${REDFISH_BASE_URI}UpdateService
31    ...  body={'HttpPushUriOptions' : {'HttpPushUriApplyTime' : {'ApplyTime' : 'Immediate'}}}
32
33    ${http_push_uri_options}=  Redfish.Get Attribute  ${REDFISH_BASE_URI}UpdateService  HttpPushUriOptions
34    Rprint Vars  http_push_uri_options
35    Valid Value  http_push_uri_options["HttpPushUriApplyTime"]["ApplyTime"]  ['Immediate']
36
37
38Verify Firmware Update ApplyTime OnReset
39    [Documentation]  Verify supported apply time "OnReset" property.
40    [Tags]  Verify_Firmware_Update_ApplyTime_OnReset
41
42    # Example:
43    # /redfish/v1/UpdateService
44    # "HttpPushUriOptions": {
45    #    "HttpPushUriApplyTime": {
46    #        "ApplyTime": "OnReset"
47    #    }
48    # }
49
50    Redfish.Patch  ${REDFISH_BASE_URI}UpdateService
51    ...  body={'HttpPushUriOptions' : {'HttpPushUriApplyTime' : {'ApplyTime' : 'OnReset'}}}
52
53    ${http_push_uri_options}=  Redfish.Get Attribute  ${REDFISH_BASE_URI}UpdateService  HttpPushUriOptions
54    Rprint Vars  http_push_uri_options
55    Valid Value  http_push_uri_options["HttpPushUriApplyTime"]["ApplyTime"]  ['OnReset']
56
57
58Verify Firmware Update ApplyTime Invalid
59    [Documentation]  Verify supported apply time returns error on invalid value.
60    [Tags]  Verify_Firmware_Update_ApplyTime_Invalid
61
62    Redfish.Patch  ${REDFISH_BASE_URI}UpdateService
63    ...  body={'HttpPushUriOptions' : {'HttpPushUriApplyTime' : {'ApplyTime' : 'Invalid'}}}
64    ...  valid_status_codes=[${HTTP_BAD_REQUEST}]
65