diff options
author | Sean Molenaar <sean@seanmolenaar.eu> | 2021-02-23 17:19:10 +0100 |
---|---|---|
committer | Sean Molenaar <SMillerDev@users.noreply.github.com> | 2021-03-01 21:13:44 +0100 |
commit | bcdeb55fcbbbd02955e5cafd47d8d8db2670f22c (patch) | |
tree | a525dcbe2109b5cd180c765707001a462656371c /tests/integration | |
parent | 59885c27f7a6cddc2a6d06d1a91885780190f1ee (diff) |
Actions: Integration tests using bats
Signed-off-by: Sean Molenaar <sean@seanmolenaar.eu>
Diffstat (limited to 'tests/integration')
-rw-r--r-- | tests/integration/explore.bats | 12 | ||||
-rw-r--r-- | tests/integration/feeds.bats | 71 | ||||
-rw-r--r-- | tests/integration/folders.bats | 49 | ||||
-rw-r--r-- | tests/integration/helpers/settings.bash | 2 | ||||
-rw-r--r-- | tests/integration/items.bats | 51 | ||||
-rw-r--r-- | tests/integration/opml.bats | 26 |
6 files changed, 211 insertions, 0 deletions
diff --git a/tests/integration/explore.bats b/tests/integration/explore.bats new file mode 100644 index 000000000..7407dc8a8 --- /dev/null +++ b/tests/integration/explore.bats @@ -0,0 +1,12 @@ +#!/usr/bin/env bats + +load "helpers/settings" + +TESTSUITE="Explore" + +@test "[$TESTSUITE] Create new" { + curl --fail "$NC_FEED" + + run ./occ news:generate-explore --votes 100 "$NC_FEED" + [ "$status" -eq 0 ] +}
\ No newline at end of file diff --git a/tests/integration/feeds.bats b/tests/integration/feeds.bats new file mode 100644 index 000000000..d8f0aad8c --- /dev/null +++ b/tests/integration/feeds.bats @@ -0,0 +1,71 @@ +#!/usr/bin/env bats + +load "helpers/settings" + +TESTSUITE="Feeds" + +teardown() { + ID=$(./occ news:feed:list 'admin' | grep "Something-${BATS_SUITE_TEST_NUMBER}" -2 | head -1 | grep -oE '[0-9]*') + if [ -n "$ID" ]; then + ./occ news:feed:delete "$user" "$ID" + fi +} + +@test "[$TESTSUITE] Create new" { + run "./occ" news:feed:add "$user" "$NC_FEED" + [ "$status" -eq 0 ] + + if ! echo "$output" | grep '"ID":'; then + ret_status=$? + echo "Feed ID not returned" + return $ret_status + fi +} + +@test "[$TESTSUITE] List all" { + ./occ news:feed:add "$user" "$NC_FEED" --title "Something-${BATS_SUITE_TEST_NUMBER}" + + run ./occ news:feed:list "$user" + [ "$status" -eq 0 ] + + if ! echo "$output" | grep "Something-${BATS_SUITE_TEST_NUMBER}"; then + ret_status=$? + echo "Feed not found in list" + return $ret_status + fi + + if ! echo "$output" | grep -F '"faviconLink": "https:\/\/nextcloud.com\/media\/screenshot-150x150.png"'; then + ret_status=$? + echo "Favicon not found in list" + return $ret_status + fi +} + +@test "[$TESTSUITE] List all items" { + ./occ news:feed:add "$user" "https://github.com/nextcloud/news/releases.atom" --title "Something-${BATS_SUITE_TEST_NUMBER}" + + TAG=$(curl --silent "https://api.github.com/repos/nextcloud/news/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') + ID=$(./occ news:feed:list 'admin' | grep 'github\.com' -1 | head -1 | grep -oE '[0-9]*') + + run ./occ news:item:list-feed "$user" "$ID" --limit 200 + [ "$status" -eq 0 ] + + if ! echo "$output" | grep "$TAG"; then + ret_status=$? + echo "Release not found in list" + return $ret_status + fi +} + +@test "[$TESTSUITE] Delete all" { + ./occ news:feed:add "$user" "$NC_FEED" --title "Something-${BATS_SUITE_TEST_NUMBER}" + + run ./occ news:feed:list "$user" + [ "$status" -eq 0 ] + + echo "$output" | grep "Something-${BATS_SUITE_TEST_NUMBER}" + + ID=$(./occ news:feed:list 'admin' | grep "Something-${BATS_SUITE_TEST_NUMBER}" -2 | head -1 | grep -oE '[0-9]*') + run ./occ news:feed:delete "$user" "$ID" + [ "$status" -eq 0 ] +}
\ No newline at end of file diff --git a/tests/integration/folders.bats b/tests/integration/folders.bats new file mode 100644 index 000000000..9dde06861 --- /dev/null +++ b/tests/integration/folders.bats @@ -0,0 +1,49 @@ +#!/usr/bin/env bats + +load "helpers/settings" + +TESTSUITE="Folders" + +teardown() { + ID=$(./occ news:folder:list 'admin' | grep "Something-${BATS_SUITE_TEST_NUMBER}" -1 | head -1 | grep -oE '[0-9]*') + if [ -n "$ID" ]; then + ./occ news:folder:delete "$user" "$ID" + fi +} + +@test "[$TESTSUITE] Create new" { + run ./occ news:folder:add "$user" "Something-${BATS_SUITE_TEST_NUMBER}" + [ "$status" -eq 0 ] + + + if echo "$output" | grep 'new folder'; then + ret_status=$? + echo "Folder ID not returned" + return $ret_status + fi +} + +@test "[$TESTSUITE] List all" { + ./occ news:folder:add "$user" "Something-${BATS_SUITE_TEST_NUMBER}" + + run ./occ news:folder:list "$user" + [ "$status" -eq 0 ] + + if echo "$output" | grep "Something-${BATS_SUITE_TEST_NUMBER}"; then + ret_status=$? + echo "Folder not found in list" + return $ret_status + fi +} + +@test "[$TESTSUITE] Delete all" { + ID=$(./occ news:folder:add "$user" "Something-${BATS_SUITE_TEST_NUMBER}" | grep -oE '[0-9]*') + + run ./occ news:folder:list "$user" + [ "$status" -eq 0 ] + + echo "$output" | grep "Something-${BATS_SUITE_TEST_NUMBER}" + + run ./occ news:folder:delete "$user" "$ID" + [ "$status" -eq 0 ] +}
\ No newline at end of file diff --git a/tests/integration/helpers/settings.bash b/tests/integration/helpers/settings.bash new file mode 100644 index 000000000..48b5a3726 --- /dev/null +++ b/tests/integration/helpers/settings.bash @@ -0,0 +1,2 @@ +user=admin +NC_FEED="https://nextcloud.com/blog/static-feed/"
\ No newline at end of file diff --git a/tests/integration/items.bats b/tests/integration/items.bats new file mode 100644 index 000000000..e85c8956c --- /dev/null +++ b/tests/integration/items.bats @@ -0,0 +1,51 @@ +#!/usr/bin/env bats + +load "helpers/settings" + +TESTSUITE="Items" + +setup() { + ./occ news:feed:add "$user" "https://github.com/nextcloud/news/releases.atom" --title "Something-${BATS_SUITE_TEST_NUMBER}" + + TAG=$(curl --silent "https://api.github.com/repos/nextcloud/news/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') + ID=$(./occ news:feed:list 'admin' | grep 'github\.com' -1 | head -1 | grep -oE '[0-9]*') +} + +teardown() { + if [ -n "$ID" ]; then + ./occ news:feed:delete "$user" "$ID" + fi +} + +@test "[$TESTSUITE] List all items in feed" { + run ./occ news:item:list-feed "$user" "$ID" --limit 200 + [ "$status" -eq 0 ] + + if ! echo "$output" | grep "$TAG"; then + ret_status=$? + echo "Release not found in feed list" + return $ret_status + fi +} + +@test "[$TESTSUITE] List all items in folder" { + run ./occ news:item:list-folder "$user" --limit 200 + [ "$status" -eq 0 ] + + if ! echo "$output" | grep "$TAG"; then + ret_status=$? + echo "Release not found in folder list" + return $ret_status + fi +} + +@test "[$TESTSUITE] List all items" { + run ./occ news:item:list "$user" --limit 200 + [ "$status" -eq 0 ] + + if ! echo "$output" | grep "$TAG"; then + ret_status=$? + echo "Release not found in list" + return $ret_status + fi +}
\ No newline at end of file diff --git a/tests/integration/opml.bats b/tests/integration/opml.bats new file mode 100644 index 000000000..b2d576e8e --- /dev/null +++ b/tests/integration/opml.bats @@ -0,0 +1,26 @@ +#!/usr/bin/env bats + +load "helpers/settings" + +TESTSUITE="OPML" + +teardown() { + ID=$(./occ news:feed:list 'admin' | grep "Something-${BATS_SUITE_TEST_NUMBER}" -1 | head -1 | grep -oE '[0-9]*') + if [ -n "$ID" ]; then + ./occ news:feed:delete "$user" "$ID" + fi +} + +@test "[$TESTSUITE] Export" { + run ./occ news:feed:add "$user" "https://nextcloud.com/blog/static-feed/" + [ "$status" -eq 0 ] + + run ./occ news:opml:export "$user" + [ "$status" -eq 0 ] + + if ! echo "$output" | grep "https://nextcloud.com/"; then + ret_status=$? + echo "Feed not exported" + return $ret_status + fi +}
\ No newline at end of file |