| Sushil Singh | 45d841e | 2020-07-30 11:52:11 -0500 | [diff] [blame] | 1 | *** Settings *** | 
|  | 2 |  | 
|  | 3 | Documentation     Test client identifier feature on BMC. | 
|  | 4 |  | 
|  | 5 | Resource          ../../lib/rest_client.robot | 
|  | 6 | Resource          ../../lib/openbmc_ffdc.robot | 
|  | 7 | Resource          ../../lib/resource.robot | 
|  | 8 | Resource          ../../lib/bmc_redfish_utils.robot | 
| Sushil Singh | ca49ced | 2020-11-05 03:15:19 -0600 | [diff] [blame] | 9 | Resource          ../../lib/external_intf/management_console_utils.robot | 
| Sushil Singh | f90fd65 | 2021-02-05 05:07:40 -0600 | [diff] [blame] | 10 | Resource          ../../lib/utils.robot | 
| Sushil Singh | 45d841e | 2020-07-30 11:52:11 -0500 | [diff] [blame] | 11 | Library           ../../lib/bmc_network_utils.py | 
|  | 12 | Library           ../../lib/gen_robot_valid.py | 
|  | 13 |  | 
| Sushil Singh | f90fd65 | 2021-02-05 05:07:40 -0600 | [diff] [blame] | 14 |  | 
| Sushil Singh | 45d841e | 2020-07-30 11:52:11 -0500 | [diff] [blame] | 15 | Suite Setup       Redfish.Login | 
| Sushil Singh | 889a75e | 2020-08-19 08:50:15 -0500 | [diff] [blame] | 16 | Suite Teardown    Run Keyword And Ignore Error  Delete All Redfish Sessions | 
| Sushil Singh | 45d841e | 2020-07-30 11:52:11 -0500 | [diff] [blame] | 17 | Test Setup        Printn | 
|  | 18 | Test Teardown     FFDC On Test Case Fail | 
|  | 19 |  | 
|  | 20 |  | 
|  | 21 | *** Test Cases *** | 
|  | 22 |  | 
|  | 23 | Create A Session With ClientID And Verify | 
| Sushil Singh | 889a75e | 2020-08-19 08:50:15 -0500 | [diff] [blame] | 24 | [Documentation]  Create a session with client id and verify client id is same. | 
|  | 25 | [Tags]  Create_A_Session_With_ClientID_And_Verify | 
|  | 26 | [Template]  Create And Verify Session ClientID | 
| Sushil Singh | 45d841e | 2020-07-30 11:52:11 -0500 | [diff] [blame] | 27 |  | 
| Sushil Singh | 889a75e | 2020-08-19 08:50:15 -0500 | [diff] [blame] | 28 | # client_id           reboot_flag | 
|  | 29 | 12345                 False | 
|  | 30 | 123456                False | 
|  | 31 | EXTERNAL-CLIENT-01    False | 
|  | 32 | EXTERNAL-CLIENT-02    False | 
| Sushil Singh | 1384321 | 2020-08-18 04:00:51 -0500 | [diff] [blame] | 33 |  | 
|  | 34 |  | 
|  | 35 | Check ClientID Persistency On BMC Reboot | 
| Sushil Singh | 889a75e | 2020-08-19 08:50:15 -0500 | [diff] [blame] | 36 | [Documentation]  Create a session with client id and verify client id is same after the reboot. | 
|  | 37 | [Tags]  Check_ClientID_Persistency_On_BMC_Reboot | 
|  | 38 | [Template]  Create And Verify Session ClientID | 
| Sushil Singh | 1384321 | 2020-08-18 04:00:51 -0500 | [diff] [blame] | 39 |  | 
| Sushil Singh | 889a75e | 2020-08-19 08:50:15 -0500 | [diff] [blame] | 40 | # client_id           reboot_flag | 
|  | 41 | 12345                 True | 
|  | 42 | EXTERNAL-CLIENT-01    True | 
|  | 43 |  | 
|  | 44 |  | 
|  | 45 | Create A Multiple Session With ClientID And Verify | 
|  | 46 | [Documentation]  Create a multiple session with client id and verify client id is same. | 
|  | 47 | [Tags]  Create_A_Multiple_Session_With_ClientID_And_Verify | 
|  | 48 | [Template]  Create And Verify Session ClientID | 
|  | 49 |  | 
|  | 50 | # client_id                              reboot_flag | 
|  | 51 | 12345,123456                             False | 
|  | 52 | EXTERNAL-CLIENT-01,EXTERNAL-CLIENT-02    False | 
|  | 53 |  | 
|  | 54 |  | 
|  | 55 | Check Multiple ClientID Persistency On BMC Reboot | 
|  | 56 | [Documentation]  Create a multiple session with client id and verify client id is same after the reboot. | 
|  | 57 | [Tags]  Check_Multiple_ClientID_Persistency_On_BMC_Reboot | 
|  | 58 | [Template]  Create And Verify Session ClientID | 
|  | 59 |  | 
|  | 60 | # client_id                              reboot_flag | 
|  | 61 | 12345,123456                             True | 
|  | 62 | EXTERNAL-CLIENT-01,EXTERNAL-CLIENT-02    True | 
|  | 63 |  | 
| Sushil Singh | 45d841e | 2020-07-30 11:52:11 -0500 | [diff] [blame] | 64 |  | 
| Sushil Singh | c957f57 | 2020-08-20 05:47:02 -0500 | [diff] [blame] | 65 | Fail To Set Client Origin IP | 
|  | 66 | [Documentation]  Fail to set the client origin IP. | 
|  | 67 | [Tags]  Fail_To_Set_Client_Origin_IP | 
|  | 68 | [Template]  Create Session And Fail To Set Client Origin IP | 
|  | 69 |  | 
|  | 70 | # client_id | 
|  | 71 | 12345 | 
|  | 72 | EXTERNAL-CLIENT-01 | 
|  | 73 |  | 
| Sushil Singh | 4ec68ba | 2020-09-11 09:16:43 -0500 | [diff] [blame] | 74 |  | 
|  | 75 | Create Session For Non Admin User | 
|  | 76 | [Documentation]  Create Session for non-admin user. | 
|  | 77 | [Tags]  Create_Session_For_Non_Admin_User | 
|  | 78 | [Template]  Non Admin User To Create Session | 
|  | 79 |  | 
|  | 80 | # client_id    username         password      role_id | 
|  | 81 | 12345          operator_user    TestPwd123    Operator | 
|  | 82 |  | 
|  | 83 |  | 
| Sushil Singh | 45d841e | 2020-07-30 11:52:11 -0500 | [diff] [blame] | 84 | *** Keywords *** | 
|  | 85 |  | 
| Sushil Singh | 1384321 | 2020-08-18 04:00:51 -0500 | [diff] [blame] | 86 | Create And Verify Session ClientID | 
|  | 87 | [Documentation]  Create redifish session with client id and verify it remain same. | 
|  | 88 | [Arguments]  ${client_id}  ${reboot_flag}=False | 
|  | 89 |  | 
|  | 90 | # Description of argument(s): | 
|  | 91 | # client_id    This client id contain string value | 
|  | 92 | #              (e.g. 12345, "EXTERNAL-CLIENT"). | 
|  | 93 | # reboot_flag  Flag is used to run reboot the BMC code. | 
|  | 94 | #               (e.g. True or False). | 
|  | 95 |  | 
| Sushil Singh | 889a75e | 2020-08-19 08:50:15 -0500 | [diff] [blame] | 96 | ${client_ids}=  Split String  ${client_id}  , | 
| Sushil Singh | 87e984c | 2020-10-20 01:43:47 -0500 | [diff] [blame] | 97 | ${session_info}=  Create Session With List Of ClientID  ${client_ids} | 
| Sushil Singh | 889a75e | 2020-08-19 08:50:15 -0500 | [diff] [blame] | 98 | Verify A Session Created With ClientID  ${client_ids}  ${session_info} | 
| Sushil Singh | f90fd65 | 2021-02-05 05:07:40 -0600 | [diff] [blame] | 99 |  | 
|  | 100 | ${before_reboot_xauth_token}=  Set Variable  ${XAUTH_TOKEN} | 
|  | 101 |  | 
| Sushil Singh | 1384321 | 2020-08-18 04:00:51 -0500 | [diff] [blame] | 102 | Run Keyword If  '${reboot_flag}' == 'True' | 
| Sushil Singh | f90fd65 | 2021-02-05 05:07:40 -0600 | [diff] [blame] | 103 | ...  Run Keywords  Redfish BMC Reset Operation  AND | 
|  | 104 | ...  Set Global Variable  ${XAUTH_TOKEN}  ${before_reboot_xauth_token}  AND | 
|  | 105 | ...  Is BMC Standby  AND | 
| Sushil Singh | 889a75e | 2020-08-19 08:50:15 -0500 | [diff] [blame] | 106 | ...  Verify A Session Created With ClientID  ${client_ids}  ${session_info} | 
| Sushil Singh | f90fd65 | 2021-02-05 05:07:40 -0600 | [diff] [blame] | 107 |  | 
| Sushil Singh | 87e984c | 2020-10-20 01:43:47 -0500 | [diff] [blame] | 108 | Redfish Delete List Of Session  ${session_info} | 
| Sushil Singh | c957f57 | 2020-08-20 05:47:02 -0500 | [diff] [blame] | 109 |  | 
|  | 110 |  | 
|  | 111 | Set Client Origin IP | 
|  | 112 | [Documentation]  Set client origin IP. | 
|  | 113 | [Arguments]  ${client_id}  ${client_ip}  ${status} | 
|  | 114 |  | 
|  | 115 | # Description of argument(s): | 
|  | 116 | # client_id    This client id contain string value | 
|  | 117 | #              (e.g. 12345, "EXTERNAL-CLIENT"). | 
|  | 118 | # client_ip    Valid IP address | 
|  | 119 | # status       HTTP status code | 
|  | 120 |  | 
|  | 121 | ${session}=  Run Keyword And Return Status | 
|  | 122 | ...  Redfish Login | 
|  | 123 | ...  kwargs= "Oem":{"OpenBMC": {"ClientID":"${client_id}", "ClientOriginIP":"${client_ip}"}} | 
|  | 124 | Valid Value  session  [${status}] | 
|  | 125 |  | 
|  | 126 |  | 
|  | 127 | Create Session And Fail To Set Client Origin IP | 
|  | 128 | [Documentation]  Create redifish session with client id and fail to set client origin IP. | 
|  | 129 | [Arguments]  ${client_id} | 
|  | 130 |  | 
|  | 131 | # Description of argument(s): | 
|  | 132 | # client_id    This client id contain string value | 
|  | 133 | #              (e.g. 12345, "EXTERNAL-CLIENT"). | 
|  | 134 |  | 
|  | 135 | Set Test Variable  ${client_ip}  10.6.7.8 | 
|  | 136 | ${resp}=  Set Client Origin IP  ${client_id}  ${client_ip}  status=False | 
| Sushil Singh | 4ec68ba | 2020-09-11 09:16:43 -0500 | [diff] [blame] | 137 |  | 
|  | 138 |  | 
|  | 139 | Create A Non Admin Session With ClientID | 
|  | 140 | [Documentation]  Create redifish session with client id. | 
|  | 141 | [Arguments]  ${client_id}  ${username}  ${password} | 
|  | 142 |  | 
|  | 143 | # Description of argument(s): | 
|  | 144 | # client_id    This client id can contain string value | 
|  | 145 | #              (e.g. 12345, "EXTERNAL-CLIENT"). | 
|  | 146 |  | 
|  | 147 | @{session_list}=  Create List | 
|  | 148 | &{tmp_dict}=  Create Dictionary | 
|  | 149 |  | 
|  | 150 | FOR  ${client}  IN  @{client_id} | 
| George Keishing | b78bca2 | 2021-06-29 11:11:19 -0500 | [diff] [blame] | 151 | ${resp}=  Redfish Login  rest_username=${username}  rest_password=${password} | 
|  | 152 | ...  kwargs= "Oem":{"OpenBMC" : {"ClientID":"${client}"}} | 
| Sushil Singh | 4ec68ba | 2020-09-11 09:16:43 -0500 | [diff] [blame] | 153 | Append To List  ${session_list}  ${resp} | 
|  | 154 | END | 
|  | 155 |  | 
|  | 156 | [Return]  ${session_list} | 
|  | 157 |  | 
|  | 158 |  | 
|  | 159 | Verify A Non Admin Session Created With ClientID | 
|  | 160 | [Documentation]  Verify session created with client id. | 
|  | 161 | [Arguments]  ${client_ids}  ${session_ids} | 
|  | 162 |  | 
|  | 163 | # Description of argument(s): | 
| Sushil Singh | 87e984c | 2020-10-20 01:43:47 -0500 | [diff] [blame] | 164 | # client_ids    External client name. | 
|  | 165 | # session_ids   This value is a session id. | 
| Sushil Singh | 4ec68ba | 2020-09-11 09:16:43 -0500 | [diff] [blame] | 166 |  | 
|  | 167 | # { | 
|  | 168 | #   "@odata.id": "/redfish/v1/SessionService/Sessions/H8q2ZKucSJ", | 
|  | 169 | #   "@odata.type": "#Session.v1_0_2.Session", | 
|  | 170 | #   "Description": "Manager User Session", | 
|  | 171 | #   "Id": "H8q2ZKucSJ", | 
|  | 172 | #   "Name": "User Session", | 
|  | 173 | #   "Oem": { | 
|  | 174 | #   "OpenBMC": { | 
|  | 175 | #  "@odata.type": "#OemSession.v1_0_0.Session", | 
|  | 176 | #  "ClientID": "", | 
|  | 177 | #  "ClientOriginIP": "::ffff:x.x.x.x" | 
|  | 178 | #       } | 
|  | 179 | #     }, | 
|  | 180 | #   "UserName": "root" | 
|  | 181 | # } | 
|  | 182 |  | 
| Sushil Singh | 87e984c | 2020-10-20 01:43:47 -0500 | [diff] [blame] | 183 | FOR  ${client}  ${session}  IN ZIP  ${client_ids}  ${session_ids} | 
|  | 184 | ${resp}=  Redfish Get Request  /redfish/v1/SessionService/Sessions/${session["Id"]} | 
| Sushil Singh | 4ec68ba | 2020-09-11 09:16:43 -0500 | [diff] [blame] | 185 | ${sessions}=     To Json    ${resp.content} | 
| Sushil Singh | 4ec68ba | 2020-09-11 09:16:43 -0500 | [diff] [blame] | 186 | Rprint Vars  sessions | 
| Sushil Singh | 24e32af | 2020-10-05 08:09:00 -0500 | [diff] [blame] | 187 | @{words} =  Split String  ${sessions["ClientOriginIPAddress"]}  : | 
| Sushil Singh | 4ec68ba | 2020-09-11 09:16:43 -0500 | [diff] [blame] | 188 | ${ip_address}=  Get Running System IP | 
|  | 189 | Set Test Variable  ${temp_ipaddr}  ${words}[-1] | 
|  | 190 | Valid Value  client  ['${sessions["Oem"]["OpenBMC"]["ClientID"]}'] | 
| Sushil Singh | 87e984c | 2020-10-20 01:43:47 -0500 | [diff] [blame] | 191 | Valid Value  session["Id"]  ['${sessions["Id"]}'] | 
| Sushil Singh | 4ec68ba | 2020-09-11 09:16:43 -0500 | [diff] [blame] | 192 | Valid Value  temp_ipaddr  ${ip_address} | 
|  | 193 | END | 
|  | 194 |  | 
|  | 195 |  | 
|  | 196 | Non Admin User To Create Session | 
|  | 197 | [Documentation]  Non Admin user create a session and verify the session is created. | 
|  | 198 | [Arguments]  ${client_id}  ${username}  ${password}  ${role}  ${enabled}=${True} | 
|  | 199 |  | 
|  | 200 | # Description of argument(s): | 
|  | 201 | # client_id    This client id contain string value | 
|  | 202 | #              (e.g. 12345, "EXTERNAL-CLIENT"). | 
|  | 203 | # username     Username. | 
|  | 204 | # password     Password. | 
|  | 205 | # role         Role of user. | 
|  | 206 | # enabled      Value can be True or False. | 
|  | 207 |  | 
|  | 208 | Redfish.Login | 
|  | 209 | Redfish Create User  ${username}  ${password}  ${role}  ${enabled} | 
|  | 210 | Delete All Sessions | 
|  | 211 | Redfish.Logout | 
|  | 212 | Initialize OpenBMC  rest_username=${username}  rest_password=${password} | 
|  | 213 | ${client_ids}=  Split String  ${client_id}  , | 
|  | 214 | ${session_info}=  Create A Non Admin Session With ClientID  ${client_ids}  ${username}  ${password} | 
|  | 215 | Verify A Non Admin Session Created With ClientID  ${client_ids}  ${session_info} |