Files
Aniworld/tests/robot/api/scheduler.robot
Lukas ad2320dbbb Add NFO scan endpoint and fix scheduler test payload
- Implement /api/nfo/scan endpoint returning scan results
- Fix Robot Framework scheduler test: use Evaluate+json.loads instead of Create Dictionary for nested data
- Remove completed task docs
2026-06-27 15:14:56 +02:00

88 lines
3.8 KiB
Plaintext

*** 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}= Evaluate json.loads('''{"enabled": true, "interval_minutes": 120, "schedule_time": "04:30", "schedule_days": ["mon", "wed", "fri"], "auto_download_after_rescan": true}''') modules=json
${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