146 lines
5.8 KiB
Plaintext
146 lines
5.8 KiB
Plaintext
*** Settings ***
|
|
Documentation Download queue API tests for Aniworld.
|
|
... Covers status, add, start/stop/pause/resume, clear, retry, and remove.
|
|
|
|
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 ***
|
|
# ---------------------------------------------------------------------------
|
|
# Queue Status
|
|
# ---------------------------------------------------------------------------
|
|
Get Empty Queue Status
|
|
[Documentation] Retrieve queue status when the queue is empty.
|
|
${resp}= Get Queue Status
|
|
Response Should Have Status ${resp} 200
|
|
Response Should Contain Keys ${resp} status statistics
|
|
${pending}= Get JSON Value ${resp} $.statistics.pending_count
|
|
Should Be Equal As Integers ${pending} 0
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Add To Queue
|
|
# ---------------------------------------------------------------------------
|
|
Add Episodes To Queue
|
|
[Documentation] Add episodes to the download queue.
|
|
${episodes}= Create List
|
|
... {'season': 1, 'episode': 1, 'title': 'Episode 1'}
|
|
... {'season': 1, 'episode': 2, 'title': 'Episode 2'}
|
|
${payload}= Create Dictionary
|
|
... serie_id=test-series
|
|
... serie_folder=Test Series
|
|
... serie_name=Test Series
|
|
... episodes=${episodes}
|
|
... priority=NORMAL
|
|
${resp}= Add To Queue ${payload}
|
|
Response Should Have Status ${resp} 201
|
|
${ids}= Get JSON Value ${resp} $.item_ids
|
|
Should Not Be Empty ${ids}
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Queue Controls
|
|
# ---------------------------------------------------------------------------
|
|
Start Queue
|
|
[Documentation] Start processing the download queue.
|
|
${resp}= Start Queue
|
|
Response Should Have Status ${resp} 200
|
|
|
|
Stop Queue
|
|
[Documentation] Stop processing the download queue.
|
|
${resp}= Stop Queue
|
|
Response Should Have Status ${resp} 200
|
|
|
|
Pause Queue
|
|
[Documentation] Pause the download queue.
|
|
${resp}= Pause Queue
|
|
Response Should Have Status ${resp} 200
|
|
|
|
Resume Queue
|
|
[Documentation] Resume the download queue.
|
|
${resp}= Resume Queue
|
|
Response Should Have Status ${resp} 200
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Clear Operations
|
|
# ---------------------------------------------------------------------------
|
|
Clear Completed Downloads
|
|
[Documentation] Clear all completed downloads from the queue.
|
|
${resp}= Clear Completed
|
|
Response Should Have Status ${resp} 200
|
|
|
|
Clear Failed Downloads
|
|
[Documentation] Clear all failed downloads from the queue.
|
|
${resp}= Clear Failed
|
|
Response Should Have Status ${resp} 200
|
|
|
|
Clear Pending Downloads
|
|
[Documentation] Clear all pending downloads from the queue.
|
|
${resp}= Clear Pending
|
|
Response Should Have Status ${resp} 200
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Item Management
|
|
# ---------------------------------------------------------------------------
|
|
Remove Item From Queue
|
|
[Documentation] Remove a specific item from the queue.
|
|
${episodes}= Create List {'season': 1, 'episode': 1, 'title': 'Episode 1'}
|
|
${payload}= Create Dictionary
|
|
... serie_id=remove-test
|
|
... serie_folder=Remove Test
|
|
... serie_name=Remove Test
|
|
... episodes=${episodes}
|
|
... priority=NORMAL
|
|
${add_resp}= Add To Queue ${payload}
|
|
${json}= Convert String To Json ${add_resp.text}
|
|
${ids}= Get Value From Json ${json} $.item_ids
|
|
${item_id}= Set Variable ${ids}[0]
|
|
${del_resp}= DELETE API /api/queue/item/${item_id}
|
|
Response Should Have Status ${del_resp} 200
|
|
|
|
Retry Failed Item
|
|
[Documentation] Retry a failed download item.
|
|
${episodes}= Create List {'season': 1, 'episode': 1, 'title': 'Episode 1'}
|
|
${payload}= Create Dictionary
|
|
... serie_id=retry-test
|
|
... serie_folder=Retry Test
|
|
... serie_name=Retry Test
|
|
... episodes=${episodes}
|
|
... priority=NORMAL
|
|
${add_resp}= Add To Queue ${payload}
|
|
${json}= Convert String To Json ${add_resp.text}
|
|
${ids}= Get Value From Json ${json} $.item_ids
|
|
${item_id}= Set Variable ${ids}[0]
|
|
${retry_resp}= POST API /api/queue/item/${item_id}/retry
|
|
Response Should Have Status ${retry_resp} 200
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Queue Statistics Accuracy
|
|
# ---------------------------------------------------------------------------
|
|
Queue Statistics Accuracy
|
|
[Documentation] Verify that queue statistics reflect the actual item counts.
|
|
# Clear first
|
|
Clear Pending
|
|
# Add 2 items
|
|
${episodes}= Create List
|
|
... {'season': 1, 'episode': 1, 'title': 'Ep 1'}
|
|
... {'season': 1, 'episode': 2, 'title': 'Ep 2'}
|
|
${payload}= Create Dictionary
|
|
... serie_id=stats-test
|
|
... serie_folder=Stats Test
|
|
... serie_name=Stats Test
|
|
... episodes=${episodes}
|
|
... priority=NORMAL
|
|
Add To Queue ${payload}
|
|
${resp}= Get Queue Status
|
|
Response Should Have Status ${resp} 200
|
|
${pending}= Get JSON Value ${resp} $.statistics.pending_count
|
|
Should Be Equal As Integers ${pending} 2
|
|
${total}= Get JSON Value ${resp} $.statistics.total
|
|
Should Be Equal As Integers ${total} 2
|