backup
This commit is contained in:
145
tests/robot/api/download.robot
Normal file
145
tests/robot/api/download.robot
Normal file
@@ -0,0 +1,145 @@
|
||||
*** 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
|
||||
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
|
||||
Should Be Equal As Integers ${pending} 2
|
||||
${total}= Get JSON Value ${resp} $.statistics.total
|
||||
Should Be Equal As Integers ${total} 2
|
||||
Reference in New Issue
Block a user