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 13:40:14 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 13:40:14 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=401, reason=Unauthorized
headers={'date': 'Sat, 27 Jun 2026 13:40:14 GMT', 'server': 'uvicorn', 'content-length': '32', 'content-type': 'application/json'}
body={"detail":"invalid credentials"}
${resp} = <Response [401]>
${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} = {'detail': 'invalid credentials'}
${json}
${resp.text}
Convert String to JSON object
${detail} = ['invalid credentials']
${detail}
${json}
$.detail
Get Value From JSON using JSONPath
${detail_val} = invalid credentials
${detail_val}
${detail}[0]
Returns the given values which can then be assigned to a variables.
Login failed with 401: invalid credentials
Login failed with ${resp.status_code}: ${detail_val}
Fails the test with the given message and optionally alters its tags.
Login failed with 401: invalid credentials
Login failed with 401: invalid credentials
Login failed with 401: invalid credentials
${json}
${resp.text}
Convert String to JSON object
${token}
${json}
$.access_token
Get Value From JSON using JSONPath
${token_str}
${token}[0]
Returns the given values which can then be assigned to a variables.
${TOKEN}
${token_str}
Makes a variable available everywhere within the scope of the current suite.
${token_str}
${token}
Log in with the master password and return the JWT access token.
Login failed with 401: invalid credentials
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
Login failed with 401: invalid credentials
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${TOKEN}'}
Create Session: create a HTTP session to a server
Login failed with 401: invalid credentials
Create an authenticated HTTP session. Performs setup if needed, then logs in.
Skips setup/login if already authenticated (suite-level setup done).
Login failed with 401: invalid credentials
Create Anonymous Session
AND
Setup Master Password
AND
Create Authenticated Session
Executes all the given keywords in a sequence.
Login failed with 401: invalid credentials
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:53873
Retrieve the current scheduler configuration and runtime status.
Setup failed:
Login failed with 401: invalid credentials
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 13:40:14 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 13:40:14 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=429, reason=Too Many Requests
headers={'date': 'Sat, 27 Jun 2026 13:40:14 GMT', 'server': 'uvicorn', 'content-length': '62', 'content-type': 'application/json'}
body={"detail":"Too many failed attempts - temporarily locked out"}
${resp} = <Response [429]>
${resp}
anon
/api/auth/login
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
Slept 6 seconds.
6s
Pauses the test executed for the given time.
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=429, reason=Too Many Requests
headers={'date': 'Sat, 27 Jun 2026 13:40:20 GMT', 'server': 'uvicorn', 'content-length': '62', 'content-type': 'application/json'}
body={"detail":"Too many failed attempts - temporarily locked out"}
${resp} = <Response [429]>
${resp}
anon
/api/auth/login
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
${json} = {'detail': 'Too many failed attempts - temporarily locked out'}
${json}
${resp.text}
Convert String to JSON object
${detail} = ['Too many failed attempts - temporarily locked out']
${detail}
${json}
$.detail
Get Value From JSON using JSONPath
${detail_val} = Too many failed attempts - temporarily locked out
${detail_val}
${detail}[0]
Returns the given values which can then be assigned to a variables.
Login failed with 429: Too many failed attempts - temporarily locked out
Login failed with ${resp.status_code}: ${detail_val}
Fails the test with the given message and optionally alters its tags.
Login failed with 429: Too many failed attempts - temporarily locked out
Login failed with 429: Too many failed attempts - temporarily locked out
Login failed with 429: Too many failed attempts - temporarily locked out
${json}
${resp.text}
Convert String to JSON object
${token}
${json}
$.access_token
Get Value From JSON using JSONPath
${token_str}
${token}[0]
Returns the given values which can then be assigned to a variables.
${TOKEN}
${token_str}
Makes a variable available everywhere within the scope of the current suite.
${token_str}
${token}
Log in with the master password and return the JWT access token.
Login failed with 429: Too many failed attempts - temporarily locked out
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
Login failed with 429: Too many failed attempts - temporarily locked out
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${TOKEN}'}
Create Session: create a HTTP session to a server
Login failed with 429: Too many failed attempts - temporarily locked out
Create an authenticated HTTP session. Performs setup if needed, then logs in.
Skips setup/login if already authenticated (suite-level setup done).
Login failed with 429: Too many failed attempts - temporarily locked out
Create Anonymous Session
AND
Setup Master Password
AND
Create Authenticated Session
Executes all the given keywords in a sequence.
Login failed with 429: Too many failed attempts - temporarily locked out
Deleting All Sessions
Removes all the session objects
Update scheduler settings and verify they are persisted.
Setup failed:
Login failed with 429: Too many failed attempts - temporarily locked out
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=429, reason=Too Many Requests
headers={'date': 'Sat, 27 Jun 2026 13:40:20 GMT', 'server': 'uvicorn', 'content-length': '74', 'content-type': 'application/json'}
body={"detail":"Too many authentication attempts, try again later. IP lockout"}
${resp} = <Response [429]>
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
Slept 45 seconds.
45s
Pauses the test executed for the given time.
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=429, reason=Too Many Requests
headers={'date': 'Sat, 27 Jun 2026 13:41:05 GMT', 'server': 'uvicorn', 'content-length': '74', 'content-type': 'application/json'}
body={"detail":"Too many authentication attempts, try again later. IP lockout"}
${resp} = <Response [429]>
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
Slept 45 seconds.
45s
Pauses the test executed for the given time.
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 13:41:51 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.
${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 13:41:51 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=429, reason=Too Many Requests
headers={'date': 'Sat, 27 Jun 2026 13:41:51 GMT', 'server': 'uvicorn', 'content-length': '62', 'content-type': 'application/json'}
body={"detail":"Too many failed attempts - temporarily locked out"}
${resp} = <Response [429]>
${resp}
anon
/api/auth/login
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
Slept 6 seconds.
6s
Pauses the test executed for the given time.
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=429, reason=Too Many Requests
headers={'date': 'Sat, 27 Jun 2026 13:41:57 GMT', 'server': 'uvicorn', 'content-length': '62', 'content-type': 'application/json'}
body={"detail":"Too many failed attempts - temporarily locked out"}
${resp} = <Response [429]>
${resp}
anon
/api/auth/login
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
${json} = {'detail': 'Too many failed attempts - temporarily locked out'}
${json}
${resp.text}
Convert String to JSON object
${detail} = ['Too many failed attempts - temporarily locked out']
${detail}
${json}
$.detail
Get Value From JSON using JSONPath
${detail_val} = Too many failed attempts - temporarily locked out
${detail_val}
${detail}[0]
Returns the given values which can then be assigned to a variables.
Login failed with 429: Too many failed attempts - temporarily locked out
Login failed with ${resp.status_code}: ${detail_val}
Fails the test with the given message and optionally alters its tags.
Login failed with 429: Too many failed attempts - temporarily locked out
Login failed with 429: Too many failed attempts - temporarily locked out
Login failed with 429: Too many failed attempts - temporarily locked out
${json}
${resp.text}
Convert String to JSON object
${token}
${json}
$.access_token
Get Value From JSON using JSONPath
${token_str}
${token}[0]
Returns the given values which can then be assigned to a variables.
${TOKEN}
${token_str}
Makes a variable available everywhere within the scope of the current suite.
${token_str}
${token}
Log in with the master password and return the JWT access token.
Login failed with 429: Too many failed attempts - temporarily locked out
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
Login failed with 429: Too many failed attempts - temporarily locked out
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${TOKEN}'}
Create Session: create a HTTP session to a server
Login failed with 429: Too many failed attempts - temporarily locked out
Create an authenticated HTTP session. Performs setup if needed, then logs in.
Skips setup/login if already authenticated (suite-level setup done).
Login failed with 429: Too many failed attempts - temporarily locked out
Create Anonymous Session
AND
Setup Master Password
AND
Create Authenticated Session
Executes all the given keywords in a sequence.
Login failed with 429: Too many failed attempts - temporarily locked out
Deleting All Sessions
Removes all the session objects
Manually trigger a scheduled rescan.
Setup failed:
Login failed with 429: Too many failed attempts - temporarily locked out
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 13:41:57 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 13:41:57 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=429, reason=Too Many Requests
headers={'date': 'Sat, 27 Jun 2026 13:41:57 GMT', 'server': 'uvicorn', 'content-length': '62', 'content-type': 'application/json'}
body={"detail":"Too many failed attempts - temporarily locked out"}
${resp} = <Response [429]>
${resp}
anon
/api/auth/login
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
Slept 6 seconds.
6s
Pauses the test executed for the given time.
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=429, reason=Too Many Requests
headers={'date': 'Sat, 27 Jun 2026 13:42:03 GMT', 'server': 'uvicorn', 'content-length': '74', 'content-type': 'application/json'}
body={"detail":"Too many authentication attempts, try again later. IP lockout"}
${resp} = <Response [429]>
${resp}
anon
/api/auth/login
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
${json} = {'detail': 'Too many authentication attempts, try again later. IP lockout'}
${json}
${resp.text}
Convert String to JSON object
${detail} = ['Too many authentication attempts, try again later. IP lockout']
${detail}
${json}
$.detail
Get Value From JSON using JSONPath
${detail_val} = Too many authentication attempts, try again later. IP lockout
${detail_val}
${detail}[0]
Returns the given values which can then be assigned to a variables.
Login failed with 429: Too many authentication attempts, try again later. IP lockout
Login failed with ${resp.status_code}: ${detail_val}
Fails the test with the given message and optionally alters its tags.
Login failed with 429: Too many authentication attempts, try again later. IP lockout
Login failed with 429: Too many authentication attempts, try again later. IP lockout
Login failed with 429: Too many authentication attempts, try again later. IP lockout
${json}
${resp.text}
Convert String to JSON object
${token}
${json}
$.access_token
Get Value From JSON using JSONPath
${token_str}
${token}[0]
Returns the given values which can then be assigned to a variables.
${TOKEN}
${token_str}
Makes a variable available everywhere within the scope of the current suite.
${token_str}
${token}
Log in with the master password and return the JWT access token.
Login failed with 429: Too many authentication attempts, try again later. IP lockout
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
Login failed with 429: Too many authentication attempts, try again later. IP lockout
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${TOKEN}'}
Create Session: create a HTTP session to a server
Login failed with 429: Too many authentication attempts, try again later. IP lockout
Create an authenticated HTTP session. Performs setup if needed, then logs in.
Skips setup/login if already authenticated (suite-level setup done).
Login failed with 429: Too many authentication attempts, try again later. IP lockout
Create Anonymous Session
AND
Setup Master Password
AND
Create Authenticated Session
Executes all the given keywords in a sequence.
Login failed with 429: Too many authentication attempts, try again later. IP lockout
Deleting All Sessions
Removes all the session objects
Verify that malformed schedule_time is rejected.
Setup failed:
Login failed with 429: Too many authentication attempts, try again later. IP lockout
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=429, reason=Too Many Requests
headers={'date': 'Sat, 27 Jun 2026 13:42:03 GMT', 'server': 'uvicorn', 'content-length': '74', 'content-type': 'application/json'}
body={"detail":"Too many authentication attempts, try again later. IP lockout"}
${resp} = <Response [429]>
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
Slept 45 seconds.
45s
Pauses the test executed for the given time.
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=429, reason=Too Many Requests
headers={'date': 'Sat, 27 Jun 2026 13:42:48 GMT', 'server': 'uvicorn', 'content-length': '74', 'content-type': 'application/json'}
body={"detail":"Too many authentication attempts, try again later. IP lockout"}
${resp} = <Response [429]>
${resp}
anon
/api/auth/setup
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
Slept 45 seconds.
45s
Pauses the test executed for the given time.
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 13:43:33 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.
${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 13:43:33 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=429, reason=Too Many Requests
headers={'date': 'Sat, 27 Jun 2026 13:43:33 GMT', 'server': 'uvicorn', 'content-length': '62', 'content-type': 'application/json'}
body={"detail":"Too many failed attempts - temporarily locked out"}
${resp} = <Response [429]>
${resp}
anon
/api/auth/login
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
Slept 6 seconds.
6s
Pauses the test executed for the given time.
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=429, reason=Too Many Requests
headers={'date': 'Sat, 27 Jun 2026 13:43:39 GMT', 'server': 'uvicorn', 'content-length': '62', 'content-type': 'application/json'}
body={"detail":"Too many failed attempts - temporarily locked out"}
${resp} = <Response [429]>
${resp}
anon
/api/auth/login
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
${json} = {'detail': 'Too many failed attempts - temporarily locked out'}
${json}
${resp.text}
Convert String to JSON object
${detail} = ['Too many failed attempts - temporarily locked out']
${detail}
${json}
$.detail
Get Value From JSON using JSONPath
${detail_val} = Too many failed attempts - temporarily locked out
${detail_val}
${detail}[0]
Returns the given values which can then be assigned to a variables.
Login failed with 429: Too many failed attempts - temporarily locked out
Login failed with ${resp.status_code}: ${detail_val}
Fails the test with the given message and optionally alters its tags.
Login failed with 429: Too many failed attempts - temporarily locked out
Login failed with 429: Too many failed attempts - temporarily locked out
Login failed with 429: Too many failed attempts - temporarily locked out
${json}
${resp.text}
Convert String to JSON object
${token}
${json}
$.access_token
Get Value From JSON using JSONPath
${token_str}
${token}[0]
Returns the given values which can then be assigned to a variables.
${TOKEN}
${token_str}
Makes a variable available everywhere within the scope of the current suite.
${token_str}
${token}
Log in with the master password and return the JWT access token.
Login failed with 429: Too many failed attempts - temporarily locked out
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
Login failed with 429: Too many failed attempts - temporarily locked out
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${TOKEN}'}
Create Session: create a HTTP session to a server
Login failed with 429: Too many failed attempts - temporarily locked out
Create an authenticated HTTP session. Performs setup if needed, then logs in.
Skips setup/login if already authenticated (suite-level setup done).
Login failed with 429: Too many failed attempts - temporarily locked out
Create Anonymous Session
AND
Setup Master Password
AND
Create Authenticated Session
Executes all the given keywords in a sequence.
Login failed with 429: Too many failed attempts - temporarily locked out
Deleting All Sessions
Removes all the session objects
Verify that invalid day abbreviations are rejected.
Setup failed:
Login failed with 429: Too many failed attempts - temporarily locked out
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 13:43:39 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 13:43:39 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=429, reason=Too Many Requests
headers={'date': 'Sat, 27 Jun 2026 13:43:39 GMT', 'server': 'uvicorn', 'content-length': '62', 'content-type': 'application/json'}
body={"detail":"Too many failed attempts - temporarily locked out"}
${resp} = <Response [429]>
${resp}
anon
/api/auth/login
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
Slept 6 seconds.
6s
Pauses the test executed for the given time.
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=429, reason=Too Many Requests
headers={'date': 'Sat, 27 Jun 2026 13:43:45 GMT', 'server': 'uvicorn', 'content-length': '74', 'content-type': 'application/json'}
body={"detail":"Too many authentication attempts, try again later. IP lockout"}
${resp} = <Response [429]>
${resp}
anon
/api/auth/login
json=${payload}
expected_status=any
Sends a POST request on a previously created HTTP Session.
${json} = {'detail': 'Too many authentication attempts, try again later. IP lockout'}
${json}
${resp.text}
Convert String to JSON object
${detail} = ['Too many authentication attempts, try again later. IP lockout']
${detail}
${json}
$.detail
Get Value From JSON using JSONPath
${detail_val} = Too many authentication attempts, try again later. IP lockout
${detail_val}
${detail}[0]
Returns the given values which can then be assigned to a variables.
Login failed with 429: Too many authentication attempts, try again later. IP lockout
Login failed with ${resp.status_code}: ${detail_val}
Fails the test with the given message and optionally alters its tags.
Login failed with 429: Too many authentication attempts, try again later. IP lockout
Login failed with 429: Too many authentication attempts, try again later. IP lockout
Login failed with 429: Too many authentication attempts, try again later. IP lockout
${json}
${resp.text}
Convert String to JSON object
${token}
${json}
$.access_token
Get Value From JSON using JSONPath
${token_str}
${token}[0]
Returns the given values which can then be assigned to a variables.
${TOKEN}
${token_str}
Makes a variable available everywhere within the scope of the current suite.
${token_str}
${token}
Log in with the master password and return the JWT access token.
Login failed with 429: Too many authentication attempts, try again later. IP lockout
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${token}'}
Create Session: create a HTTP session to a server
Login failed with 429: Too many authentication attempts, try again later. IP lockout
auth
${BASE_URL}
headers={'Authorization': 'Bearer ${TOKEN}'}
Create Session: create a HTTP session to a server
Login failed with 429: Too many authentication attempts, try again later. IP lockout
Create an authenticated HTTP session. Performs setup if needed, then logs in.
Skips setup/login if already authenticated (suite-level setup done).
Login failed with 429: Too many authentication attempts, try again later. IP lockout
Create Anonymous Session
AND
Setup Master Password
AND
Create Authenticated Session
Executes all the given keywords in a sequence.
Login failed with 429: Too many authentication attempts, try again later. IP lockout
Deleting All Sessions
Removes all the session objects
Verify that empty schedule_days is handled.
Setup failed:
Login failed with 429: Too many authentication attempts, try again later. IP lockout
Scheduler API tests for Aniworld.
Covers get config, update config, trigger rescan, and validation.
All Tests
Scheduler