Files
Aniworld/output.xml
Lukas d940460355 Cleanup obsolete tasks, simplify auth lock logic, increase test retry wait
- Remove completed Task 17 and 18 from Docs/tasks.md
- Remove ANIWORLD_TESTING bypass in _check_locked (testing env now uses test auth service)
- Remove redundant lock expiry cleanup (handled by _get_fail_record)
- Fix login.html whitespace formatting
- Increase setup retry wait from 6s to 45s for rate-limited CI environments
2026-06-26 21:04:45 +02:00

677 lines
26 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.13.5 on linux)" generated="2026-06-26T18:51:25.066443" rpa="false" schemaversion="5">
<suite id="s1" name="Download" source="/home/lukas/Volume/repo/Aniworld/tests/robot/api/download.robot">
<test id="s1-t1" name="Retry Failed Item" line="106">
<kw name="Run Keywords" owner="BuiltIn" type="SETUP">
<kw name="Create Anonymous Session" owner="common">
<kw name="Create Session" owner="RequestsLibrary">
<arg>anon</arg>
<arg>${BASE_URL}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.279086" elapsed="0.000113"/>
</kw>
<doc>Create an unauthenticated HTTP session.</doc>
<status status="PASS" start="2026-06-26T18:51:25.278813" elapsed="0.000462"/>
</kw>
<kw name="Setup Master Password" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<var>${payload}</var>
<arg>master_password=${SETUP_PASSWORD}</arg>
<arg>anime_directory=/tmp/aniworld_test_anime</arg>
<arg>name=AniworldTest</arg>
<arg>data_dir=data</arg>
<arg>scheduler_enabled=False</arg>
<arg>logging_level=INFO</arg>
<arg>backup_enabled=False</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.279734" elapsed="0.000277"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>anon</arg>
<arg>/api/auth/setup</arg>
<arg>json=${payload}</arg>
<arg>expected_status=any</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.280120" elapsed="0.000109"/>
</kw>
<if>
<branch type="IF" condition="'${resp.status_code}' == '429'">
<kw name="Sleep" owner="BuiltIn">
<arg>6s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.280454" elapsed="0.000184"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>anon</arg>
<arg>/api/auth/setup</arg>
<arg>json=${payload}</arg>
<arg>expected_status=any</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.280743" elapsed="0.000092"/>
</kw>
<status status="PASS" start="2026-06-26T18:51:25.280322" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-06-26T18:51:25.280300" elapsed="0.000616"/>
</if>
<if>
<branch type="IF" condition="'${resp.status_code}' == '400'">
<kw name="Convert String To Json" owner="JSONLibrary">
<var>${json}</var>
<arg>${resp.text}</arg>
<doc>Convert String to JSON object</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.281100" elapsed="0.000059"/>
</kw>
<kw name="Get Value From Json" owner="JSONLibrary">
<var>${detail}</var>
<arg>${json}</arg>
<arg>$.detail</arg>
<doc>Get Value From JSON using JSONPath</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.281236" elapsed="0.000072"/>
</kw>
<if>
<branch type="IF" condition="'${detail}[0]' == 'Master password already configured'">
<return>
<status status="PASS" start="2026-06-26T18:51:25.281434" elapsed="0.000045"/>
</return>
<status status="PASS" start="2026-06-26T18:51:25.281371" elapsed="0.000141"/>
</branch>
<status status="PASS" start="2026-06-26T18:51:25.281358" elapsed="0.000186"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Setup failed with 400: ${detail}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.281607" elapsed="0.000164"/>
</kw>
<status status="PASS" start="2026-06-26T18:51:25.280977" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-06-26T18:51:25.280963" elapsed="0.000868"/>
</if>
<if>
<branch type="IF" condition="'${resp.status_code}' == '201'">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${resp.status_code}</arg>
<arg>201</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.281977" elapsed="0.000147"/>
</kw>
<return>
<status status="PASS" start="2026-06-26T18:51:25.282293" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-06-26T18:51:25.281874" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-06-26T18:51:25.281864" elapsed="0.000535"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unexpected status ${resp.status_code} from /api/auth/setup</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.282461" elapsed="0.000131"/>
</kw>
<doc>Configure the master password via the setup endpoint.</doc>
<status status="PASS" start="2026-06-26T18:51:25.279498" elapsed="0.003136"/>
</kw>
<kw name="Create Authenticated Session" owner="common">
<kw name="Create Anonymous Session" owner="common">
<kw name="Create Session" owner="RequestsLibrary">
<arg>anon</arg>
<arg>${BASE_URL}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.283228" elapsed="0.000081"/>
</kw>
<doc>Create an unauthenticated HTTP session.</doc>
<status status="PASS" start="2026-06-26T18:51:25.283025" elapsed="0.000326"/>
</kw>
<kw name="Is Auth Configured" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>anon</arg>
<arg>/api/auth/status</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.283594" elapsed="0.000071"/>
</kw>
<kw name="Convert String To Json" owner="JSONLibrary">
<var>${json}</var>
<arg>${resp.text}</arg>
<doc>Convert String to JSON object</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.283751" elapsed="0.000058"/>
</kw>
<kw name="Get Value From Json" owner="JSONLibrary">
<var>${configured}</var>
<arg>${json}</arg>
<arg>$.configured</arg>
<doc>Get Value From JSON using JSONPath</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.283891" elapsed="0.000071"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${configured_val}</var>
<arg>${configured}[0]</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.284039" elapsed="0.000196"/>
</kw>
<return>
<value>${configured_val}</value>
<status status="PASS" start="2026-06-26T18:51:25.284301" elapsed="0.000070"/>
</return>
<var>${configured}</var>
<doc>Check if the master password has already been configured.</doc>
<status status="PASS" start="2026-06-26T18:51:25.283447" elapsed="0.000981"/>
</kw>
<if>
<branch type="IF" condition="not ${configured}">
<kw name="Setup Master Password" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<var>${payload}</var>
<arg>master_password=${SETUP_PASSWORD}</arg>
<arg>anime_directory=/tmp/aniworld_test_anime</arg>
<arg>name=AniworldTest</arg>
<arg>data_dir=data</arg>
<arg>scheduler_enabled=False</arg>
<arg>logging_level=INFO</arg>
<arg>backup_enabled=False</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.284971" elapsed="0.000181"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>anon</arg>
<arg>/api/auth/setup</arg>
<arg>json=${payload}</arg>
<arg>expected_status=any</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.285244" elapsed="0.000088"/>
</kw>
<if>
<branch type="IF" condition="'${resp.status_code}' == '429'">
<kw name="Sleep" owner="BuiltIn">
<arg>6s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.285498" elapsed="0.000169"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>anon</arg>
<arg>/api/auth/setup</arg>
<arg>json=${payload}</arg>
<arg>expected_status=any</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.285758" elapsed="0.000084"/>
</kw>
<status status="PASS" start="2026-06-26T18:51:25.285398" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-06-26T18:51:25.285385" elapsed="0.000662"/>
</if>
<if>
<branch type="IF" condition="'${resp.status_code}' == '400'">
<kw name="Convert String To Json" owner="JSONLibrary">
<var>${json}</var>
<arg>${resp.text}</arg>
<doc>Convert String to JSON object</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.286209" elapsed="0.000058"/>
</kw>
<kw name="Get Value From Json" owner="JSONLibrary">
<var>${detail}</var>
<arg>${json}</arg>
<arg>$.detail</arg>
<doc>Get Value From JSON using JSONPath</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.286341" elapsed="0.000066"/>
</kw>
<if>
<branch type="IF" condition="'${detail}[0]' == 'Master password already configured'">
<return>
<status status="PASS" start="2026-06-26T18:51:25.286515" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-06-26T18:51:25.286462" elapsed="0.000113"/>
</branch>
<status status="PASS" start="2026-06-26T18:51:25.286451" elapsed="0.000148"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Setup failed with 400: ${detail}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.286656" elapsed="0.000141"/>
</kw>
<status status="PASS" start="2026-06-26T18:51:25.286109" elapsed="0.000720"/>
</branch>
<status status="PASS" start="2026-06-26T18:51:25.286097" elapsed="0.000757"/>
</if>
<if>
<branch type="IF" condition="'${resp.status_code}' == '201'">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${resp.status_code}</arg>
<arg>201</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.286985" elapsed="0.000135"/>
</kw>
<return>
<status status="PASS" start="2026-06-26T18:51:25.287163" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-06-26T18:51:25.286894" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-06-26T18:51:25.286884" elapsed="0.000372"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unexpected status ${resp.status_code} from /api/auth/setup</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.287320" elapsed="0.000148"/>
</kw>
<doc>Configure the master password via the setup endpoint.</doc>
<status status="PASS" start="2026-06-26T18:51:25.284776" elapsed="0.002730"/>
</kw>
<kw name="Login And Get Token" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<var>${payload}</var>
<arg>password=${SETUP_PASSWORD}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.287874" elapsed="0.000137"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>anon</arg>
<arg>/api/auth/login</arg>
<arg>json=${payload}</arg>
<arg>expected_status=any</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.288088" elapsed="0.000099"/>
</kw>
<if>
<branch type="IF" condition="'${resp.status_code}' == '429'">
<kw name="Sleep" owner="BuiltIn">
<arg>6s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.288342" elapsed="0.000146"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>anon</arg>
<arg>/api/auth/login</arg>
<arg>json=${payload}</arg>
<arg>expected_status=any</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.288562" elapsed="0.000074"/>
</kw>
<status status="PASS" start="2026-06-26T18:51:25.288251" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-06-26T18:51:25.288238" elapsed="0.000466"/>
</if>
<if>
<branch type="IF" condition="'${resp.status_code}' != '200'">
<kw name="Convert String To Json" owner="JSONLibrary">
<var>${json}</var>
<arg>${resp.text}</arg>
<doc>Convert String to JSON object</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.288839" elapsed="0.000057"/>
</kw>
<kw name="Get Value From Json" owner="JSONLibrary">
<var>${detail}</var>
<arg>${json}</arg>
<arg>$.detail</arg>
<doc>Get Value From JSON using JSONPath</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.288969" elapsed="0.000065"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${detail_val}</var>
<arg>${detail}[0]</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.289106" elapsed="0.000131"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>Login failed with ${resp.status_code}: ${detail_val}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.289309" elapsed="0.000147"/>
</kw>
<status status="PASS" start="2026-06-26T18:51:25.288746" elapsed="0.000740"/>
</branch>
<status status="PASS" start="2026-06-26T18:51:25.288736" elapsed="0.000778"/>
</if>
<kw name="Convert String To Json" owner="JSONLibrary">
<var>${json}</var>
<arg>${resp.text}</arg>
<doc>Convert String to JSON object</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.289572" elapsed="0.000056"/>
</kw>
<kw name="Get Value From Json" owner="JSONLibrary">
<var>${token}</var>
<arg>${json}</arg>
<arg>$.access_token</arg>
<doc>Get Value From JSON using JSONPath</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.289703" elapsed="0.000069"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${token_str}</var>
<arg>${token}[0]</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.289842" elapsed="0.000119"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${TOKEN}</arg>
<arg>${token_str}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.290038" elapsed="0.000129"/>
</kw>
<return>
<value>${token_str}</value>
<status status="PASS" start="2026-06-26T18:51:25.290205" elapsed="0.000040"/>
</return>
<var>${token}</var>
<doc>Log in with the master password and return the JWT access token.</doc>
<status status="PASS" start="2026-06-26T18:51:25.287666" elapsed="0.002619"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<arg>auth</arg>
<arg>${BASE_URL}</arg>
<arg>headers={'Authorization': 'Bearer ${token}'}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.290359" elapsed="0.000093"/>
</kw>
<status status="PASS" start="2026-06-26T18:51:25.284518" elapsed="0.005967"/>
</branch>
<branch type="ELSE IF" condition="'${TOKEN}' == '${EMPTY}'">
<kw name="Login And Get Token" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<var>${payload}</var>
<arg>password=${SETUP_PASSWORD}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.290864" elapsed="0.000145"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>anon</arg>
<arg>/api/auth/login</arg>
<arg>json=${payload}</arg>
<arg>expected_status=any</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.291085" elapsed="0.000075"/>
</kw>
<if>
<branch type="IF" condition="'${resp.status_code}' == '429'">
<kw name="Sleep" owner="BuiltIn">
<arg>6s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.291310" elapsed="0.000150"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>anon</arg>
<arg>/api/auth/login</arg>
<arg>json=${payload}</arg>
<arg>expected_status=any</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.291540" elapsed="0.000080"/>
</kw>
<status status="PASS" start="2026-06-26T18:51:25.291223" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-06-26T18:51:25.291210" elapsed="0.000471"/>
</if>
<if>
<branch type="IF" condition="'${resp.status_code}' != '200'">
<kw name="Convert String To Json" owner="JSONLibrary">
<var>${json}</var>
<arg>${resp.text}</arg>
<doc>Convert String to JSON object</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.291932" elapsed="0.000061"/>
</kw>
<kw name="Get Value From Json" owner="JSONLibrary">
<var>${detail}</var>
<arg>${json}</arg>
<arg>$.detail</arg>
<doc>Get Value From JSON using JSONPath</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.292068" elapsed="0.000067"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${detail_val}</var>
<arg>${detail}[0]</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.292209" elapsed="0.000132"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>Login failed with ${resp.status_code}: ${detail_val}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.292413" elapsed="0.000126"/>
</kw>
<status status="PASS" start="2026-06-26T18:51:25.291830" elapsed="0.000740"/>
</branch>
<status status="PASS" start="2026-06-26T18:51:25.291814" elapsed="0.000784"/>
</if>
<kw name="Convert String To Json" owner="JSONLibrary">
<var>${json}</var>
<arg>${resp.text}</arg>
<doc>Convert String to JSON object</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.292656" elapsed="0.000061"/>
</kw>
<kw name="Get Value From Json" owner="JSONLibrary">
<var>${token}</var>
<arg>${json}</arg>
<arg>$.access_token</arg>
<doc>Get Value From JSON using JSONPath</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.292787" elapsed="0.000083"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${token_str}</var>
<arg>${token}[0]</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.292940" elapsed="0.000122"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${TOKEN}</arg>
<arg>${token_str}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.293145" elapsed="0.000156"/>
</kw>
<return>
<value>${token_str}</value>
<status status="PASS" start="2026-06-26T18:51:25.293341" elapsed="0.000043"/>
</return>
<var>${token}</var>
<doc>Log in with the master password and return the JWT access token.</doc>
<status status="PASS" start="2026-06-26T18:51:25.290703" elapsed="0.002718"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<arg>auth</arg>
<arg>${BASE_URL}</arg>
<arg>headers={'Authorization': 'Bearer ${token}'}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.293492" elapsed="0.000092"/>
</kw>
<status status="PASS" start="2026-06-26T18:51:25.290513" elapsed="0.003103"/>
</branch>
<branch type="ELSE">
<kw name="Create Session" owner="RequestsLibrary">
<arg>auth</arg>
<arg>${BASE_URL}</arg>
<arg>headers={'Authorization': 'Bearer ${TOKEN}'}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.293775" elapsed="0.000083"/>
</kw>
<status status="PASS" start="2026-06-26T18:51:25.293643" elapsed="0.000248"/>
</branch>
<status status="PASS" start="2026-06-26T18:51:25.284499" elapsed="0.009416"/>
</if>
<doc>Create an authenticated HTTP session. Performs setup if needed, then logs in.
Skips setup/login if already authenticated (suite-level setup done).</doc>
<status status="PASS" start="2026-06-26T18:51:25.282791" elapsed="0.011148"/>
</kw>
<arg>Create Anonymous Session</arg>
<arg>AND</arg>
<arg>Setup Master Password</arg>
<arg>AND</arg>
<arg>Create Authenticated Session</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-06-26T18:51:25.278288" elapsed="0.015676"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${episodes}</var>
<arg>{'season': 1, 'episode': 1, 'title': 'Episode 1'}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.294055" elapsed="0.000155"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<var>${payload}</var>
<arg>serie_id=retry-test</arg>
<arg>serie_folder=Retry Test</arg>
<arg>serie_name=Retry Test</arg>
<arg>episodes=${episodes}</arg>
<arg>priority=NORMAL</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.294292" elapsed="0.000152"/>
</kw>
<kw name="Add To Queue" owner="api_keywords">
<kw name="POST API" owner="api_keywords">
<if>
<branch type="IF" condition="$payload is ${NONE}">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>${session}</arg>
<arg>${endpoint}</arg>
<arg>expected_status=${expected_status}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.295095" elapsed="0.000078"/>
</kw>
<status status="PASS" start="2026-06-26T18:51:25.294991" elapsed="0.000219"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>${session}</arg>
<arg>${endpoint}</arg>
<arg>json=${payload}</arg>
<arg>expected_status=${expected_status}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.295350" elapsed="0.000078"/>
</kw>
<status status="PASS" start="2026-06-26T18:51:25.295238" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-06-26T18:51:25.294974" elapsed="0.000517"/>
</if>
<return>
<value>${resp}</value>
<status status="PASS" start="2026-06-26T18:51:25.295515" elapsed="0.000039"/>
</return>
<var>${resp}</var>
<arg>/api/queue/add</arg>
<arg>${payload}</arg>
<arg>201</arg>
<doc>Perform an authenticated POST request with optional JSON payload.</doc>
<status status="PASS" start="2026-06-26T18:51:25.294816" elapsed="0.000771"/>
</kw>
<return>
<value>${resp}</value>
<status status="PASS" start="2026-06-26T18:51:25.295621" elapsed="0.000033"/>
</return>
<var>${add_resp}</var>
<arg>${payload}</arg>
<doc>POST /api/queue/add with the given payload.</doc>
<status status="PASS" start="2026-06-26T18:51:25.294563" elapsed="0.001125"/>
</kw>
<kw name="Convert String To Json" owner="JSONLibrary">
<var>${json}</var>
<arg>${add_resp.text}</arg>
<doc>Convert String to JSON object</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.295766" elapsed="0.000063"/>
</kw>
<kw name="Get Value From Json" owner="JSONLibrary">
<var>${ids}</var>
<arg>${json}</arg>
<arg>$.item_ids</arg>
<doc>Get Value From JSON using JSONPath</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.295907" elapsed="0.000068"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${item_id}</var>
<arg>${ids}[0]</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.296056" elapsed="0.000156"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<var>${retry_payload}</var>
<arg>item_ids=${item_id}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.296296" elapsed="0.000135"/>
</kw>
<kw name="POST API" owner="api_keywords">
<if>
<branch type="IF" condition="$payload is ${NONE}">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>${session}</arg>
<arg>${endpoint}</arg>
<arg>expected_status=${expected_status}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.296840" elapsed="0.000071"/>
</kw>
<status status="PASS" start="2026-06-26T18:51:25.296743" elapsed="0.000202"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${resp}</var>
<arg>${session}</arg>
<arg>${endpoint}</arg>
<arg>json=${payload}</arg>
<arg>expected_status=${expected_status}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.297060" elapsed="0.000078"/>
</kw>
<status status="PASS" start="2026-06-26T18:51:25.296973" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-06-26T18:51:25.296729" elapsed="0.000564"/>
</if>
<return>
<value>${resp}</value>
<status status="PASS" start="2026-06-26T18:51:25.297320" elapsed="0.000040"/>
</return>
<var>${retry_resp}</var>
<arg>/api/queue/retry</arg>
<arg>${retry_payload}</arg>
<doc>Perform an authenticated POST request with optional JSON payload.</doc>
<status status="PASS" start="2026-06-26T18:51:25.296561" elapsed="0.000834"/>
</kw>
<kw name="Response Should Have Status" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${response.status_code}</arg>
<arg>${expected_status}</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.297651" elapsed="0.000274"/>
</kw>
<arg>${retry_resp}</arg>
<arg>200</arg>
<doc>Assert that the response status code matches the expected value.</doc>
<status status="PASS" start="2026-06-26T18:51:25.297494" elapsed="0.000518"/>
</kw>
<kw name="Convert String To Json" owner="JSONLibrary">
<var>${retry_json}</var>
<arg>${retry_resp.text}</arg>
<doc>Convert String to JSON object</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.298167" elapsed="0.000148"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${retry_json}</arg>
<arg>retried_count</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.298434" elapsed="0.000119"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
<doc>Removes all the session objects</doc>
<status status="NOT RUN" start="2026-06-26T18:51:25.298789" elapsed="0.000093"/>
</kw>
<msg time="2026-06-26T18:51:25.302305" level="INFO">Starting Browser process /home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js using at 127.0.0.1:35183</msg>
<doc>Retry a failed download item.</doc>
<status status="PASS" start="2026-06-26T18:51:25.277224" elapsed="0.021705"/>
</test>
<doc>Download queue API tests for Aniworld.
Covers status, add, start/stop/pause/resume, clear, retry, and remove.</doc>
<status status="PASS" start="2026-06-26T18:51:25.067278" elapsed="0.673101"/>
</suite>
<statistics>
<total>
<stat pass="1" fail="0" skip="0">All Tests</stat>
</total>
<tag>
</tag>
<suite>
<stat name="Download" id="s1" pass="1" fail="0" skip="0">Download</stat>
</suite>
</statistics>
<errors>
</errors>
</robot>