*** Settings ***
Documentation     This suite will verifiy all OpenBMC rest interfaces
...               Details of valid interfaces can be found here...
...               https://github.com/openbmc/docs/blob/master/rest-api.md

Resource          ../lib/rest_client.robot
Resource          ../lib/openbmc_ffdc.robot
Test Teardown     FFDC On Test Case Fail


*** Variables ***


*** Test Cases ***
Good connection for testing
    [Tags]  CI  Good_connection_for_testing
    ${content}=    Read Properties     /
    ${c}=          get from List       ${content}      0
    Should Be Equal    ${c}     /org

Get an object with no properties
    ${content}=    Read Properties     /org/openbmc/inventory
    Should Be Empty     ${content}

Get a Property
    [Tags]  Get_a_Property
    ${resp}=   Read Attribute      /org/openbmc/inventory/system/chassis/motherboard/cpu0      is_fru
    Should Be Equal    ${resp}     ${1}

Get a null Property
    ${resp}=    OpenBMC Get Request    /org/openbmc/inventory/attr/is_fru
    Should Be Equal As Strings    ${resp.status_code}    ${HTTP_NOT_FOUND}
    ${jsondata}=    To Json    ${resp.content}
    Should Be Equal     ${jsondata['data']['description']}      The specified property cannot be found: ''is_fru''

get directory listing /
    [Tags]  CI  get_directory_listing
    ${resp}=   openbmc get request     /
    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
    ${json}=   to json     ${resp.content}
    list should contain value           ${json['data']}         /org
    should be equal as strings          ${json['status']}       ok

get directory listing /org/
    [Tags]  CI
    ${resp}=   openbmc get request     /org/
    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
    ${json}=   to json         ${resp.content}
    list should contain value           ${json['data']}     /org/openbmc
    should be equal as strings          ${json['status']}       ok

get invalid directory listing /i/dont/exist/
    [Tags]  CI
    ${resp}=   openbmc get request     /i/dont/exist/
    should be equal as strings      ${resp.status_code}     ${HTTP_NOT_FOUND}
    ${json}=   to json         ${resp.content}
    should be equal as strings          ${json['status']}   error

put directory listing /
    [Tags]  CI
    ${resp}=   openbmc put request     /
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings          ${json['status']}   error

put directory listing /org/
    [Tags]  CI
    ${resp}=   openbmc put request     /org/
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings          ${json['status']}   error

put invalid directory listing /i/dont/exist/
    [Tags]  CI
    ${resp}=   openbmc put request     /i/dont/exist/
    should be equal as strings      ${resp.status_code}     ${HTTP_NOT_FOUND}
    ${json}=   to json         ${resp.content}
    should be equal as strings          ${json['status']}   error

post directory listing /
    [Tags]  CI
    ${resp}=   openbmc post request    /
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings          ${json['status']}   error

post directory listing /org/
    [Tags]  CI
    ${resp}=   openbmc post request    /org/
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings          ${json['status']}   error

post invalid directory listing /i/dont/exist/
    [Tags]  CI
    ${resp}=   openbmc post request    /i/dont/exist/
    should be equal as strings      ${resp.status_code}     ${HTTP_NOT_FOUND}
    ${json}=   to json         ${resp.content}
    should be equal as strings          ${json['status']}   error

delete directory listing /
    [Tags]  CI
    ${resp}=   openbmc delete request  /
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings          ${json['status']}   error

delete directory listing /org/
    [Tags]  CI
    ${resp}=   openbmc delete request  /
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings          ${json['status']}   error

delete invalid directory listing /org/nothere/
    [Tags]  CI
    ${resp}=   openbmc delete request  /org/nothere/
    should be equal as strings      ${resp.status_code}     ${HTTP_NOT_FOUND}
    ${json}=   to json         ${resp.content}
    should be equal as strings          ${json['status']}   error

get list names /
    ${resp}=   openbmc get request     /list
    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
    ${json}=   to json         ${resp.content}
    list should contain value       ${json['data']}         /org/openbmc/inventory
    should be equal as strings      ${json['status']}       ok

get list names /org/
    ${resp}=   openbmc get request     /org/list
    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
    ${json}=   to json         ${resp.content}
    list should contain value       ${json['data']}         /org/openbmc/inventory
    should be equal as strings      ${json['status']}       ok

get invalid list names /i/dont/exist/
    [Tags]  CI
    ${resp}=   openbmc get request     /i/dont/exist/list
    should be equal as strings      ${resp.status_code}     ${HTTP_NOT_FOUND}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

put list names /
    [Tags]  CI
    ${resp}=   openbmc put request     /list
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

put list names /org/
    [Tags]  CI
    ${resp}=   openbmc put request     /org/list
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

put invalid list names /i/dont/exist/
    [Tags]  CI
    ${resp}=   openbmc put request     /i/dont/exist/list
    should be equal as strings      ${resp.status_code}     ${HTTP_NOT_FOUND}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

post list names /
    [Tags]  CI
    ${resp}=   openbmc post request    /list
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

post list names /org/
    [Tags]  CI
    ${resp}=   openbmc post request    /org/list
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

post invalid list names /i/dont/exist/
    [Tags]  CI
    ${resp}=   openbmc post request    /i/dont/exist/list
    should be equal as strings      ${resp.status_code}     ${HTTP_NOT_FOUND}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

delete list names /
    [Tags]  CI
    ${resp}=   openbmc delete request  /list
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

delete list names /org/
    [Tags]  CI
    ${resp}=   openbmc delete request  /list
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

delete invalid list names /org/nothere/
    [Tags]  CI
    ${resp}=   openbmc delete request  /org/nothere/list
    should be equal as strings      ${resp.status_code}     ${HTTP_NOT_FOUND}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

get names /
    [Tags]  get_names
    ${resp}=   openbmc get request     /enumerate
    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
    ${json}=   to json         ${resp.content}
    list should contain value       ${json['data']}         /org/openbmc/inventory
    should be equal as strings      ${json['status']}       ok

get names /org/
    [Tags]  get_names_org
    ${resp}=   openbmc get request     /org/enumerate
    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
    ${json}=   to json         ${resp.content}
    list should contain value       ${json['data']}         /org/openbmc/inventory
    should be equal as strings      ${json['status']}       ok

get invalid names /i/dont/exist/
    [Tags]  CI
    ${resp}=   openbmc get request     /i/dont/exist/enumerate
    should be equal as strings      ${resp.status_code}     ${HTTP_NOT_FOUND}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

put names /
    [Tags]  CI
    ${resp}=   openbmc put request     /enumerate
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

put names /org/
    [Tags]  CI
    ${resp}=   openbmc put request     /org/enumerate
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

put invalid names /i/dont/exist/
    [Tags]  CI
    ${resp}=   openbmc put request     /i/dont/exist/enumerate
    should be equal as strings      ${resp.status_code}     ${HTTP_NOT_FOUND}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

post names /
    [Tags]  CI
    ${resp}=   openbmc post request    /enumerate
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

post names /org/
    [Tags]  CI
    ${resp}=   openbmc post request    /org/enumerate
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

post invalid names /i/dont/exist/
    [Tags]  CI
    ${resp}=   openbmc post request    /i/dont/exist/enumerate
    should be equal as strings      ${resp.status_code}     ${HTTP_NOT_FOUND}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

delete names /
    [Tags]  CI
    ${resp}=   openbmc delete request  /enumerate
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

delete names /org/
    [Tags]  CI
    ${resp}=   openbmc delete request  /enumerate
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

delete invalid names /org/nothere/
    [Tags]  CI
    ${resp}=   openbmc delete request  /org/nothere/enumerate
    should be equal as strings      ${resp.status_code}     ${HTTP_NOT_FOUND}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

get method org/openbmc/records/events/action/acceptTestMessage
    [Tags]  CI
    ${resp}=   openbmc get request     org/openbmc/records/events/action/acceptTestMessage
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

get invalid method /i/dont/exist/
    [Tags]  CI
    ${resp}=   openbmc get request     /i/dont/exist/action/foo
    should be equal as strings      ${resp.status_code}     ${HTTP_NOT_FOUND}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

put method org/openbmc/records/events/action/acceptTestMessage
    [Tags]  CI
    ${resp}=   openbmc put request     org/openbmc/records/events/action/acceptTestMessage
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

put invalid method /i/dont/exist/
    [Tags]  CI
    ${resp}=   openbmc put request     /i/dont/exist/action/foo
    should be equal as strings      ${resp.status_code}     ${HTTP_NOT_FOUND}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

post method power/getPowerState no args
    ${fan_uri}=     Get Power Control Interface
    ${data}=   create dictionary   data=@{EMPTY}
    ${resp}=   openbmc post request    ${fan_uri}/action/getPowerState      data=${data}
    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       ok

post method org/openbmc/records/events/action/acceptTestMessage invalid args
    [Tags]  CI
    ${data}=   create dictionary   foo=bar
    ${resp}=   openbmc post request    org/openbmc/records/events/action/acceptTestMessage      data=${data}
    should be equal as strings      ${resp.status_code}     ${HTTP_BAD_REQUEST}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

post method org/openbmc/sensors/host/BootCount with args
    ${uri}=     Set Variable   /org/openbmc/sensors/host/BootCount
    ${COUNT}=   Set Variable    ${3}
    @{count_list}=   Create List     ${COUNT}
    ${data}=   create dictionary   data=@{count_list}
    ${resp}=   openbmc post request    ${uri}/action/setValue      data=${data}
    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       ok
    ${content}=     Read Attribute      ${uri}   value
    Should Be Equal     ${content}      ${COUNT}

delete method org/openbmc/records/events/action/acceptTestMessage
    [Tags]  CI
    ${resp}=   openbmc delete request  org/openbmc/records/events/action/acceptTestMessage
    should be equal as strings      ${resp.status_code}     ${HTTP_METHOD_NOT_ALLOWED}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

delete invalid method /org/nothere/
    [Tags]  CI
    ${resp}=   openbmc delete request  /org/nothere/action/foomethod
    should be equal as strings      ${resp.status_code}     ${HTTP_NOT_FOUND}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       error

post method org/openbmc/records/events/action/acceptTestMessage no args
    [Tags]  CI
    ${data}=   create dictionary   data=@{EMPTY}
    ${resp}=   openbmc post request    org/openbmc/records/events/action/acceptTestMessage      data=${data}
    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
    ${json}=   to json         ${resp.content}
    should be equal as strings      ${json['status']}       ok

***keywords***
Get Power Control Interface
    ${resp}=    OpenBMC Get Request     /org/openbmc/control/
    should be equal as strings      ${resp.status_code}     ${HTTP_OK}     msg=Unable to get any controls - /org/openbmc/control/
    ${jsondata}=   To Json    ${resp.content}
    log     ${jsondata}
    : FOR    ${ELEMENT}    IN    @{jsondata["data"]}
    \   log     ${ELEMENT}
    \   ${found}=   Get Lines Matching Pattern      ${ELEMENT}      *control/power*
    \   Return From Keyword If     '${found}' != ''     ${found}
