<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.5 (Python 3.11.10 on linux)" generated="2026-10-03T23:44:26.037930" rpa="false" schemaversion="5">
<suite id="s1" name="aaa-authn.txt" source="/w/workspace/aaa-csit-1node-authn-all-vanadium/test/csit/suites/aaa/authn/Restconf_Basic_Auth.robot">
<test id="s1-t1" name="No RESTCONF Credentials" line="38">
<kw name="Auth Should Fail">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-03T23:44:26.173413" level="INFO">@{auth} = [  |  ]</msg>
<var>@{auth}</var>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-03T23:44:26.172995" elapsed="0.000458"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-03T23:44:26.174047" level="INFO">Creating Session using : alias=httpbin, url=http://10.30.171.85:8181, headers={'Content-Type': 'application/json'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b59a72d9d0&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>httpbin</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${auth}</arg>
<arg>headers=${HEADERS}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-03T23:44:26.173746" elapsed="0.000485"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-03T23:44:26.661856" level="INFO">GET Request : url=http://10.30.171.85:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic Og=='} 
 body=None 
 </msg>
<msg time="2026-10-03T23:44:26.662010" level="INFO">GET Response : url=http://10.30.171.85:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=401, reason=Unauthorized 
 headers={'Set-Cookie': 'rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Fri, 02-Oct-2026 23:44:26 GMT; SameSite=lax', 'WWW-Authenticate': 'BASIC realm="application"', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-03T23:44:26.662278" level="INFO">${resp} = &lt;Response [401]&gt;</msg>
<var>${resp}</var>
<arg>httpbin</arg>
<arg>url=${url}</arg>
<arg>expected_status=401</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-03T23:44:26.174374" elapsed="0.487967"/>
</kw>
<kw name="Convert To Upper Case" owner="String">
<msg time="2026-10-03T23:44:26.663394" level="INFO">${header_value} = BASIC REALM="APPLICATION"</msg>
<var>${header_value}</var>
<arg>${resp.headers}[www-authenticate]</arg>
<doc>Converts string to upper case.</doc>
<status status="PASS" start="2026-10-03T23:44:26.662753" elapsed="0.000701"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${header_value}</arg>
<arg>BASIC</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-03T23:44:26.663782" elapsed="0.001031"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-03T23:44:26.666190" level="INFO"/>
<arg>${resp.content}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-03T23:44:26.665171" elapsed="0.001115"/>
</kw>
<arg>${RESTCONF_TEST_URL}</arg>
<arg>${EMPTY}</arg>
<arg>${EMPTY}</arg>
<doc>Checks the given HTTP RESTCONF response for authentication failure</doc>
<status status="PASS" start="2026-10-03T23:44:26.172198" elapsed="0.494227"/>
</kw>
<doc>Given no credentials GET RESTCONF fails</doc>
<status status="PASS" start="2026-10-03T23:44:26.171479" elapsed="0.495237"/>
</test>
<test id="s1-t2" name="Incorrect RESTCONF Password" line="42">
<kw name="Auth Should Fail">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-03T23:44:26.670053" level="INFO">@{auth} = [ admin | bad_pw ]</msg>
<var>@{auth}</var>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-03T23:44:26.669290" elapsed="0.000830"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-03T23:44:26.671176" level="INFO">Creating Session using : alias=httpbin, url=http://10.30.171.85:8181, headers={'Content-Type': 'application/json'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b599f2e210&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>httpbin</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${auth}</arg>
<arg>headers=${HEADERS}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-03T23:44:26.670429" elapsed="0.001102"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-03T23:44:26.914994" level="INFO">GET Request : url=http://10.30.171.85:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YmFkX3B3'} 
 body=None 
 </msg>
<msg time="2026-10-03T23:44:26.915141" level="INFO">GET Response : url=http://10.30.171.85:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=401, reason=Unauthorized 
 headers={'Set-Cookie': 'rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Fri, 02-Oct-2026 23:44:26 GMT; SameSite=lax', 'WWW-Authenticate': 'BASIC realm="application"', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-03T23:44:26.915399" level="INFO">${resp} = &lt;Response [401]&gt;</msg>
<var>${resp}</var>
<arg>httpbin</arg>
<arg>url=${url}</arg>
<arg>expected_status=401</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-03T23:44:26.671885" elapsed="0.243573"/>
</kw>
<kw name="Convert To Upper Case" owner="String">
<msg time="2026-10-03T23:44:26.916436" level="INFO">${header_value} = BASIC REALM="APPLICATION"</msg>
<var>${header_value}</var>
<arg>${resp.headers}[www-authenticate]</arg>
<doc>Converts string to upper case.</doc>
<status status="PASS" start="2026-10-03T23:44:26.915838" elapsed="0.000654"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${header_value}</arg>
<arg>BASIC</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-03T23:44:26.916803" elapsed="0.000687"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-03T23:44:26.918477" level="INFO"/>
<arg>${resp.content}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-03T23:44:26.917866" elapsed="0.000698"/>
</kw>
<arg>${RESTCONF_TEST_URL}</arg>
<arg>${ADMIN_USER}</arg>
<arg>${BAD_PW}</arg>
<doc>Checks the given HTTP RESTCONF response for authentication failure</doc>
<status status="PASS" start="2026-10-03T23:44:26.668463" elapsed="0.250278"/>
</kw>
<doc>Given incorrect password GET RESTCONF fails</doc>
<status status="PASS" start="2026-10-03T23:44:26.667369" elapsed="0.251603"/>
</test>
<test id="s1-t3" name="Incorrect RESTCONF Username" line="46">
<kw name="Auth Should Fail">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-03T23:44:26.922170" level="INFO">@{auth} = [ bad_user | admin ]</msg>
<var>@{auth}</var>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-03T23:44:26.921436" elapsed="0.000790"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-03T23:44:26.923110" level="INFO">Creating Session using : alias=httpbin, url=http://10.30.171.85:8181, headers={'Content-Type': 'application/json'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b599f42910&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>httpbin</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${auth}</arg>
<arg>headers=${HEADERS}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-03T23:44:26.922501" elapsed="0.001065"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-03T23:44:27.063827" level="INFO">GET Request : url=http://10.30.171.85:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YmFkX3VzZXI6YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-03T23:44:27.063978" level="INFO">GET Response : url=http://10.30.171.85:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=401, reason=Unauthorized 
 headers={'Set-Cookie': 'rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Fri, 02-Oct-2026 23:44:27 GMT; SameSite=lax', 'WWW-Authenticate': 'BASIC realm="application"', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-03T23:44:27.064232" level="INFO">${resp} = &lt;Response [401]&gt;</msg>
<var>${resp}</var>
<arg>httpbin</arg>
<arg>url=${url}</arg>
<arg>expected_status=401</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-03T23:44:26.923887" elapsed="0.140404"/>
</kw>
<kw name="Convert To Upper Case" owner="String">
<msg time="2026-10-03T23:44:27.065218" level="INFO">${header_value} = BASIC REALM="APPLICATION"</msg>
<var>${header_value}</var>
<arg>${resp.headers}[www-authenticate]</arg>
<doc>Converts string to upper case.</doc>
<status status="PASS" start="2026-10-03T23:44:27.064603" elapsed="0.000670"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${header_value}</arg>
<arg>BASIC</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-03T23:44:27.065524" elapsed="0.000745"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-03T23:44:27.067315" level="INFO"/>
<arg>${resp.content}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-03T23:44:27.066693" elapsed="0.000719"/>
</kw>
<arg>${RESTCONF_TEST_URL}</arg>
<arg>${BAD_USER}</arg>
<arg>${ADMIN_PW}</arg>
<doc>Checks the given HTTP RESTCONF response for authentication failure</doc>
<status status="PASS" start="2026-10-03T23:44:26.920699" elapsed="0.146844"/>
</kw>
<doc>Given incorrect username GET RESTCONF fails</doc>
<status status="PASS" start="2026-10-03T23:44:26.919599" elapsed="0.148225"/>
</test>
<test id="s1-t4" name="Correct RESTCONF Credentials" line="50">
<kw name="Auth Should Pass">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-03T23:44:27.070985" level="INFO">@{auth} = [ admin | admin ]</msg>
<var>@{auth}</var>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-03T23:44:27.070275" elapsed="0.000766"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-03T23:44:27.071976" level="INFO">Creating Session using : alias=httpbin, url=http://10.30.171.85:8181, headers={'Content-Type': 'application/json'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b599f510d0&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>httpbin</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${auth}</arg>
<arg>headers=${HEADERS}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-03T23:44:27.071359" elapsed="0.001336"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-03T23:44:27.580940" level="INFO">GET Request : url=http://10.30.171.85:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-03T23:44:27.583254" level="INFO">GET Response : url=http://10.30.171.85:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01ehsgndp8kgpiab64rcdfd5y90.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Fri, 02-Oct-2026 23:44:27 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","schema":"/rests/modules/hwvtep?revision=2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","schema":"/rests/modules/opendaylight-flow-table-statistics?revision=2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","schema":"/rests/modules/odl-bmp-monitor-config?revision=2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","schema":"/rests/modules/bgp-inet?revision=2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-nicira-match?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-http-server_2025-11-11","revision":"2025-11-11","schema":"/rests/modules/ietf-http-server?revision=2025-11-11","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["basic-auth","local-users-supported","quic-supported","tcp-supported","tls-supported","client-auth-supported"]},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-crypto-types?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","hidden-symmetric-keys","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?revision=2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?revision=2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/topology-lldp-discovery-config?revision=2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","schema":"/rests/modules/ietf-network-instance?revision=2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","schema":"/rests/modules/nicira-action?revision=2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","schema":"/rests/modules/odl-pcep-message?revision=2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","schema":"/rests/modules/odl-bgp-peer-acceptor-config?revision=2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","schema":"/rests/modules/ietf-yang-schema-mount?revision=2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-client?revision=2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","schema":"/rests/modules/odl-bgp-evpn?revision=2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","schema":"/rests/modules/bgp-ll-graceful-restart?revision=2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","schema":"/rests/modules/bgp-linkstate?revision=2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","schema":"/rests/modules/nicira-match?revision=2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","schema":"/rests/modules/arp-packet?revision=2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","schema":"/rests/modules/base-packet?revision=2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?revision=2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","ssh-server-keepalives","local-user-auth-hostbased"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","schema":"/rests/modules/bgp-message?revision=2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","schema":"/rests/modules/ietf-inet-types?revision=2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","schema":"/rests/modules/openconfig-network-instance?revision=2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","schema":"/rests/modules/data-export-import-internal?revision=2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?revision=2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-tls-cipher-suite-algs?revision=2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","schema":"/rests/modules/ietf-subscribed-notifications?revision=2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/flow-topology-discovery?revision=2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/l3-unicast-igp-topology?revision=2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","schema":"/rests/modules/ietf-netconf-notifications?revision=2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications",... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-10-03T23:44:27.583932" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>httpbin</arg>
<arg>url=${url}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-03T23:44:27.072961" elapsed="0.511036"/>
</kw>
<arg>${RESTCONF_TEST_URL}</arg>
<arg>${ADMIN_USER}</arg>
<arg>${ADMIN_PW}</arg>
<doc>Checks the given HTTP RESTCONF response for authentication failure</doc>
<status status="PASS" start="2026-10-03T23:44:27.069488" elapsed="0.514716"/>
</kw>
<doc>Given correct credentials GET RESTCONF succeeds</doc>
<status status="PASS" start="2026-10-03T23:44:27.068465" elapsed="0.515993"/>
</test>
<test id="s1-t5" name="No Jolokia REST Credentials" line="54">
<kw name="Auth Should Fail">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-03T23:44:27.588236" level="INFO">@{auth} = [  |  ]</msg>
<var>@{auth}</var>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-03T23:44:27.587379" elapsed="0.000913"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-03T23:44:27.589211" level="INFO">Creating Session using : alias=httpbin, url=http://10.30.171.85:8181, headers={'Content-Type': 'application/json'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b599e7da10&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>httpbin</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${auth}</arg>
<arg>headers=${HEADERS}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-03T23:44:27.588576" elapsed="0.000966"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-03T23:44:27.602077" level="INFO">GET Request : url=http://10.30.171.85:8181/jolokia 
 path_url=/jolokia 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic Og=='} 
 body=None 
 </msg>
<msg time="2026-10-03T23:44:27.602189" level="INFO">GET Response : url=http://10.30.171.85:8181/jolokia 
 status=401, reason=Unauthorized 
 headers={'WWW-Authenticate': 'BASIC realm="jolokia"', 'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '411'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-03T23:44:27.602398" level="INFO">${resp} = &lt;Response [401]&gt;</msg>
<var>${resp}</var>
<arg>httpbin</arg>
<arg>url=${url}</arg>
<arg>expected_status=401</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-03T23:44:27.589867" elapsed="0.012582"/>
</kw>
<kw name="Convert To Upper Case" owner="String">
<msg time="2026-10-03T23:44:27.603292" level="INFO">${header_value} = BASIC REALM="JOLOKIA"</msg>
<var>${header_value}</var>
<arg>${resp.headers}[www-authenticate]</arg>
<doc>Converts string to upper case.</doc>
<status status="PASS" start="2026-10-03T23:44:27.602748" elapsed="0.000597"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${header_value}</arg>
<arg>BASIC</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-03T23:44:27.603607" elapsed="0.000745"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-03T23:44:27.605363" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.content}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-03T23:44:27.604737" elapsed="0.000739"/>
</kw>
<arg>${JOLOKIA_TEST_URL}</arg>
<arg>${EMPTY}</arg>
<arg>${EMPTY}</arg>
<doc>Checks the given HTTP RESTCONF response for authentication failure</doc>
<status status="PASS" start="2026-10-03T23:44:27.586443" elapsed="0.019148"/>
</kw>
<doc>Given no credentials, HTTP GET on a Jolokia endpoint fails</doc>
<status status="PASS" start="2026-10-03T23:44:27.585258" elapsed="0.020590"/>
</test>
<test id="s1-t6" name="Incorrect Jolokia REST Password" line="58">
<kw name="Auth Should Fail">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-03T23:44:27.608847" level="INFO">@{auth} = [ admin | bad_pw ]</msg>
<var>@{auth}</var>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-03T23:44:27.608098" elapsed="0.000806"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-03T23:44:27.609761" level="INFO">Creating Session using : alias=httpbin, url=http://10.30.171.85:8181, headers={'Content-Type': 'application/json'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b599f5cbd0&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>httpbin</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${auth}</arg>
<arg>headers=${HEADERS}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-03T23:44:27.609198" elapsed="0.000854"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-03T23:44:27.616800" level="INFO">GET Request : url=http://10.30.171.85:8181/jolokia 
 path_url=/jolokia 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YmFkX3B3'} 
 body=None 
 </msg>
<msg time="2026-10-03T23:44:27.616913" level="INFO">GET Response : url=http://10.30.171.85:8181/jolokia 
 status=401, reason=Unauthorized 
 headers={'WWW-Authenticate': 'BASIC realm="jolokia"', 'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '411'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-03T23:44:27.617120" level="INFO">${resp} = &lt;Response [401]&gt;</msg>
<var>${resp}</var>
<arg>httpbin</arg>
<arg>url=${url}</arg>
<arg>expected_status=401</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-03T23:44:27.610307" elapsed="0.006863"/>
</kw>
<kw name="Convert To Upper Case" owner="String">
<msg time="2026-10-03T23:44:27.618029" level="INFO">${header_value} = BASIC REALM="JOLOKIA"</msg>
<var>${header_value}</var>
<arg>${resp.headers}[www-authenticate]</arg>
<doc>Converts string to upper case.</doc>
<status status="PASS" start="2026-10-03T23:44:27.617490" elapsed="0.000593"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${header_value}</arg>
<arg>BASIC</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-03T23:44:27.618328" elapsed="0.000666"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-03T23:44:27.619975" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.content}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-03T23:44:27.619329" elapsed="0.000756"/>
</kw>
<arg>${JOLOKIA_TEST_URL}</arg>
<arg>${JOLOKIA_USER}</arg>
<arg>${BAD_PW}</arg>
<doc>Checks the given HTTP RESTCONF response for authentication failure</doc>
<status status="PASS" start="2026-10-03T23:44:27.607365" elapsed="0.012837"/>
</kw>
<doc>Given incorrect password, GET on a Jolokia endpoint fails</doc>
<status status="PASS" start="2026-10-03T23:44:27.606352" elapsed="0.014054"/>
</test>
<test id="s1-t7" name="Incorrect Jolokia REST Username" line="62">
<kw name="Auth Should Fail">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-03T23:44:27.626137" level="INFO">@{auth} = [ bad_user | admin ]</msg>
<var>@{auth}</var>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-03T23:44:27.625419" elapsed="0.000775"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-03T23:44:27.627040" level="INFO">Creating Session using : alias=httpbin, url=http://10.30.171.85:8181, headers={'Content-Type': 'application/json'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b599f2c0d0&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>httpbin</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${auth}</arg>
<arg>headers=${HEADERS}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-03T23:44:27.626473" elapsed="0.000834"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-03T23:44:27.633949" level="INFO">GET Request : url=http://10.30.171.85:8181/jolokia 
 path_url=/jolokia 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YmFkX3VzZXI6YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-03T23:44:27.634061" level="INFO">GET Response : url=http://10.30.171.85:8181/jolokia 
 status=401, reason=Unauthorized 
 headers={'WWW-Authenticate': 'BASIC realm="jolokia"', 'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '411'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-03T23:44:27.634291" level="INFO">${resp} = &lt;Response [401]&gt;</msg>
<var>${resp}</var>
<arg>httpbin</arg>
<arg>url=${url}</arg>
<arg>expected_status=401</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-03T23:44:27.627569" elapsed="0.006776"/>
</kw>
<kw name="Convert To Upper Case" owner="String">
<msg time="2026-10-03T23:44:27.635126" level="INFO">${header_value} = BASIC REALM="JOLOKIA"</msg>
<var>${header_value}</var>
<arg>${resp.headers}[www-authenticate]</arg>
<doc>Converts string to upper case.</doc>
<status status="PASS" start="2026-10-03T23:44:27.634593" elapsed="0.000587"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${header_value}</arg>
<arg>BASIC</arg>
<doc>Fails if the `container` does not contain the `item` one or more times.</doc>
<status status="PASS" start="2026-10-03T23:44:27.635423" elapsed="0.000665"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-03T23:44:27.637050" level="INFO">&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
</msg>
<arg>${resp.content}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-03T23:44:27.636407" elapsed="0.000755"/>
</kw>
<arg>${JOLOKIA_TEST_URL}</arg>
<arg>${JOLOKIA_BAD_USER}</arg>
<arg>${JOLOKIA_PW}</arg>
<doc>Checks the given HTTP RESTCONF response for authentication failure</doc>
<status status="PASS" start="2026-10-03T23:44:27.624724" elapsed="0.012553"/>
</kw>
<doc>Given incorrect username, GET on a Jolokia endpoint fails</doc>
<status status="PASS" start="2026-10-03T23:44:27.620955" elapsed="0.016521"/>
</test>
<test id="s1-t8" name="Correct Jolokia REST Credentials" line="66">
<kw name="Auth Should Pass">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-03T23:44:27.640531" level="INFO">@{auth} = [ admin | admin ]</msg>
<var>@{auth}</var>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-03T23:44:27.639869" elapsed="0.000717"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-03T23:44:27.641435" level="INFO">Creating Session using : alias=httpbin, url=http://10.30.171.85:8181, headers={'Content-Type': 'application/json'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b599f53e10&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>httpbin</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${auth}</arg>
<arg>headers=${HEADERS}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-03T23:44:27.640911" elapsed="0.000855"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-03T23:44:27.659171" level="INFO">GET Request : url=http://10.30.171.85:8181/jolokia 
 path_url=/jolokia 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-03T23:44:27.659342" level="INFO">GET Response : url=http://10.30.171.85:8181/jolokia 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sat, 03 Oct 2026 23:44:27 GMT', 'Expires': 'Sat, 03 Oct 2026 22:44:27 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"type":"version"},"value":{"agent":"1.7.1","protocol":"7.2","config":{"listenForHttpService":"true","authIgnoreCerts":"false","agentId":"10.30.171.85-1871-652a5610-osgi","agentType":"servlet","policyLocation":"classpath:\/jolokia-access.xml","agentContext":"\/jolokia","mimeType":"text\/plain","streaming":"true","password":"admin","historyMaxEntries":"10","allowDnsReverseLookup":"true","debug":"false","serializeException":"false","dispatcherClasses":"org.jolokia.http.Jsr160ProxyNotEnabledByDefaultAnymoreDispatcher","multicastGroup":"239.192.48.84","authMode":"basic","authMatch":"any","canonicalNaming":"true","allowErrorDetails":"true","realm":"jolokia","includeStackTrace":"true","multicastPort":"24884","user":"admin","useRestrictorService":"false","debugMaxEntries":"100"},"info":{"product":"equinox","vendor":"Eclipse","version":"3.18.0.v20220516-2155"}},"timestamp":1791071067,"status":200} 
 </msg>
<msg time="2026-10-03T23:44:27.659780" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>httpbin</arg>
<arg>url=${url}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-03T23:44:27.642021" elapsed="0.017819"/>
</kw>
<arg>${JOLOKIA_TEST_URL}</arg>
<arg>${JOLOKIA_USER}</arg>
<arg>${JOLOKIA_PW}</arg>
<doc>Checks the given HTTP RESTCONF response for authentication failure</doc>
<status status="PASS" start="2026-10-03T23:44:27.639115" elapsed="0.020899"/>
</kw>
<doc>Given correct credentials, GET on a Jolokia endpoint succeeds</doc>
<status status="PASS" start="2026-10-03T23:44:27.638078" elapsed="0.022171"/>
</test>
<test id="s1-t9" name="IDM Endpoints Only Available To admin Role" line="70">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-03T23:44:27.662810" level="INFO">${auth} = ['user', 'user']</msg>
<var>${auth}</var>
<arg>${USER_USER}</arg>
<arg>${USER_PW}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-03T23:44:27.662007" elapsed="0.000861"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-03T23:44:27.663759" level="INFO">Creating Session using : alias=httpbin, url=http://10.30.171.85:8181, headers={'Content-Type': 'application/json'},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x79b599e7d750&gt;, timeout=None, proxies=None, verify=False,                     debug=0 </msg>
<arg>httpbin</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${auth}</arg>
<arg>headers=${HEADERS}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-10-03T23:44:27.663147" elapsed="0.000909"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-03T23:44:27.923553" level="INFO">GET Request : url=http://10.30.171.85:8181/auth/v1/users 
 path_url=/auth/v1/users 
 headers={'User-Agent': 'python-requests/2.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Authorization': 'Basic dXNlcjp1c2Vy'} 
 body=None 
 </msg>
<msg time="2026-10-03T23:44:27.923780" level="INFO">GET Response : url=http://10.30.171.85:8181/auth/v1/users 
 status=401, reason=Unauthorized 
 headers={'Set-Cookie': 'rememberMe=deleteMe; Path=/auth; Max-Age=0; Expires=Fri, 02-Oct-2026 23:44:27 GMT; SameSite=lax', 'WWW-Authenticate': 'BASIC realm="application"', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-10-03T23:44:27.924080" level="INFO">${resp} = &lt;Response [401]&gt;</msg>
<var>${resp}</var>
<arg>httpbin</arg>
<arg>url=${USERS_REST_URL}</arg>
<arg>expected_status=401</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-10-03T23:44:27.664321" elapsed="0.259821"/>
</kw>
<doc>A user with a non-"admin" role should not have access to AAA endpoints</doc>
<status status="PASS" start="2026-10-03T23:44:27.660932" elapsed="0.263496"/>
</test>
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
<msg time="2026-10-03T23:44:27.926284" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-03T23:44:27.926045" elapsed="0.001809"/>
</kw>
<doc>Test Basic Authentication support in RESTCONF</doc>
<status status="PASS" start="2026-10-03T23:44:26.039430" elapsed="1.888508"/>
</suite>
<statistics>
<total>
<stat pass="9" fail="0" skip="0">All Tests</stat>
</total>
<tag>
</tag>
<suite>
<stat name="aaa-authn.txt" id="s1" pass="9" fail="0" skip="0">aaa-authn.txt</stat>
</suite>
</statistics>
<errors>
</errors>
</robot>
