This commit is contained in:
2026-06-21 12:32:44 +02:00
parent 107158eb04
commit be3e180137
27 changed files with 5037 additions and 20 deletions

View File

@@ -0,0 +1,92 @@
*** Settings ***
Documentation Scheduler API tests for Aniworld.
... Covers get config, update config, trigger rescan, and validation.
Resource ${CURDIR}/../resources/common.resource
Resource ${CURDIR}/../resources/api_keywords.resource
Test Setup Run Keywords
... Create Anonymous Session
... AND Setup Master Password
... AND Create Authenticated Session
Test Teardown Delete All Sessions
*** Test Cases ***
# ---------------------------------------------------------------------------
# Get / Update Config
# ---------------------------------------------------------------------------
Get Scheduler Config
[Documentation] Retrieve the current scheduler configuration and runtime status.
${resp}= Get Scheduler Config
Response Should Have Status ${resp} 200
Response Should Contain Keys ${resp} success config status
${config_keys}= Create List enabled interval_minutes schedule_time schedule_days auto_download_after_rescan
FOR ${key} IN @{config_keys}
Response Should Contain Key ${resp} $.config.${key}
END
${status_keys}= Create List is_running next_run last_run scan_in_progress
FOR ${key} IN @{status_keys}
Response Should Contain Key ${resp} $.status.${key}
END
Update Scheduler Config
[Documentation] Update scheduler settings and verify they are persisted.
${payload}= Create Dictionary
... enabled=True
... interval_minutes=120
... schedule_time=04:30
... schedule_days=['mon', 'wed', 'fri']
... auto_download_after_rescan=True
${resp}= Update Scheduler Config ${payload}
Response Should Have Status ${resp} 200
${saved_time}= Get JSON Value ${resp} $.config.schedule_time
Should Be Equal As Strings ${saved_time} 04:30
${saved_days}= Get JSON Value ${resp} $.config.schedule_days
List Should Contain Value ${saved_days} mon
# ---------------------------------------------------------------------------
# Trigger Rescan
# ---------------------------------------------------------------------------
Trigger Manual Rescan
[Documentation] Manually trigger a scheduled rescan.
${resp}= Trigger Rescan
Response Should Have Status ${resp} 200
${success}= Get JSON Value ${resp} $.success
Should Be Equal As Strings ${success} True
# ---------------------------------------------------------------------------
# Validation
# ---------------------------------------------------------------------------
Invalid Schedule Time
[Documentation] Verify that malformed schedule_time is rejected.
${payload}= Create Dictionary
... enabled=True
... interval_minutes=60
... schedule_time=25:00
... schedule_days=['mon']
... auto_download_after_rescan=False
${resp}= Update Scheduler Config ${payload}
Response Should Have Status ${resp} 422
Invalid Schedule Days
[Documentation] Verify that invalid day abbreviations are rejected.
${payload}= Create Dictionary
... enabled=True
... interval_minutes=60
... schedule_time=03:00
... schedule_days=['monday', 'tuesday']
... auto_download_after_rescan=False
${resp}= Update Scheduler Config ${payload}
Response Should Have Status ${resp} 422
Empty Schedule Days
[Documentation] Verify that empty schedule_days is handled.
${payload}= Create Dictionary
... enabled=True
... interval_minutes=60
... schedule_time=03:00
... schedule_days=[]
... auto_download_after_rescan=False
${resp}= Update Scheduler Config ${payload}
Response Should Have Status ${resp} 200