Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
${payload} = {'master_password': 'TestPass123!', 'anime_directory': '/tmp/aniworld_test_anime', 'name': 'AniworldTest', 'data_dir': 'data', 'scheduler_enabled': 'False', 'logging_level': 'INFO', 'backup_enabled': ...
${payload}
master_password=${SETUP_PASSWORD}
anime_directory=/tmp/aniworld_test_anime
name=AniworldTest
data_dir=data
scheduler_enabled=False
logging_level=INFO
backup_enabled=False
Creates and returns a dictionary based on the given ``items``.
POST Request : url=http://127.0.0.1:8765/api/auth/setup
path_url=/api/auth/setup
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '208', 'Content-Type': 'application/json'}
body=b'{"master_password": "TestPass123!", "anime_directory": "/tmp/aniworld_test_anime", "name": "AniworldTest", "data_dir": "data", "scheduler_enabled": "False", "logging_level": "INFO", "backup_enabled": "False"}'
POST Response : url=http://127.0.0.1:8765/api/auth/setup
status=201, reason=Created
headers={'date': 'Sat, 27 Jun 2026 11:55:21 GMT', 'server': 'uvicorn', 'content-length': '51', 'content-type': 'application/json'}
body={"status":"ok","redirect":"/loading?phase=initial"}
${resp} = <Response [201]>
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
${json}
${resp.text}
Convert String to JSON object
${detail}
${json}
$.detail
Get Value From JSON using JSONPath
Setup failed with 400: ${detail}
Fails the test with the given message and optionally alters its tags.
Argument types are:
<class 'int'>
<class 'str'>
${resp.status_code}
201
Fails if objects are unequal after converting them to integers.
Unexpected status ${resp.status_code} from /api/auth/setup
Fails the test with the given message and optionally alters its tags.
Configure the master password via the setup endpoint.
Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
GET Request : url=http://127.0.0.1:8765/api/auth/status
path_url=/api/auth/status
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'}
body=None
GET Response : url=http://127.0.0.1:8765/api/auth/status
status=200, reason=OK
headers={'date': 'Sat, 27 Jun 2026 11:55:21 GMT', 'server': 'uvicorn', 'content-length': '41', 'content-type': 'application/json'}
body={"configured":true,"authenticated":false}
${resp} = <Response [200]>
${resp}
anon
/api/auth/status
expected_status=200
Sends a GET request on a previously created HTTP Session.
${json} = {'configured': True, 'authenticated': False}
${json}
${resp.text}
Convert String to JSON object
${configured} = [True]
${configured}
${json}
$.configured
Get Value From JSON using JSONPath
${configured_val} = True
${configured_val}
${configured}[0]
Returns the given values which can then be assigned to a variables.
${configured_val}
${configured} = True
${configured}
Check if the master password has already been configured.
Configure the master password via the setup endpoint.
${token}
Log in with the master password and return the JWT access token.
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
${payload} = {'password': 'TestPass123!'}
${payload}
password=${SETUP_PASSWORD}
Creates and returns a dictionary based on the given ``items``.
POST Request : url=http://127.0.0.1:8765/api/auth/login
path_url=/api/auth/login
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '28', 'Content-Type': 'application/json'}
body=b'{"password": "TestPass123!"}'
POST Response : url=http://127.0.0.1:8765/api/auth/login
status=200, reason=OK
headers={'date': 'Sat, 27 Jun 2026 11:55:21 GMT', 'server': 'uvicorn', 'content-length': '232', 'content-type': 'application/json'}
body={"access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs","token_type":"bearer","expires_at":"2026-06-28T11:55:22.863211Z"}
${resp} = <Response [200]>
${resp}
anon
/api/auth/login
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
6s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/login
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
${json}
${resp.text}
Convert String to JSON object
${detail}
${json}
$.detail
Get Value From JSON using JSONPath
${detail_val}
${detail}[0]
Returns the given values which can then be assigned to a variables.
Login failed with ${resp.status_code}: ${detail_val}
Fails the test with the given message and optionally alters its tags.
${json} = {'access_token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs', 'token_type': 'bearer', 'expire...
${json}
${resp.text}
Convert String to JSON object
${token} = ['eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs']
${token}
${json}
$.access_token
Get Value From JSON using JSONPath
${token_str} = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs
${token_str}
${token}[0]
Returns the given values which can then be assigned to a variables.
${TOKEN} = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs
${TOKEN}
${token_str}
Makes a variable available everywhere within the scope of the current suite.
${token_str}
${token} = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs
${token}
Log in with the master password and return the JWT access token.
Creating Session using : alias=auth, url=http://127.0.0.1:8765, headers={'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${TOKEN}'}
Create Session: create a HTTP session to a server
Create an authenticated HTTP session. Performs setup if needed, then logs in.
Skips setup/login if already authenticated (suite-level setup done).
Create Anonymous Session
AND
Setup Master Password
AND
Create Authenticated Session
Executes all the given keywords in a sequence.
GET Request : url=http://127.0.0.1:8765/api/config
path_url=/api/config
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs'}
body=None
GET Response : url=http://127.0.0.1:8765/api/config
status=200, reason=OK
headers={'date': 'Sat, 27 Jun 2026 11:55:21 GMT', 'server': 'uvicorn', 'content-length': '829', 'content-type': 'application/json'}
body={"name":"AniworldTest","data_dir":"data","scheduler":{"enabled":false,"interval_minutes":60,"schedule_time":"03:00","schedule_days":["mon","tue","wed","thu","fri","sat","sun"],"auto_download_after_rescan":false,"nfo_scan_after_rescan":true,"image_scan_after_rescan":true,"auto_download":null},"logging":{"level":"INFO","file":null,"max_bytes":null,"backup_count":3},"backup":{"enabled":false,"path":"data/backups","keep_days":30},"nfo":{"tmdb_api_key":null,"auto_create":true,"update_on_scan":true,"download_poster":true,"download_logo":true,"download_fanart":true,"image_size":"original"},"scan_key_overrides":{},"other":{"loading_complete":true,"master_password_hash":"$pbkdf2-sha256$29000$dm6NcU5JaU2p1dqbM2aMMQ$U4sJCHcdZe6kEYxBSqIoQ46pgtjyCt8N1flCTGj06tY","loading_started":true,"anime_directory":"/tmp/aniworld_test_anime"}}
${resp} = <Response [200]>
${resp}
${session}
${endpoint}
expected_status=${expected_status}
Sends a GET request on a previously created HTTP Session.
${resp}
${resp} = <Response [200]>
${resp}
/api/config
Perform an authenticated GET request and return the response.
Argument types are:
<class 'int'>
<class 'str'>
${response.status_code}
${expected_status}
Fails if objects are unequal after converting them to integers.
${resp}
200
Assert that the response status code matches the expected value.
${json} = {'name': 'AniworldTest', 'data_dir': 'data', 'scheduler': {'enabled': False, 'interval_minutes': 60, 'schedule_time': '03:00', 'schedule_days': ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'], 'auto...
${json}
${response.text}
Convert String to JSON object
${json}
${key}
Fails if ``key`` is not found from ``dictionary``.
name
${json}
${key}
Fails if ``key`` is not found from ``dictionary``.
data_dir
${json}
${key}
Fails if ``key`` is not found from ``dictionary``.
scheduler
${json}
${key}
Fails if ``key`` is not found from ``dictionary``.
logging
${json}
${key}
Fails if ``key`` is not found from ``dictionary``.
backup
${json}
${key}
Fails if ``key`` is not found from ``dictionary``.
nfo
${key}
@{keys}
${resp}
name
data_dir
scheduler
logging
backup
nfo
Assert that the JSON response contains all the specified top-level keys.
Deleting All Sessions
Removes all the session objects
Starting Browser process /home/lukas/miniconda3/lib/python3.13/site-packages/Browser/wrapper/index.js using at 127.0.0.1:50011
Retrieve the current configuration and verify its structure.
Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
${payload} = {'master_password': 'TestPass123!', 'anime_directory': '/tmp/aniworld_test_anime', 'name': 'AniworldTest', 'data_dir': 'data', 'scheduler_enabled': 'False', 'logging_level': 'INFO', 'backup_enabled': ...
${payload}
master_password=${SETUP_PASSWORD}
anime_directory=/tmp/aniworld_test_anime
name=AniworldTest
data_dir=data
scheduler_enabled=False
logging_level=INFO
backup_enabled=False
Creates and returns a dictionary based on the given ``items``.
POST Request : url=http://127.0.0.1:8765/api/auth/setup
path_url=/api/auth/setup
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '208', 'Content-Type': 'application/json'}
body=b'{"master_password": "TestPass123!", "anime_directory": "/tmp/aniworld_test_anime", "name": "AniworldTest", "data_dir": "data", "scheduler_enabled": "False", "logging_level": "INFO", "backup_enabled": "False"}'
POST Response : url=http://127.0.0.1:8765/api/auth/setup
status=400, reason=Bad Request
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '47', 'content-type': 'application/json'}
body={"detail":"Master password already configured"}
${resp} = <Response [400]>
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
${json} = {'detail': 'Master password already configured'}
${json}
${resp.text}
Convert String to JSON object
${detail} = ['Master password already configured']
${detail}
${json}
$.detail
Get Value From JSON using JSONPath
Setup failed with 400: ${detail}
Fails the test with the given message and optionally alters its tags.
${resp.status_code}
201
Fails if objects are unequal after converting them to integers.
Unexpected status ${resp.status_code} from /api/auth/setup
Fails the test with the given message and optionally alters its tags.
Configure the master password via the setup endpoint.
Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
GET Request : url=http://127.0.0.1:8765/api/auth/status
path_url=/api/auth/status
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'}
body=None
GET Response : url=http://127.0.0.1:8765/api/auth/status
status=200, reason=OK
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '41', 'content-type': 'application/json'}
body={"configured":true,"authenticated":false}
${resp} = <Response [200]>
${resp}
anon
/api/auth/status
expected_status=200
Sends a GET request on a previously created HTTP Session.
${json} = {'configured': True, 'authenticated': False}
${json}
${resp.text}
Convert String to JSON object
${configured} = [True]
${configured}
${json}
$.configured
Get Value From JSON using JSONPath
${configured_val} = True
${configured_val}
${configured}[0]
Returns the given values which can then be assigned to a variables.
${configured_val}
${configured} = True
${configured}
Check if the master password has already been configured.
Configure the master password via the setup endpoint.
${token}
Log in with the master password and return the JWT access token.
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
${token}
Log in with the master password and return the JWT access token.
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
Creating Session using : alias=auth, url=http://127.0.0.1:8765, headers={'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${TOKEN}'}
Create Session: create a HTTP session to a server
Create an authenticated HTTP session. Performs setup if needed, then logs in.
Skips setup/login if already authenticated (suite-level setup done).
Create Anonymous Session
AND
Setup Master Password
AND
Create Authenticated Session
Executes all the given keywords in a sequence.
${payload} = {'name': 'UpdatedAniworld', 'data_dir': 'data', 'scheduler': "{'enabled': False, 'schedule_time': '04:00', 'schedule_days': ['mon', 'tue']}", 'logging': "{'level': 'DEBUG', 'file': 'logs/test.log', 'm...
${payload}
name=UpdatedAniworld
data_dir=data
scheduler={'enabled': False, 'schedule_time': '04:00', 'schedule_days': ['mon', 'tue']}
logging={'level': 'DEBUG', 'file': 'logs/test.log', 'max_bytes': 1048576, 'backup_count': 5}
backup={'enabled': False}
nfo={'tmdb_api_key': '', 'auto_create': False, 'download_poster': False, 'download_logo': False, 'download_fanart': False}
other={'anime_directory': '/tmp/aniworld_test_anime'}
Creates and returns a dictionary based on the given ``items``.
PUT Request : url=http://127.0.0.1:8765/api/config
path_url=/api/config
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs', 'Content-Length': '461', 'Content-Type': 'application/json'}
body=b'{"name": "UpdatedAniworld", "data_dir": "data", "scheduler": "{\'enabled\': False, \'schedule_time\': \'04:00\', \'schedule_days\': [\'mon\', \'tue\']}", "logging": "{\'level\': \'DEBUG\', \'file\': \'logs/test.log\', \'max_bytes\': 1048576, \'backup_count\': 5}", "backup": "{\'enabled\': False}", "nfo": "{\'tmdb_api_key\': \'\', \'auto_create\': False, \'download_poster\': False, \'download_logo\': False, \'download_fanart\': False}", "other": "{\'anime_directory\': \'/tmp/aniworld_test_anime\'}"}'
PUT Response : url=http://127.0.0.1:8765/api/config
status=200, reason=OK
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '820', 'content-type': 'application/json'}
body={"name":"UpdatedAniworld","data_dir":"data","scheduler":{"enabled":false,"interval_minutes":60,"schedule_time":"04:00","schedule_days":["mon","tue"],"auto_download_after_rescan":false,"nfo_scan_after_rescan":true,"image_scan_after_rescan":true,"auto_download":null},"logging":{"level":"DEBUG","file":"logs/test.log","max_bytes":1048576,"backup_count":5},"backup":{"enabled":false,"path":"data/backups","keep_days":30},"nfo":{"tmdb_api_key":"","auto_create":false,"update_on_scan":false,"download_poster":false,"download_logo":false,"download_fanart":false,"image_size":"original"},"scan_key_overrides":{},"other":{"loading_complete":true,"master_password_hash":"$pbkdf2-sha256$29000$dm6NcU5JaU2p1dqbM2aMMQ$U4sJCHcdZe6kEYxBSqIoQ46pgtjyCt8N1flCTGj06tY","loading_started":true,"anime_directory":"/tmp/aniworld_test_anime"}}
${resp} = <Response [200]>
${resp}
${session}
${endpoint}
json=${payload}
expected_status=${expected_status}
Sends a PUT request on a previously created HTTP Session.
${resp}
${resp} = <Response [200]>
${resp}
/api/config
${payload}
Perform an authenticated PUT request with JSON payload.
${resp}
${resp} = <Response [200]>
${resp}
${payload}
PUT /api/config with the given payload.
Argument types are:
<class 'int'>
<class 'str'>
${response.status_code}
${expected_status}
Fails if objects are unequal after converting them to integers.
${resp}
200
Assert that the response status code matches the expected value.
GET Request : url=http://127.0.0.1:8765/api/config
path_url=/api/config
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs'}
body=None
GET Response : url=http://127.0.0.1:8765/api/config
status=200, reason=OK
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '820', 'content-type': 'application/json'}
body={"name":"UpdatedAniworld","data_dir":"data","scheduler":{"enabled":false,"interval_minutes":60,"schedule_time":"04:00","schedule_days":["mon","tue"],"auto_download_after_rescan":false,"nfo_scan_after_rescan":true,"image_scan_after_rescan":true,"auto_download":null},"logging":{"level":"DEBUG","file":"logs/test.log","max_bytes":1048576,"backup_count":5},"backup":{"enabled":false,"path":"data/backups","keep_days":30},"nfo":{"tmdb_api_key":"","auto_create":false,"update_on_scan":false,"download_poster":false,"download_logo":false,"download_fanart":false,"image_size":"original"},"scan_key_overrides":{},"other":{"loading_complete":true,"master_password_hash":"$pbkdf2-sha256$29000$dm6NcU5JaU2p1dqbM2aMMQ$U4sJCHcdZe6kEYxBSqIoQ46pgtjyCt8N1flCTGj06tY","loading_started":true,"anime_directory":"/tmp/aniworld_test_anime"}}
${resp} = <Response [200]>
${resp}
${session}
${endpoint}
expected_status=${expected_status}
Sends a GET request on a previously created HTTP Session.
${resp}
${resp} = <Response [200]>
${resp}
/api/config
Perform an authenticated GET request and return the response.
${json} = {'name': 'UpdatedAniworld', 'data_dir': 'data', 'scheduler': {'enabled': False, 'interval_minutes': 60, 'schedule_time': '04:00', 'schedule_days': ['mon', 'tue'], 'auto_download_after_rescan': False, ...
${json}
${resp.text}
Convert String to JSON object
${json}
${config} = {'name': 'UpdatedAniworld', 'data_dir': 'data', 'scheduler': {'enabled': False, 'interval_minutes': 60, 'schedule_time': '04:00', 'schedule_days': ['mon', 'tue'], 'auto_download_after_rescan': False, ...
${config}
GET /api/config and return the parsed JSON.
${config}[name]
UpdatedAniworld
Fails if objects are unequal after converting them to strings.
Deleting All Sessions
Removes all the session objects
Update configuration fields and verify they are persisted.
Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
${payload} = {'master_password': 'TestPass123!', 'anime_directory': '/tmp/aniworld_test_anime', 'name': 'AniworldTest', 'data_dir': 'data', 'scheduler_enabled': 'False', 'logging_level': 'INFO', 'backup_enabled': ...
${payload}
master_password=${SETUP_PASSWORD}
anime_directory=/tmp/aniworld_test_anime
name=AniworldTest
data_dir=data
scheduler_enabled=False
logging_level=INFO
backup_enabled=False
Creates and returns a dictionary based on the given ``items``.
POST Request : url=http://127.0.0.1:8765/api/auth/setup
path_url=/api/auth/setup
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '208', 'Content-Type': 'application/json'}
body=b'{"master_password": "TestPass123!", "anime_directory": "/tmp/aniworld_test_anime", "name": "AniworldTest", "data_dir": "data", "scheduler_enabled": "False", "logging_level": "INFO", "backup_enabled": "False"}'
POST Response : url=http://127.0.0.1:8765/api/auth/setup
status=400, reason=Bad Request
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '47', 'content-type': 'application/json'}
body={"detail":"Master password already configured"}
${resp} = <Response [400]>
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
${json} = {'detail': 'Master password already configured'}
${json}
${resp.text}
Convert String to JSON object
${detail} = ['Master password already configured']
${detail}
${json}
$.detail
Get Value From JSON using JSONPath
Setup failed with 400: ${detail}
Fails the test with the given message and optionally alters its tags.
${resp.status_code}
201
Fails if objects are unequal after converting them to integers.
Unexpected status ${resp.status_code} from /api/auth/setup
Fails the test with the given message and optionally alters its tags.
Configure the master password via the setup endpoint.
Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
GET Request : url=http://127.0.0.1:8765/api/auth/status
path_url=/api/auth/status
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'}
body=None
GET Response : url=http://127.0.0.1:8765/api/auth/status
status=200, reason=OK
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '41', 'content-type': 'application/json'}
body={"configured":true,"authenticated":false}
${resp} = <Response [200]>
${resp}
anon
/api/auth/status
expected_status=200
Sends a GET request on a previously created HTTP Session.
${json} = {'configured': True, 'authenticated': False}
${json}
${resp.text}
Convert String to JSON object
${configured} = [True]
${configured}
${json}
$.configured
Get Value From JSON using JSONPath
${configured_val} = True
${configured_val}
${configured}[0]
Returns the given values which can then be assigned to a variables.
${configured_val}
${configured} = True
${configured}
Check if the master password has already been configured.
Configure the master password via the setup endpoint.
${token}
Log in with the master password and return the JWT access token.
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
${token}
Log in with the master password and return the JWT access token.
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
Creating Session using : alias=auth, url=http://127.0.0.1:8765, headers={'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${TOKEN}'}
Create Session: create a HTTP session to a server
Create an authenticated HTTP session. Performs setup if needed, then logs in.
Skips setup/login if already authenticated (suite-level setup done).
Create Anonymous Session
AND
Setup Master Password
AND
Create Authenticated Session
Executes all the given keywords in a sequence.
${schedule_days} = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun']
${schedule_days}
mon
tue
wed
thu
fri
sat
sun
Returns a list containing given items.
${payload} = {'name': 'Aniworld', 'data_dir': 'data', 'scheduler': {'enabled': True, 'schedule_time': '03:00', 'schedule_days': ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun']}, 'logging': {'level': 'INFO', 'bac...
${payload}
json.loads('''{"name": "Aniworld", "data_dir": "data", "scheduler": {"enabled": true, "schedule_time": "03:00", "schedule_days": ["mon", "tue", "wed", "thu", "fri", "sat", "sun"]}, "logging": {"level": "INFO", "backup_count": 3}, "backup": {"enabled": false}, "nfo": {"tmdb_api_key": "", "auto_create": true, "download_poster": true, "download_logo": true, "download_fanart": true}, "other": {}}''')
modules=json
Evaluates the given expression in Python and returns the result.
${resp}
${session}
${endpoint}
expected_status=${expected_status}
Sends a POST request on a previously created HTTP Session.
POST Request : url=http://127.0.0.1:8765/api/config/validate
path_url=/api/config/validate
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs', 'Content-Length': '381', 'Content-Type': 'application/json'}
body=b'{"name": "Aniworld", "data_dir": "data", "scheduler": {"enabled": true, "schedule_time": "03:00", "schedule_days": ["mon", "tue", "wed", "thu", "fri", "sat", "sun"]}, "logging": {"level": "INFO", "backup_count": 3}, "backup": {"enabled": false}, "nfo": {"tmdb_api_key": "", "auto_create": true, "download_poster": true, "download_logo": true, "download_fanart": true}, "other": {}}'
POST Response : url=http://127.0.0.1:8765/api/config/validate
status=200, reason=OK
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '26', 'content-type': 'application/json'}
body={"valid":true,"errors":[]}
${resp} = <Response [200]>
${resp}
${session}
${endpoint}
json=${payload}
expected_status=${expected_status}
Sends a POST request on a previously created HTTP Session.
${resp}
${resp} = <Response [200]>
${resp}
/api/config/validate
${payload}
${expected_status}
Perform an authenticated POST request with optional JSON payload.
${resp}
${resp} = <Response [200]>
${resp}
${payload}
200
POST /api/config/validate with the given payload.
Argument types are:
<class 'int'>
<class 'str'>
${response.status_code}
${expected_status}
Fails if objects are unequal after converting them to integers.
${resp}
200
Assert that the response status code matches the expected value.
${json} = {'valid': True, 'errors': []}
${json}
${response.text}
Convert String to JSON object
${values} = [True]
${values}
${json}
${json_path}
Get Value From JSON using JSONPath
${value} = True
${value}
${values}[0]
Returns the given values which can then be assigned to a variables.
${value}
${valid} = True
${valid}
${resp}
$.valid
Extract a value from a JSON response using JSONPath.
Argument types are:
<class 'bool'>
<class 'str'>
${valid}
True
Fails if objects are unequal after converting them to strings.
Deleting All Sessions
Removes all the session objects
Validate a well-formed configuration.
Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
${payload} = {'master_password': 'TestPass123!', 'anime_directory': '/tmp/aniworld_test_anime', 'name': 'AniworldTest', 'data_dir': 'data', 'scheduler_enabled': 'False', 'logging_level': 'INFO', 'backup_enabled': ...
${payload}
master_password=${SETUP_PASSWORD}
anime_directory=/tmp/aniworld_test_anime
name=AniworldTest
data_dir=data
scheduler_enabled=False
logging_level=INFO
backup_enabled=False
Creates and returns a dictionary based on the given ``items``.
POST Request : url=http://127.0.0.1:8765/api/auth/setup
path_url=/api/auth/setup
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '208', 'Content-Type': 'application/json'}
body=b'{"master_password": "TestPass123!", "anime_directory": "/tmp/aniworld_test_anime", "name": "AniworldTest", "data_dir": "data", "scheduler_enabled": "False", "logging_level": "INFO", "backup_enabled": "False"}'
POST Response : url=http://127.0.0.1:8765/api/auth/setup
status=400, reason=Bad Request
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '47', 'content-type': 'application/json'}
body={"detail":"Master password already configured"}
${resp} = <Response [400]>
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
${json} = {'detail': 'Master password already configured'}
${json}
${resp.text}
Convert String to JSON object
${detail} = ['Master password already configured']
${detail}
${json}
$.detail
Get Value From JSON using JSONPath
Setup failed with 400: ${detail}
Fails the test with the given message and optionally alters its tags.
${resp.status_code}
201
Fails if objects are unequal after converting them to integers.
Unexpected status ${resp.status_code} from /api/auth/setup
Fails the test with the given message and optionally alters its tags.
Configure the master password via the setup endpoint.
Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
GET Request : url=http://127.0.0.1:8765/api/auth/status
path_url=/api/auth/status
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'}
body=None
GET Response : url=http://127.0.0.1:8765/api/auth/status
status=200, reason=OK
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '41', 'content-type': 'application/json'}
body={"configured":true,"authenticated":false}
${resp} = <Response [200]>
${resp}
anon
/api/auth/status
expected_status=200
Sends a GET request on a previously created HTTP Session.
${json} = {'configured': True, 'authenticated': False}
${json}
${resp.text}
Convert String to JSON object
${configured} = [True]
${configured}
${json}
$.configured
Get Value From JSON using JSONPath
${configured_val} = True
${configured_val}
${configured}[0]
Returns the given values which can then be assigned to a variables.
${configured_val}
${configured} = True
${configured}
Check if the master password has already been configured.
Configure the master password via the setup endpoint.
${token}
Log in with the master password and return the JWT access token.
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
${token}
Log in with the master password and return the JWT access token.
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
Creating Session using : alias=auth, url=http://127.0.0.1:8765, headers={'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${TOKEN}'}
Create Session: create a HTTP session to a server
Create an authenticated HTTP session. Performs setup if needed, then logs in.
Skips setup/login if already authenticated (suite-level setup done).
Create Anonymous Session
AND
Setup Master Password
AND
Create Authenticated Session
Executes all the given keywords in a sequence.
${payload} = {'data_dir': 'data', 'scheduler': "{'enabled': True, 'schedule_time': '03:00', 'schedule_days': ['mon']}", 'logging': "{'level': 'INFO'}", 'backup': "{'enabled': False}", 'nfo': "{'auto_create': False...
${payload}
data_dir=data
scheduler={'enabled': True, 'schedule_time': '03:00', 'schedule_days': ['mon']}
logging={'level': 'INFO'}
backup={'enabled': False}
nfo={'auto_create': False}
other={}
Creates and returns a dictionary based on the given ``items``.
${resp}
${session}
${endpoint}
expected_status=${expected_status}
Sends a POST request on a previously created HTTP Session.
POST Request : url=http://127.0.0.1:8765/api/config/validate
path_url=/api/config/validate
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs', 'Content-Length': '218', 'Content-Type': 'application/json'}
body=b'{"data_dir": "data", "scheduler": "{\'enabled\': True, \'schedule_time\': \'03:00\', \'schedule_days\': [\'mon\']}", "logging": "{\'level\': \'INFO\'}", "backup": "{\'enabled\': False}", "nfo": "{\'auto_create\': False}", "other": "{}"}'
POST Response : url=http://127.0.0.1:8765/api/config/validate
status=422, reason=Unprocessable Content
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '1128', 'content-type': 'application/json'}
body={"detail":[{"type":"model_attributes_type","loc":["body","scheduler"],"msg":"Input should be a valid dictionary or object to extract fields from","input":"{'enabled': True, 'schedule_time': '03:00', 'schedule_days': ['mon']}","url":"https://errors.pydantic.dev/2.12/v/model_attributes_type"},{"type":"model_attributes_type","loc":["body","logging"],"msg":"Input should be a valid dictionary or object to extract fields from","input":"{'level': 'INFO'}","url":"https://errors.pydantic.dev/2.12/v/model_attributes_type"},{"type":"model_attributes_type","loc":["body","backup"],"msg":"Input should be a valid dictionary or object to extract fields from","input":"{'enabled': False}","url":"https://errors.pydantic.dev/2.12/v/model_attributes_type"},{"type":"model_attributes_type","loc":["body","nfo"],"msg":"Input should be a valid dictionary or object to extract fields from","input":"{'auto_create': False}","url":"https://errors.pydantic.dev/2.12/v/model_attributes_type"},{"type":"dict_type","loc":["body","other"],"msg":"Input should be a valid dictionary","input":"{}","url":"https://errors.pydantic.dev/2.12/v/dict_type"}]}
${resp} = <Response [422]>
${resp}
${session}
${endpoint}
json=${payload}
expected_status=${expected_status}
Sends a POST request on a previously created HTTP Session.
${resp}
${resp} = <Response [422]>
${resp}
/api/config/validate
${payload}
${expected_status}
Perform an authenticated POST request with optional JSON payload.
${resp}
${resp} = <Response [422]>
${resp}
${payload}
422
POST /api/config/validate with the given payload.
Argument types are:
<class 'int'>
<class 'str'>
${response.status_code}
${expected_status}
Fails if objects are unequal after converting them to integers.
${resp}
422
Assert that the response status code matches the expected value.
Deleting All Sessions
Removes all the session objects
Validate a config missing the required 'name' field.
Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
${payload} = {'master_password': 'TestPass123!', 'anime_directory': '/tmp/aniworld_test_anime', 'name': 'AniworldTest', 'data_dir': 'data', 'scheduler_enabled': 'False', 'logging_level': 'INFO', 'backup_enabled': ...
${payload}
master_password=${SETUP_PASSWORD}
anime_directory=/tmp/aniworld_test_anime
name=AniworldTest
data_dir=data
scheduler_enabled=False
logging_level=INFO
backup_enabled=False
Creates and returns a dictionary based on the given ``items``.
POST Request : url=http://127.0.0.1:8765/api/auth/setup
path_url=/api/auth/setup
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '208', 'Content-Type': 'application/json'}
body=b'{"master_password": "TestPass123!", "anime_directory": "/tmp/aniworld_test_anime", "name": "AniworldTest", "data_dir": "data", "scheduler_enabled": "False", "logging_level": "INFO", "backup_enabled": "False"}'
POST Response : url=http://127.0.0.1:8765/api/auth/setup
status=400, reason=Bad Request
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '47', 'content-type': 'application/json'}
body={"detail":"Master password already configured"}
${resp} = <Response [400]>
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
${json} = {'detail': 'Master password already configured'}
${json}
${resp.text}
Convert String to JSON object
${detail} = ['Master password already configured']
${detail}
${json}
$.detail
Get Value From JSON using JSONPath
Setup failed with 400: ${detail}
Fails the test with the given message and optionally alters its tags.
${resp.status_code}
201
Fails if objects are unequal after converting them to integers.
Unexpected status ${resp.status_code} from /api/auth/setup
Fails the test with the given message and optionally alters its tags.
Configure the master password via the setup endpoint.
Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
GET Request : url=http://127.0.0.1:8765/api/auth/status
path_url=/api/auth/status
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'}
body=None
GET Response : url=http://127.0.0.1:8765/api/auth/status
status=200, reason=OK
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '41', 'content-type': 'application/json'}
body={"configured":true,"authenticated":false}
${resp} = <Response [200]>
${resp}
anon
/api/auth/status
expected_status=200
Sends a GET request on a previously created HTTP Session.
${json} = {'configured': True, 'authenticated': False}
${json}
${resp.text}
Convert String to JSON object
${configured} = [True]
${configured}
${json}
$.configured
Get Value From JSON using JSONPath
${configured_val} = True
${configured_val}
${configured}[0]
Returns the given values which can then be assigned to a variables.
${configured_val}
${configured} = True
${configured}
Check if the master password has already been configured.
Configure the master password via the setup endpoint.
${token}
Log in with the master password and return the JWT access token.
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
${token}
Log in with the master password and return the JWT access token.
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
Creating Session using : alias=auth, url=http://127.0.0.1:8765, headers={'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${TOKEN}'}
Create Session: create a HTTP session to a server
Create an authenticated HTTP session. Performs setup if needed, then logs in.
Skips setup/login if already authenticated (suite-level setup done).
Create Anonymous Session
AND
Setup Master Password
AND
Create Authenticated Session
Executes all the given keywords in a sequence.
${payload} = {'name': 'Aniworld', 'data_dir': 'data', 'scheduler': "{'enabled': True, 'schedule_time': '25:00', 'schedule_days': ['mon']}", 'logging': "{'level': 'INFO'}", 'backup': "{'enabled': False}", 'nfo': "{...
${payload}
name=Aniworld
data_dir=data
scheduler={'enabled': True, 'schedule_time': '25:00', 'schedule_days': ['mon']}
logging={'level': 'INFO'}
backup={'enabled': False}
nfo={'auto_create': False}
other={}
Creates and returns a dictionary based on the given ``items``.
${resp}
${session}
${endpoint}
expected_status=${expected_status}
Sends a POST request on a previously created HTTP Session.
POST Request : url=http://127.0.0.1:8765/api/config/validate
path_url=/api/config/validate
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs', 'Content-Length': '238', 'Content-Type': 'application/json'}
body=b'{"name": "Aniworld", "data_dir": "data", "scheduler": "{\'enabled\': True, \'schedule_time\': \'25:00\', \'schedule_days\': [\'mon\']}", "logging": "{\'level\': \'INFO\'}", "backup": "{\'enabled\': False}", "nfo": "{\'auto_create\': False}", "other": "{}"}'
POST Response : url=http://127.0.0.1:8765/api/config/validate
status=422, reason=Unprocessable Content
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '1128', 'content-type': 'application/json'}
body={"detail":[{"type":"model_attributes_type","loc":["body","scheduler"],"msg":"Input should be a valid dictionary or object to extract fields from","input":"{'enabled': True, 'schedule_time': '25:00', 'schedule_days': ['mon']}","url":"https://errors.pydantic.dev/2.12/v/model_attributes_type"},{"type":"model_attributes_type","loc":["body","logging"],"msg":"Input should be a valid dictionary or object to extract fields from","input":"{'level': 'INFO'}","url":"https://errors.pydantic.dev/2.12/v/model_attributes_type"},{"type":"model_attributes_type","loc":["body","backup"],"msg":"Input should be a valid dictionary or object to extract fields from","input":"{'enabled': False}","url":"https://errors.pydantic.dev/2.12/v/model_attributes_type"},{"type":"model_attributes_type","loc":["body","nfo"],"msg":"Input should be a valid dictionary or object to extract fields from","input":"{'auto_create': False}","url":"https://errors.pydantic.dev/2.12/v/model_attributes_type"},{"type":"dict_type","loc":["body","other"],"msg":"Input should be a valid dictionary","input":"{}","url":"https://errors.pydantic.dev/2.12/v/dict_type"}]}
${resp} = <Response [422]>
${resp}
${session}
${endpoint}
json=${payload}
expected_status=${expected_status}
Sends a POST request on a previously created HTTP Session.
${resp}
${resp} = <Response [422]>
${resp}
/api/config/validate
${payload}
${expected_status}
Perform an authenticated POST request with optional JSON payload.
${resp}
${resp} = <Response [422]>
${resp}
${payload}
422
POST /api/config/validate with the given payload.
Argument types are:
<class 'int'>
<class 'str'>
${response.status_code}
${expected_status}
Fails if objects are unequal after converting them to integers.
${resp}
422
Assert that the response status code matches the expected value.
Deleting All Sessions
Removes all the session objects
Validate a config with malformed schedule_time.
Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
${payload} = {'master_password': 'TestPass123!', 'anime_directory': '/tmp/aniworld_test_anime', 'name': 'AniworldTest', 'data_dir': 'data', 'scheduler_enabled': 'False', 'logging_level': 'INFO', 'backup_enabled': ...
${payload}
master_password=${SETUP_PASSWORD}
anime_directory=/tmp/aniworld_test_anime
name=AniworldTest
data_dir=data
scheduler_enabled=False
logging_level=INFO
backup_enabled=False
Creates and returns a dictionary based on the given ``items``.
POST Request : url=http://127.0.0.1:8765/api/auth/setup
path_url=/api/auth/setup
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '208', 'Content-Type': 'application/json'}
body=b'{"master_password": "TestPass123!", "anime_directory": "/tmp/aniworld_test_anime", "name": "AniworldTest", "data_dir": "data", "scheduler_enabled": "False", "logging_level": "INFO", "backup_enabled": "False"}'
POST Response : url=http://127.0.0.1:8765/api/auth/setup
status=400, reason=Bad Request
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '47', 'content-type': 'application/json'}
body={"detail":"Master password already configured"}
${resp} = <Response [400]>
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
${json} = {'detail': 'Master password already configured'}
${json}
${resp.text}
Convert String to JSON object
${detail} = ['Master password already configured']
${detail}
${json}
$.detail
Get Value From JSON using JSONPath
Setup failed with 400: ${detail}
Fails the test with the given message and optionally alters its tags.
${resp.status_code}
201
Fails if objects are unequal after converting them to integers.
Unexpected status ${resp.status_code} from /api/auth/setup
Fails the test with the given message and optionally alters its tags.
Configure the master password via the setup endpoint.
Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
GET Request : url=http://127.0.0.1:8765/api/auth/status
path_url=/api/auth/status
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'}
body=None
GET Response : url=http://127.0.0.1:8765/api/auth/status
status=200, reason=OK
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '41', 'content-type': 'application/json'}
body={"configured":true,"authenticated":false}
${resp} = <Response [200]>
${resp}
anon
/api/auth/status
expected_status=200
Sends a GET request on a previously created HTTP Session.
${json} = {'configured': True, 'authenticated': False}
${json}
${resp.text}
Convert String to JSON object
${configured} = [True]
${configured}
${json}
$.configured
Get Value From JSON using JSONPath
${configured_val} = True
${configured_val}
${configured}[0]
Returns the given values which can then be assigned to a variables.
${configured_val}
${configured} = True
${configured}
Check if the master password has already been configured.
Configure the master password via the setup endpoint.
${token}
Log in with the master password and return the JWT access token.
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
${token}
Log in with the master password and return the JWT access token.
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
Creating Session using : alias=auth, url=http://127.0.0.1:8765, headers={'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${TOKEN}'}
Create Session: create a HTTP session to a server
Create an authenticated HTTP session. Performs setup if needed, then logs in.
Skips setup/login if already authenticated (suite-level setup done).
Create Anonymous Session
AND
Setup Master Password
AND
Create Authenticated Session
Executes all the given keywords in a sequence.
${payload} = {'name': 'Aniworld', 'data_dir': 'data', 'scheduler': {'enabled': True, 'schedule_time': '03:00', 'schedule_days': ['mon']}, 'logging': {'level': 'INVALID', 'backup_count': 3}, 'backup': {'enabled': F...
${payload}
json.loads('''{"name": "Aniworld", "data_dir": "data", "scheduler": {"enabled": true, "schedule_time": "03:00", "schedule_days": ["mon"]}, "logging": {"level": "INVALID", "backup_count": 3}, "backup": {"enabled": false}, "nfo": {"auto_create": false}, "other": {}}''')
modules=json
Evaluates the given expression in Python and returns the result.
${resp}
${session}
${endpoint}
expected_status=${expected_status}
Sends a POST request on a previously created HTTP Session.
POST Request : url=http://127.0.0.1:8765/api/config/validate
path_url=/api/config/validate
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs', 'Content-Length': '250', 'Content-Type': 'application/json'}
body=b'{"name": "Aniworld", "data_dir": "data", "scheduler": {"enabled": true, "schedule_time": "03:00", "schedule_days": ["mon"]}, "logging": {"level": "INVALID", "backup_count": 3}, "backup": {"enabled": false}, "nfo": {"auto_create": false}, "other": {}}'
POST Response : url=http://127.0.0.1:8765/api/config/validate
status=422, reason=Unprocessable Content
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '212', 'content-type': 'application/json'}
body={"detail":[{"type":"value_error","loc":["body","logging","level"],"msg":"Value error, invalid logging level: INVALID","input":"INVALID","ctx":{"error":{}},"url":"https://errors.pydantic.dev/2.12/v/value_error"}]}
${resp} = <Response [422]>
${resp}
${session}
${endpoint}
json=${payload}
expected_status=${expected_status}
Sends a POST request on a previously created HTTP Session.
${resp}
${resp} = <Response [422]>
${resp}
/api/config/validate
${payload}
${expected_status}
Perform an authenticated POST request with optional JSON payload.
${resp}
${resp} = <Response [422]>
${resp}
${payload}
422
POST /api/config/validate with the given payload.
Argument types are:
<class 'int'>
<class 'str'>
${response.status_code}
${expected_status}
Fails if objects are unequal after converting them to integers.
${resp}
422
Assert that the response status code matches the expected value.
Deleting All Sessions
Removes all the session objects
Validate a config with an invalid logging level.
Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
${payload} = {'master_password': 'TestPass123!', 'anime_directory': '/tmp/aniworld_test_anime', 'name': 'AniworldTest', 'data_dir': 'data', 'scheduler_enabled': 'False', 'logging_level': 'INFO', 'backup_enabled': ...
${payload}
master_password=${SETUP_PASSWORD}
anime_directory=/tmp/aniworld_test_anime
name=AniworldTest
data_dir=data
scheduler_enabled=False
logging_level=INFO
backup_enabled=False
Creates and returns a dictionary based on the given ``items``.
POST Request : url=http://127.0.0.1:8765/api/auth/setup
path_url=/api/auth/setup
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '208', 'Content-Type': 'application/json'}
body=b'{"master_password": "TestPass123!", "anime_directory": "/tmp/aniworld_test_anime", "name": "AniworldTest", "data_dir": "data", "scheduler_enabled": "False", "logging_level": "INFO", "backup_enabled": "False"}'
POST Response : url=http://127.0.0.1:8765/api/auth/setup
status=400, reason=Bad Request
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '47', 'content-type': 'application/json'}
body={"detail":"Master password already configured"}
${resp} = <Response [400]>
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
${json} = {'detail': 'Master password already configured'}
${json}
${resp.text}
Convert String to JSON object
${detail} = ['Master password already configured']
${detail}
${json}
$.detail
Get Value From JSON using JSONPath
Setup failed with 400: ${detail}
Fails the test with the given message and optionally alters its tags.
${resp.status_code}
201
Fails if objects are unequal after converting them to integers.
Unexpected status ${resp.status_code} from /api/auth/setup
Fails the test with the given message and optionally alters its tags.
Configure the master password via the setup endpoint.
Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
GET Request : url=http://127.0.0.1:8765/api/auth/status
path_url=/api/auth/status
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'}
body=None
GET Response : url=http://127.0.0.1:8765/api/auth/status
status=200, reason=OK
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '41', 'content-type': 'application/json'}
body={"configured":true,"authenticated":false}
${resp} = <Response [200]>
${resp}
anon
/api/auth/status
expected_status=200
Sends a GET request on a previously created HTTP Session.
${json} = {'configured': True, 'authenticated': False}
${json}
${resp.text}
Convert String to JSON object
${configured} = [True]
${configured}
${json}
$.configured
Get Value From JSON using JSONPath
${configured_val} = True
${configured_val}
${configured}[0]
Returns the given values which can then be assigned to a variables.
${configured_val}
${configured} = True
${configured}
Check if the master password has already been configured.
Configure the master password via the setup endpoint.
${token}
Log in with the master password and return the JWT access token.
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
${token}
Log in with the master password and return the JWT access token.
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
Creating Session using : alias=auth, url=http://127.0.0.1:8765, headers={'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${TOKEN}'}
Create Session: create a HTTP session to a server
Create an authenticated HTTP session. Performs setup if needed, then logs in.
Skips setup/login if already authenticated (suite-level setup done).
Create Anonymous Session
AND
Setup Master Password
AND
Create Authenticated Session
Executes all the given keywords in a sequence.
POST Request : url=http://127.0.0.1:8765/api/config/backups
path_url=/api/config/backups
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs', 'Content-Length': '0'}
body=None
POST Response : url=http://127.0.0.1:8765/api/config/backups
status=201, reason=Created
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '85', 'content-type': 'application/json'}
body={"name":"config_backup_20260627_135523.json","message":"Backup created successfully"}
${resp} = <Response [201]>
${resp}
${session}
${endpoint}
expected_status=${expected_status}
Sends a POST request on a previously created HTTP Session.
${resp}
${session}
${endpoint}
json=${payload}
expected_status=${expected_status}
Sends a POST request on a previously created HTTP Session.
${resp}
${resp} = <Response [201]>
${resp}
/api/config/backups
expected_status=201
Perform an authenticated POST request with optional JSON payload.
Argument types are:
<class 'int'>
<class 'str'>
${response.status_code}
${expected_status}
Fails if objects are unequal after converting them to integers.
${resp}
201
Assert that the response status code matches the expected value.
Deleting All Sessions
Removes all the session objects
Create a configuration backup and verify it exists.
Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
${payload} = {'master_password': 'TestPass123!', 'anime_directory': '/tmp/aniworld_test_anime', 'name': 'AniworldTest', 'data_dir': 'data', 'scheduler_enabled': 'False', 'logging_level': 'INFO', 'backup_enabled': ...
${payload}
master_password=${SETUP_PASSWORD}
anime_directory=/tmp/aniworld_test_anime
name=AniworldTest
data_dir=data
scheduler_enabled=False
logging_level=INFO
backup_enabled=False
Creates and returns a dictionary based on the given ``items``.
POST Request : url=http://127.0.0.1:8765/api/auth/setup
path_url=/api/auth/setup
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '208', 'Content-Type': 'application/json'}
body=b'{"master_password": "TestPass123!", "anime_directory": "/tmp/aniworld_test_anime", "name": "AniworldTest", "data_dir": "data", "scheduler_enabled": "False", "logging_level": "INFO", "backup_enabled": "False"}'
POST Response : url=http://127.0.0.1:8765/api/auth/setup
status=400, reason=Bad Request
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '47', 'content-type': 'application/json'}
body={"detail":"Master password already configured"}
${resp} = <Response [400]>
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
${json} = {'detail': 'Master password already configured'}
${json}
${resp.text}
Convert String to JSON object
${detail} = ['Master password already configured']
${detail}
${json}
$.detail
Get Value From JSON using JSONPath
Setup failed with 400: ${detail}
Fails the test with the given message and optionally alters its tags.
${resp.status_code}
201
Fails if objects are unequal after converting them to integers.
Unexpected status ${resp.status_code} from /api/auth/setup
Fails the test with the given message and optionally alters its tags.
Configure the master password via the setup endpoint.
Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
GET Request : url=http://127.0.0.1:8765/api/auth/status
path_url=/api/auth/status
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'}
body=None
GET Response : url=http://127.0.0.1:8765/api/auth/status
status=200, reason=OK
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '41', 'content-type': 'application/json'}
body={"configured":true,"authenticated":false}
${resp} = <Response [200]>
${resp}
anon
/api/auth/status
expected_status=200
Sends a GET request on a previously created HTTP Session.
${json} = {'configured': True, 'authenticated': False}
${json}
${resp.text}
Convert String to JSON object
${configured} = [True]
${configured}
${json}
$.configured
Get Value From JSON using JSONPath
${configured_val} = True
${configured_val}
${configured}[0]
Returns the given values which can then be assigned to a variables.
${configured_val}
${configured} = True
${configured}
Check if the master password has already been configured.
Configure the master password via the setup endpoint.
${token}
Log in with the master password and return the JWT access token.
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
${token}
Log in with the master password and return the JWT access token.
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
Creating Session using : alias=auth, url=http://127.0.0.1:8765, headers={'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${TOKEN}'}
Create Session: create a HTTP session to a server
Create an authenticated HTTP session. Performs setup if needed, then logs in.
Skips setup/login if already authenticated (suite-level setup done).
Create Anonymous Session
AND
Setup Master Password
AND
Create Authenticated Session
Executes all the given keywords in a sequence.
POST Request : url=http://127.0.0.1:8765/api/config/backups
path_url=/api/config/backups
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs', 'Content-Length': '0'}
body=None
POST Response : url=http://127.0.0.1:8765/api/config/backups
status=201, reason=Created
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '85', 'content-type': 'application/json'}
body={"name":"config_backup_20260627_135523.json","message":"Backup created successfully"}
${resp} = <Response [201]>
${resp}
${session}
${endpoint}
expected_status=${expected_status}
Sends a POST request on a previously created HTTP Session.
${resp}
${session}
${endpoint}
json=${payload}
expected_status=${expected_status}
Sends a POST request on a previously created HTTP Session.
${resp}
/api/config/backups
expected_status=201
Perform an authenticated POST request with optional JSON payload.
GET Request : url=http://127.0.0.1:8765/api/config/backups
path_url=/api/config/backups
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs'}
body=None
GET Response : url=http://127.0.0.1:8765/api/config/backups
status=200, reason=OK
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '1054', 'content-type': 'application/json'}
body={"backups":[{"name":"config_backup_20260627_135523.json","size_bytes":1038,"created_at":"2026-06-27T13:55:23.370415"},{"name":"pre_restore.json","size_bytes":1006,"created_at":"2026-06-27T13:54:18.929110"},{"name":"config_backup_20260627_135413.json","size_bytes":1082,"created_at":"2026-06-27T13:54:13.524603"},{"name":"config_backup_20260627_135334.json","size_bytes":1082,"created_at":"2026-06-27T13:53:33.987485"},{"name":"config_backup_20260627_135300.json","size_bytes":1005,"created_at":"2026-06-27T13:52:52.824097"},{"name":"config_backup_20260627_135224.json","size_bytes":1005,"created_at":"2026-06-27T13:52:24.663837"},{"name":"config_backup_20260627_135252.json","size_bytes":1005,"created_at":"2026-06-27T13:52:24.663837"},{"name":"config_backup_20260627_135150.json","size_bytes":1005,"created_at":"2026-06-27T13:51:50.613557"},{"name":"config_backup_20260627_135110.json","size_bytes":848,"created_at":"2026-06-27T13:50:57.578964"},{"name":"config_backup_20260627_134732.json","size_bytes":1082,"created_at":"2026-06-27T13:37:13.232168"}]}
${resp} = <Response [200]>
${resp}
${session}
${endpoint}
expected_status=${expected_status}
Sends a GET request on a previously created HTTP Session.
${resp}
${resp} = <Response [200]>
${resp}
/api/config/backups
Perform an authenticated GET request and return the response.
Argument types are:
<class 'int'>
<class 'str'>
${response.status_code}
${expected_status}
Fails if objects are unequal after converting them to integers.
${resp}
200
Assert that the response status code matches the expected value.
${json} = {'backups': [{'name': 'config_backup_20260627_135523.json', 'size_bytes': 1038, 'created_at': '2026-06-27T13:55:23.370415'}, {'name': 'pre_restore.json', 'size_bytes': 1006, 'created_at': '2026-06-27T...
${json}
${response.text}
Convert String to JSON object
${values} = [[{'name': 'config_backup_20260627_135523.json', 'size_bytes': 1038, 'created_at': '2026-06-27T13:55:23.370415'}, {'name': 'pre_restore.json', 'size_bytes': 1006, 'created_at': '2026-06-27T13:54:18.92...
${values}
${json}
${json_path}
Get Value From JSON using JSONPath
Length is 1.
${values}
Expected JSON path '${json_path}' not found in response
Verifies that the given item is not empty.
${resp}
$.backups
Assert that the JSON response contains the given JSONPath key.
Deleting All Sessions
Removes all the session objects
List configuration backups and verify the response structure.
Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
${payload} = {'master_password': 'TestPass123!', 'anime_directory': '/tmp/aniworld_test_anime', 'name': 'AniworldTest', 'data_dir': 'data', 'scheduler_enabled': 'False', 'logging_level': 'INFO', 'backup_enabled': ...
${payload}
master_password=${SETUP_PASSWORD}
anime_directory=/tmp/aniworld_test_anime
name=AniworldTest
data_dir=data
scheduler_enabled=False
logging_level=INFO
backup_enabled=False
Creates and returns a dictionary based on the given ``items``.
POST Request : url=http://127.0.0.1:8765/api/auth/setup
path_url=/api/auth/setup
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '208', 'Content-Type': 'application/json'}
body=b'{"master_password": "TestPass123!", "anime_directory": "/tmp/aniworld_test_anime", "name": "AniworldTest", "data_dir": "data", "scheduler_enabled": "False", "logging_level": "INFO", "backup_enabled": "False"}'
POST Response : url=http://127.0.0.1:8765/api/auth/setup
status=400, reason=Bad Request
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '47', 'content-type': 'application/json'}
body={"detail":"Master password already configured"}
${resp} = <Response [400]>
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
${json} = {'detail': 'Master password already configured'}
${json}
${resp.text}
Convert String to JSON object
${detail} = ['Master password already configured']
${detail}
${json}
$.detail
Get Value From JSON using JSONPath
Setup failed with 400: ${detail}
Fails the test with the given message and optionally alters its tags.
${resp.status_code}
201
Fails if objects are unequal after converting them to integers.
Unexpected status ${resp.status_code} from /api/auth/setup
Fails the test with the given message and optionally alters its tags.
Configure the master password via the setup endpoint.
Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
GET Request : url=http://127.0.0.1:8765/api/auth/status
path_url=/api/auth/status
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'}
body=None
GET Response : url=http://127.0.0.1:8765/api/auth/status
status=200, reason=OK
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '41', 'content-type': 'application/json'}
body={"configured":true,"authenticated":false}
${resp} = <Response [200]>
${resp}
anon
/api/auth/status
expected_status=200
Sends a GET request on a previously created HTTP Session.
${json} = {'configured': True, 'authenticated': False}
${json}
${resp.text}
Convert String to JSON object
${configured} = [True]
${configured}
${json}
$.configured
Get Value From JSON using JSONPath
${configured_val} = True
${configured_val}
${configured}[0]
Returns the given values which can then be assigned to a variables.
${configured_val}
${configured} = True
${configured}
Check if the master password has already been configured.
Configure the master password via the setup endpoint.
${token}
Log in with the master password and return the JWT access token.
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
${token}
Log in with the master password and return the JWT access token.
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
Creating Session using : alias=auth, url=http://127.0.0.1:8765, headers={'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${TOKEN}'}
Create Session: create a HTTP session to a server
Create an authenticated HTTP session. Performs setup if needed, then logs in.
Skips setup/login if already authenticated (suite-level setup done).
Create Anonymous Session
AND
Setup Master Password
AND
Create Authenticated Session
Executes all the given keywords in a sequence.
POST Request : url=http://127.0.0.1:8765/api/config/backups
path_url=/api/config/backups
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs', 'Content-Length': '0'}
body=None
POST Response : url=http://127.0.0.1:8765/api/config/backups
status=201, reason=Created
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '85', 'content-type': 'application/json'}
body={"name":"config_backup_20260627_135523.json","message":"Backup created successfully"}
${resp} = <Response [201]>
${resp}
${session}
${endpoint}
expected_status=${expected_status}
Sends a POST request on a previously created HTTP Session.
${resp}
${session}
${endpoint}
json=${payload}
expected_status=${expected_status}
Sends a POST request on a previously created HTTP Session.
${resp}
${resp} = <Response [201]>
${resp}
/api/config/backups
expected_status=201
Perform an authenticated POST request with optional JSON payload.
${json} = {'name': 'config_backup_20260627_135523.json', 'message': 'Backup created successfully'}
${json}
${resp.text}
Convert String to JSON object
${backup_name} = ['config_backup_20260627_135523.json']
${backup_name}
${json}
$.name
Get Value From JSON using JSONPath
${name_before} = config_backup_20260627_135523.json
${name_before}
${backup_name}[0]
Returns the given values which can then be assigned to a variables.
${scheduler} = {'enabled': False, 'schedule_time': '03:00', 'schedule_days': ['mon']}
${scheduler}
{'enabled': False, 'schedule_time': '03:00', 'schedule_days': ['mon']}
Evaluates the given expression in Python and returns the result.
${logging} = {'level': 'INFO', 'file': None, 'max_bytes': None, 'backup_count': 3}
${logging}
{'level': 'INFO', 'file': None, 'max_bytes': None, 'backup_count': 3}
Evaluates the given expression in Python and returns the result.
${backup} = {'enabled': False}
${backup}
{'enabled': False}
Evaluates the given expression in Python and returns the result.
${nfo} = {'auto_create': False}
${nfo}
{'auto_create': False}
Evaluates the given expression in Python and returns the result.
${other} = {}
${other}
{}
Evaluates the given expression in Python and returns the result.
${payload} = {'name': 'BeforeRestore', 'data_dir': 'data', 'scheduler': {'enabled': False, 'schedule_time': '03:00', 'schedule_days': ['mon']}, 'logging': {'level': 'INFO', 'file': None, 'max_bytes': None, 'backup...
${payload}
name=BeforeRestore
data_dir=data
scheduler=${scheduler}
logging=${logging}
backup=${backup}
nfo=${nfo}
other=${other}
Creates and returns a dictionary based on the given ``items``.
PUT Request : url=http://127.0.0.1:8765/api/config
path_url=/api/config
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs', 'Content-Length': '286', 'Content-Type': 'application/json'}
body=b'{"name": "BeforeRestore", "data_dir": "data", "scheduler": {"enabled": false, "schedule_time": "03:00", "schedule_days": ["mon"]}, "logging": {"level": "INFO", "file": null, "max_bytes": null, "backup_count": 3}, "backup": {"enabled": false}, "nfo": {"auto_create": false}, "other": {}}'
PUT Response : url=http://127.0.0.1:8765/api/config
status=200, reason=OK
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '796', 'content-type': 'application/json'}
body={"name":"BeforeRestore","data_dir":"data","scheduler":{"enabled":false,"interval_minutes":60,"schedule_time":"03:00","schedule_days":["mon"],"auto_download_after_rescan":false,"nfo_scan_after_rescan":true,"image_scan_after_rescan":true,"auto_download":null},"logging":{"level":"INFO","file":null,"max_bytes":null,"backup_count":3},"backup":{"enabled":false,"path":"data/backups","keep_days":30},"nfo":{"tmdb_api_key":null,"auto_create":false,"update_on_scan":false,"download_poster":true,"download_logo":true,"download_fanart":true,"image_size":"original"},"scan_key_overrides":{},"other":{"loading_complete":true,"master_password_hash":"$pbkdf2-sha256$29000$dm6NcU5JaU2p1dqbM2aMMQ$U4sJCHcdZe6kEYxBSqIoQ46pgtjyCt8N1flCTGj06tY","loading_started":true,"anime_directory":"/tmp/aniworld_test_anime"}}
${resp} = <Response [200]>
${resp}
${session}
${endpoint}
json=${payload}
expected_status=${expected_status}
Sends a PUT request on a previously created HTTP Session.
${resp}
${resp} = <Response [200]>
${resp}
/api/config
${payload}
Perform an authenticated PUT request with JSON payload.
${resp}
${payload}
PUT /api/config with the given payload.
POST Request : url=http://127.0.0.1:8765/api/config/backups/config_backup_20260627_135523.json/restore
path_url=/api/config/backups/config_backup_20260627_135523.json/restore
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs', 'Content-Length': '0'}
body=None
POST Response : url=http://127.0.0.1:8765/api/config/backups/config_backup_20260627_135523.json/restore
status=200, reason=OK
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '820', 'content-type': 'application/json'}
body={"name":"UpdatedAniworld","data_dir":"data","scheduler":{"enabled":false,"interval_minutes":60,"schedule_time":"04:00","schedule_days":["mon","tue"],"auto_download_after_rescan":false,"nfo_scan_after_rescan":true,"image_scan_after_rescan":true,"auto_download":null},"logging":{"level":"DEBUG","file":"logs/test.log","max_bytes":1048576,"backup_count":5},"backup":{"enabled":false,"path":"data/backups","keep_days":30},"nfo":{"tmdb_api_key":"","auto_create":false,"update_on_scan":false,"download_poster":false,"download_logo":false,"download_fanart":false,"image_size":"original"},"scan_key_overrides":{},"other":{"loading_complete":true,"master_password_hash":"$pbkdf2-sha256$29000$dm6NcU5JaU2p1dqbM2aMMQ$U4sJCHcdZe6kEYxBSqIoQ46pgtjyCt8N1flCTGj06tY","loading_started":true,"anime_directory":"/tmp/aniworld_test_anime"}}
${resp} = <Response [200]>
${resp}
${session}
${endpoint}
expected_status=${expected_status}
Sends a POST request on a previously created HTTP Session.
${resp}
${session}
${endpoint}
json=${payload}
expected_status=${expected_status}
Sends a POST request on a previously created HTTP Session.
${resp}
${resp} = <Response [200]>
${resp}
/api/config/backups/${name_before}/restore
Perform an authenticated POST request with optional JSON payload.
Argument types are:
<class 'int'>
<class 'str'>
${response.status_code}
${expected_status}
Fails if objects are unequal after converting them to integers.
${resp}
200
Assert that the response status code matches the expected value.
Deleting All Sessions
Removes all the session objects
Create a backup, change config, then restore and verify reversion.
Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
${payload} = {'master_password': 'TestPass123!', 'anime_directory': '/tmp/aniworld_test_anime', 'name': 'AniworldTest', 'data_dir': 'data', 'scheduler_enabled': 'False', 'logging_level': 'INFO', 'backup_enabled': ...
${payload}
master_password=${SETUP_PASSWORD}
anime_directory=/tmp/aniworld_test_anime
name=AniworldTest
data_dir=data
scheduler_enabled=False
logging_level=INFO
backup_enabled=False
Creates and returns a dictionary based on the given ``items``.
POST Request : url=http://127.0.0.1:8765/api/auth/setup
path_url=/api/auth/setup
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '208', 'Content-Type': 'application/json'}
body=b'{"master_password": "TestPass123!", "anime_directory": "/tmp/aniworld_test_anime", "name": "AniworldTest", "data_dir": "data", "scheduler_enabled": "False", "logging_level": "INFO", "backup_enabled": "False"}'
POST Response : url=http://127.0.0.1:8765/api/auth/setup
status=400, reason=Bad Request
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '47', 'content-type': 'application/json'}
body={"detail":"Master password already configured"}
${resp} = <Response [400]>
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
45s
Pauses the test executed for the given time.
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
${json} = {'detail': 'Master password already configured'}
${json}
${resp.text}
Convert String to JSON object
${detail} = ['Master password already configured']
${detail}
${json}
$.detail
Get Value From JSON using JSONPath
Setup failed with 400: ${detail}
Fails the test with the given message and optionally alters its tags.
${resp.status_code}
201
Fails if objects are unequal after converting them to integers.
Unexpected status ${resp.status_code} from /api/auth/setup
Fails the test with the given message and optionally alters its tags.
Configure the master password via the setup endpoint.
Creating Session using : alias=anon, url=http://127.0.0.1:8765, headers={}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
anon
${BASE_URL}
Create Session: create a HTTP session to a server
Create an unauthenticated HTTP session.
GET Request : url=http://127.0.0.1:8765/api/auth/status
path_url=/api/auth/status
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'}
body=None
GET Response : url=http://127.0.0.1:8765/api/auth/status
status=200, reason=OK
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '41', 'content-type': 'application/json'}
body={"configured":true,"authenticated":false}
${resp} = <Response [200]>
${resp}
anon
/api/auth/status
expected_status=200
Sends a GET request on a previously created HTTP Session.
${json} = {'configured': True, 'authenticated': False}
${json}
${resp.text}
Convert String to JSON object
${configured} = [True]
${configured}
${json}
$.configured
Get Value From JSON using JSONPath
${configured_val} = True
${configured_val}
${configured}[0]
Returns the given values which can then be assigned to a variables.
${configured_val}
${configured} = True
${configured}
Check if the master password has already been configured.
Configure the master password via the setup endpoint.
${token}
Log in with the master password and return the JWT access token.
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
${token}
Log in with the master password and return the JWT access token.
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
Creating Session using : alias=auth, url=http://127.0.0.1:8765, headers={'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs'}, cookies={}, auth=None, timeout=None, proxies=None, verify=False, debug=0
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${TOKEN}'}
Create Session: create a HTTP session to a server
Create an authenticated HTTP session. Performs setup if needed, then logs in.
Skips setup/login if already authenticated (suite-level setup done).
Create Anonymous Session
AND
Setup Master Password
AND
Create Authenticated Session
Executes all the given keywords in a sequence.
POST Request : url=http://127.0.0.1:8765/api/config/backups
path_url=/api/config/backups
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs', 'Content-Length': '0'}
body=None
POST Response : url=http://127.0.0.1:8765/api/config/backups
status=201, reason=Created
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '85', 'content-type': 'application/json'}
body={"name":"config_backup_20260627_135523.json","message":"Backup created successfully"}
${resp} = <Response [201]>
${resp}
${session}
${endpoint}
expected_status=${expected_status}
Sends a POST request on a previously created HTTP Session.
${resp}
${session}
${endpoint}
json=${payload}
expected_status=${expected_status}
Sends a POST request on a previously created HTTP Session.
${resp}
${resp} = <Response [201]>
${resp}
/api/config/backups
expected_status=201
Perform an authenticated POST request with optional JSON payload.
${json} = {'name': 'config_backup_20260627_135523.json', 'message': 'Backup created successfully'}
${json}
${resp.text}
Convert String to JSON object
${backup_name} = ['config_backup_20260627_135523.json']
${backup_name}
${json}
$.name
Get Value From JSON using JSONPath
${name} = config_backup_20260627_135523.json
${name}
${backup_name}[0]
Returns the given values which can then be assigned to a variables.
DELETE Request : url=http://127.0.0.1:8765/api/config/backups/config_backup_20260627_135523.json
path_url=/api/config/backups/config_backup_20260627_135523.json
headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYXN0ZXIiLCJleHAiOjE3ODI2NDc3MjIsImlhdCI6MTc4MjU2MTMyMn0.--vlbTAAA2hgaD0fZcM-E01gJMfeZI9wU6wqkY3O9Fs', 'Content-Length': '0'}
body=None
DELETE Response : url=http://127.0.0.1:8765/api/config/backups/config_backup_20260627_135523.json
status=200, reason=OK
headers={'date': 'Sat, 27 Jun 2026 11:55:22 GMT', 'server': 'uvicorn', 'content-length': '78', 'content-type': 'application/json'}
body={"message":"Backup 'config_backup_20260627_135523.json' deleted successfully"}
${resp} = <Response [200]>
${resp}
${session}
${endpoint}
expected_status=${expected_status}
Sends a DELETE request on a previously created HTTP Session.
${resp}
${del_resp} = <Response [200]>
${del_resp}
/api/config/backups/${name}
Perform an authenticated DELETE request.
Argument types are:
<class 'int'>
<class 'str'>
${response.status_code}
${expected_status}
Fails if objects are unequal after converting them to integers.
${del_resp}
200
Assert that the response status code matches the expected value.
Deleting All Sessions
Removes all the session objects
Create a backup and then delete it.
Configuration API tests for Aniworld.
Covers get, update, validate, backup create/list/restore/delete, and export/import.
All Tests
Config