Redfish DELETE and get session ID
Changes:
- Added "DELETE" keyword in client code.
- Add test to "GET" session Id.
- Added Teardown methods for clean up test suites.
- Fixes to accept "None" and user passed session and token.
Resolves openbmc/openbmc-test-automation#1429
Change-Id: Ibc3a8a58da11068bd1dc77d40bf1648ef1c96c37
Signed-off-by: George Keishing <gkeishin@in.ibm.com>
diff --git a/data/variables.py b/data/variables.py
index 58b0893..900b042 100644
--- a/data/variables.py
+++ b/data/variables.py
@@ -139,6 +139,7 @@
# Redfish variables.
REDFISH_BASE_URI = '/redfish/v1/'
REDFISH_SESSION = REDFISH_BASE_URI + 'SessionService/Sessions'
+REDFISH_SESSION_URI = 'SessionService/Sessions/'
'''
QEMU HTTPS variable:
diff --git a/lib/redfish_client.robot b/lib/redfish_client.robot
index 10bdb3d..8dcab88 100644
--- a/lib/redfish_client.robot
+++ b/lib/redfish_client.robot
@@ -40,32 +40,47 @@
... ${REDFISH_SESSION} data=${data} headers=${headers}
Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
+ ${content} = To JSON ${resp.content}
+
+ Log ${content["Id"]}
Log ${resp.headers["X-Auth-Token"]}
- [Return] ${resp.headers["X-Auth-Token"]}
+ [Return] ${content["Id"]} ${resp.headers["X-Auth-Token"]}
Redfish Get Request
[Documentation] Do REST GET request and return the result.
- [Arguments] ${uri_suffix} ${xauth_token}=None
- ... ${response_format}=json ${timeout}=30
+ [Arguments] ${uri_suffix}
+ ... ${session_id}=${None}
+ ... ${xauth_token}=${None}
+ ... ${response_format}="json"
+ ... ${timeout}=30
# Description of argument(s):
# uri_suffix The URI to establish connection with
# (e.g. 'Systems').
+ # session_id Session id.
# xauth_token Authentication token.
# response_format The format desired for data returned by this keyword
# (json/HTTPS response).
# timeout Timeout in seconds to establish connection with URI.
- ${xauth_token} = Run Keyword If ${xauth_token} == ${None}
- ... Redfish Login Request
-
${base_uri} = Catenate SEPARATOR= ${REDFISH_BASE_URI} ${uri_suffix}
+ # Create session, token list [vIP8IxCQlQ, Nq9l7fgP8FFeFg3QgCpr].
+ ${id_auth_list} = Create List ${session_id} ${xauth_token}
+
+ # Set session and auth token variable.
+ ${session_id} ${xauth_token} =
+ ... Run Keyword If "${xauth_token}" == "${None}"
+ ... Redfish Login Request
+ ... ELSE
+ ... Set Variable ${id_auth_list}
+
# Example: "X-Auth-Token: 3la1JUf1vY4yN2dNOwun"
${headers} = Create Dictionary Content-Type=application/json
... X-Auth-Token=${xauth_token}
+
${resp}= Get Request
... openbmc ${base_uri} headers=${headers} timeout=${timeout}
@@ -76,3 +91,28 @@
${content} = To JSON ${resp.content}
[Return] ${content}
+
+Redfish Delete Request
+ [Documentation] Delete the resource identified by the URI.
+ [Arguments] ${session_id}
+ ... ${xauth_token}
+ ... ${timeout}=10
+
+ # Description of argument(s):
+ # session_id Session id.
+ # xauth_token Authentication token.
+ # timeout Timeout in seconds to establish connection with URI.
+
+ ${base_uri} = Catenate SEPARATOR= ${REDFISH_SESSION}${/} ${session_id}
+
+ # Example: "X-Auth-Token: 3la1JUf1vY4yN2dNOwun"
+ ${headers} = Create Dictionary Content-Type=application/json
+ ... X-Auth-Token=${xauth_token}
+
+ # Delete server session.
+ ${resp}= Delete Request openbmc
+ ... ${base_uri} headers=${headers} timeout=${timeout}
+ Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
+
+ # Delete client sessions.
+ Delete All Sessions
diff --git a/redfish_test/test_redfish_interfaces.robot b/redfish_test/test_redfish_interfaces.robot
index 17324c7..b8ea79f 100644
--- a/redfish_test/test_redfish_interfaces.robot
+++ b/redfish_test/test_redfish_interfaces.robot
@@ -1,13 +1,28 @@
*** Settings ***
Documentation Test Redfish interfaces supported.
-Resource ../lib/redfish_client.robot
+Resource ../lib/redfish_client.robot
+
+Test Setup Test Setup Execution
+Test Teardown Test Teardown Execution
+
** Test Cases **
-Get Redfish Response Codes
+Test Get Redfish Session Id
+ [Documentation] Establish session to BMC and get session identifier.
+ [Tags] Test_Get_Redfish_Session_Id
+
+ ${session_url} =
+ ... Catenate SEPARATOR= ${REDFISH_SESSION_URI} ${test_session_id}
+ ${resp} = Redfish Get Request
+ ... ${session_url} xauth_token=${test_auth_token} response_format=${0}
+ Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
+
+
+Test Get Redfish Response Codes
[Documentation] Get Redfish response codes and validate them.
- [Tags] Get_Redfish_Response_Codes
+ [Tags] Test_Get_Redfish_Response_Codes
[Template] Execute Get And Check Response
# Expected status URL Path
@@ -17,6 +32,7 @@
${HTTP_OK} Managers/openbmc/EthernetInterfaces/eth0
${HTTP_NOT_FOUND} /i/dont/exist/
+
*** Keywords ***
Execute Get And Check Response
@@ -26,5 +42,20 @@
# expected_response_code Expected REST status codes.
# url_path URL path.
- ${resp} = Redfish Get Request ${url_path} response_format=${0}
+ ${resp} = Redfish Get Request
+ ... ${url_path} xauth_token=${test_auth_token} response_format=${0}
Should Be Equal As Strings ${resp.status_code} ${expected_response_code}
+
+
+Test Setup Execution
+ [Documentation] Do the test setup.
+
+ ${session_id} ${auth_token} = Redfish Login Request
+ Set Test Variable ${test_session_id} ${session_id}
+ Set Test Variable ${test_auth_token} ${auth_token}
+
+
+Test Teardown Execution
+ [Documentation] Do the test teardown.
+
+ Redfish Delete Request ${test_session_id} ${test_auth_token}