Support required for X-Auth-Token
Resolves #openbmc/openbmc-test-automation/1493
Change-Id: I3f0c93348d270e040ac747c43de884a154689313
Signed-off-by: Sridevi Ramesh <sridevra@in.ibm.com>
Signed-off-by: George Keishing <gkeishin@in.ibm.com>
diff --git a/lib/certificate_utils.robot b/lib/certificate_utils.robot
index 54fb9db..6da2fb3 100755
--- a/lib/certificate_utils.robot
+++ b/lib/certificate_utils.robot
@@ -24,6 +24,7 @@
Initialize OpenBMC quiet=${quiet}
${headers}= Create Dictionary Content-Type=application/octet-stream
+ ... X-Auth-Token=${XAUTH_TOKEN}
Set To Dictionary ${kwargs} headers ${headers}
Run Keyword If '${quiet}' == '${0}' Log Request method=Put
diff --git a/lib/rest_client.robot b/lib/rest_client.robot
index 3969ea7..59df8ec 100644
--- a/lib/rest_client.robot
+++ b/lib/rest_client.robot
@@ -7,12 +7,15 @@
Library disable_warning_urllib.py
Library utils.py
Library gen_misc.py
+Library var_funcs.py
Resource rest_response_code.robot
*** Variables ***
# Assign default value to QUIET for programs which may not define it.
${QUIET} ${0}
+${XAUTH_TOKEN} ${EMPTY}
+
*** Keywords ***
OpenBMC Get Request
[Documentation] Do REST GET request and return the result.
@@ -37,8 +40,12 @@
# set kwargs as follows:
# ${kwargs}= Create Dictionary allow_redirect=${True}.
- Initialize OpenBMC ${timeout} quiet=${quiet}
+ Initialize OpenBMC ${timeout} quiet=${quiet}
+
${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri}
+ ${headers}= Create Dictionary Content-Type=application/octet-stream
+ ... X-Auth-Token=${XAUTH_TOKEN} Accept=application/octet-stream
+ Set To Dictionary ${kwargs} headers ${headers}
Run Keyword If '${quiet}' == '${0}' Log Request method=Get
... base_uri=${base_uri} args=&{kwargs}
${ret}= Get Request openbmc ${base_uri} &{kwargs} timeout=${timeout}
@@ -63,7 +70,8 @@
Initialize OpenBMC ${timeout} quiet=${quiet}
${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri}
- ${headers}= Create Dictionary Content-Type=application/json
+ ${headers}= Create Dictionary Content-Type=application/json
+ ... X-Auth-Token=${XAUTH_TOKEN}
set to dictionary ${kwargs} headers ${headers}
Run Keyword If '${quiet}' == '${0}' Log Request method=Post
... base_uri=${base_uri} args=&{kwargs}
@@ -88,6 +96,7 @@
Initialize OpenBMC ${timeout}
${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri}
${headers}= Create Dictionary Content-Type=application/json
+ ... X-Auth-Token=${XAUTH_TOKEN}
set to dictionary ${kwargs} headers ${headers}
Log Request method=Put base_uri=${base_uri} args=&{kwargs}
${ret}= Put Request openbmc ${base_uri} &{kwargs} timeout=${timeout}
@@ -110,7 +119,10 @@
Initialize OpenBMC ${timeout}
${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri}
- Log Request method=Delete base_uri=${base_uri} args=&{kwargs}
+ ${headers}= Create Dictionary Content-Type=application/json
+ ... X-Auth-Token=${XAUTH_TOKEN}
+ Set To Dictionary ${kwargs} headers ${headers}
+ Log Request method=Delete base_uri=${base_uri} args=&{kwargs}
${ret}= Delete Request openbmc ${base_uri} &{kwargs} timeout=${timeout}
Log Response ${ret}
Delete All Sessions
@@ -119,32 +131,71 @@
Initialize OpenBMC
[Documentation] Do a REST login connection within specified time.
[Arguments] ${timeout}=20 ${quiet}=${1}
- ... ${REST_USERNAME}=${REST_USERNAME}
- ... ${REST_PASSWORD}=${REST_PASSWORD}
+ ... ${rest_username}=${REST_USERNAME}
+ ... ${rest_password}=${REST_PASSWORD}
# Description of argument(s):
- # timeout REST login attempt time out.
- # quiet Suppress console log if set.
+ # timeout REST login attempt time out.
+ # quiet Suppress console log if set.
+ # rest_username The REST username.
+ # rest_password The REST password.
+
+ ${bmcweb_status}= Run Keyword And Return Status BMC Web Login Request
+ ... ${timeout} ${rest_username} ${rest_password}
+
+ Return From Keyword If ${bmcweb_status} == ${True}
# TODO : Task to revert this changes openbmc/openbmc-test-automation#532
# This will retry at 20 second interval.
Wait Until Keyword Succeeds 40 sec 20 sec
... Post Login Request ${timeout} ${quiet}
- ... ${REST_USERNAME} ${REST_PASSWORD}
+ ... ${rest_username} ${rest_password}
+
+
+BMC Web Login Request
+ [Documentation] Do BMC web-based login.
+ [Arguments] ${timeout}=20 ${rest_username}=${REST_USERNAME}
+ ... ${rest_password}=${REST_PASSWORD}
+
+ # Description of argument(s):
+ # timeout REST login attempt time out.
+ # rest_username The REST username.
+ # rest_password The REST password.
+
+ Create Session openbmc ${AUTH_URI} timeout=${timeout}
+
+ ${headers}= Create Dictionary Content-Type=application/json
+ @{credentials}= Create List ${rest_username} ${rest_password}
+ ${data}= Create Dictionary data=@{credentials}
+ ${resp}= Post Request openbmc /login data=${data} headers=${headers}
+ Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
+
+ ${processed_token_data}=
+ ... Evaluate re.split(r'[;,]', '${resp.headers["Set-Cookie"]}') modules=re
+ ${result}= Key Value List To Dict ${processed_token_data} delim==
+
+ # Example result data:
+ # 'XSRF-TOKEN=hQuOyDJFEIbrN4aOg2CT; Secure,
+ # SESSION=c4wloTiETumSxPI9nLeg; Secure; HttpOnly'
+ Set Global Variable ${XAUTH_TOKEN} ${result['session']}
+
Post Login Request
[Documentation] Do REST login request.
[Arguments] ${timeout}=20 ${quiet}=${1}
- ... ${REST_USERNAME}=${REST_USERNAME}
- ... ${REST_PASSWORD}=${REST_PASSWORD}
+ ... ${rest_username}=${REST_USERNAME}
+ ... ${rest_password}=${REST_PASSWORD}
# Description of argument(s):
- # timeout REST login attempt time out.
- # quiet Suppress console log if set.
+ # timeout REST login attempt time out.
+ # quiet Suppress console log if set.
+ # rest_username The REST username.
+ # rest_password The REST password.
Create Session openbmc ${AUTH_URI} timeout=${timeout} max_retries=3
+
${headers}= Create Dictionary Content-Type=application/json
- @{credentials}= Create List ${REST_USERNAME} ${REST_PASSWORD}
+ @{credentials}= Create List ${rest_username} ${rest_password}
${data}= create dictionary data=@{credentials}
${status} ${resp}= Run Keyword And Ignore Error Post Request openbmc
... /login data=${data} headers=${headers}
@@ -152,10 +203,12 @@
Should Be Equal ${status} PASS msg=${resp}
Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}
+
Log Out OpenBMC
[Documentation] Log out of the openbmc REST session.
${headers}= Create Dictionary Content-Type=application/json
+ ... X-Auth-Token=${XAUTH_TOKEN}
${data}= Create dictionary data=@{EMPTY}
# If there is no active sesion it will throw the following exception
@@ -300,7 +353,7 @@
Initialize OpenBMC ${timeout} quiet=${quiet}
${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri}
${headers}= Create Dictionary Content-Type=application/octet-stream
- ... Accept=application/octet-stream
+ ... X-Auth-Token=${XAUTH_TOKEN} Accept=application/octet-stream
Set To Dictionary ${kwargs} headers ${headers}
Run Keyword If '${quiet}' == '${0}' Log Request method=Post
... base_uri=${base_uri} args=&{kwargs}
diff --git a/lib/utils.robot b/lib/utils.robot
index 86101b5..ad413fa 100755
--- a/lib/utils.robot
+++ b/lib/utils.robot
@@ -98,7 +98,8 @@
Run Keyword If '${status}' == 'PASS'
... Write Attribute ${HOST_WATCHDOG_URI} ExpireAction data=${data}
- ${data}= Create Dictionary data=${milliseconds}
+ ${int_milliseconds}= Convert To Integer ${milliseconds}
+ ${data}= Create Dictionary data=${int_milliseconds}
Write Attribute ${HOST_WATCHDOG_URI} Interval data=${data}
${data}= Create Dictionary data=${True}
@@ -567,7 +568,7 @@
@{password}= Create List ${openbmc_password}
${data}= Create Dictionary data=@{password}
- ${headers}= Create Dictionary Content-Type=application/json
+ ${headers}= Create Dictionary Content-Type=application/json X-Auth-Token=${XAUTH_TOKEN}
${resp}= Post Request openbmc ${BMC_USER_URI}root/action/SetPassword
... data=${data} headers=${headers}
Should Be Equal As Strings ${resp.status_code} ${HTTP_OK}