summaryrefslogtreecommitdiffstats
path: root/tests/api/items.bats
diff options
context:
space:
mode:
Diffstat (limited to 'tests/api/items.bats')
-rw-r--r--tests/api/items.bats66
1 files changed, 66 insertions, 0 deletions
diff --git a/tests/api/items.bats b/tests/api/items.bats
new file mode 100644
index 000000000..349678966
--- /dev/null
+++ b/tests/api/items.bats
@@ -0,0 +1,66 @@
+#!/usr/bin/env bats
+
+setup() {
+ load "../test_helper/bats-support/load"
+ load "../test_helper/bats-assert/load"
+ load "helpers/settings"
+
+ if test -f "tests/api/helpers/settings-override.bash"; then
+ load "helpers/settings-override"
+ fi
+}
+
+TESTSUITE="Items"
+
+teardown() {
+ # delete all feeds
+ FEED_IDS=($(http --ignore-stdin -b -a ${user}:${user} GET ${BASE_URLv1}/feeds | grep -Po '"id":\K([0-9]+)' | tr '\n' ' '))
+ for i in $FEED_IDS; do
+ http --ignore-stdin -b -a ${user}:${user} DELETE ${BASE_URLv1}/feeds/$i
+ done
+
+ # delete all folders
+ FOLDER_IDS=($(http --ignore-stdin -b -a ${user}:${user} GET ${BASE_URLv1}/folders | grep -Po '"id":\K([0-9]+)' | tr '\n' ' '))
+ for i in $FOLDER_IDS; do
+ http --ignore-stdin -b -a ${user}:${user} DELETE ${BASE_URLv1}/folders/$i
+ done
+}
+
+@test "[$TESTSUITE] Read empty" {
+ run http --ignore-stdin -b -a ${user}:${user} GET ${BASE_URLv1}/items
+
+ assert_output --partial "\"items\":[]"
+}
+
+@test "[$TESTSUITE] Read 5" {
+ http --ignore-stdin -b -a ${user}:${user} POST ${BASE_URLv1}/feeds url=$NC_FEED
+
+ ID_LIST=($(http --ignore-stdin -b -a ${user}:${user} GET ${BASE_URLv1}/items batchSize=5 | grep -Po '"id":\K([0-9]+)' | tr '\n' ' '))
+
+ output=${#ID_LIST[@]}
+
+ assert_output --partial "5"
+}
+
+# TODO GET /items has more options that could be tested.
+
+@test "[$TESTSUITE] Check updated" {
+ FEEDID=$(http --ignore-stdin -b -a ${user}:${user} POST ${BASE_URLv1}/feeds url=$NC_FEED | grep -Po '"id":\K([0-9]+)')
+ ID_LIST=($(http --ignore-stdin -b -a ${user}:${user} GET ${BASE_URLv1}/items id=$FEEDID | grep -Po '"id":\K([0-9]+)' | tr '\n' ' '))
+
+ # get biggest item ID
+ max=${ID_LIST[0]}
+ for n in "${ID_LIST[@]}" ; do
+ ((n > max)) && max=$n
+ done
+
+ SYNC_TIME=$(date +%s)
+
+ # mark all items of feed as read, returns nothing (other client marks items as read)
+ STATUS_CODE=$(http --ignore-stdin -hdo /tmp/body -a ${user}:${user} PUT ${BASE_URLv1}/feeds/$FEEDID/read newestItemId="$max" 2>&1| grep HTTP/)
+
+ # client 2 checks for updates since last sync
+ UPDATED_ITEMS=($(http --ignore-stdin -b -a ${user}:${user} GET ${BASE_URLv1}/items/updated id=$FEEDID lastModified=$SYNC_TIME | grep -Po '"id":\K([0-9]+)' | tr '\n' ' '))
+
+ assert_equal ${#ID_LIST[@]} ${#UPDATED_ITEMS[@]}
+} \ No newline at end of file