2021-11-06 03:57:33 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
CURLOPTS=(-i -s -S -o /dev/null -f -w "%{http_code}\tTime:\t%{time_starttransfer}\t%{url_effective}\n")
|
2023-01-30 17:31:54 +00:00
|
|
|
HOST="127.0.0.1:8080"
|
2021-11-06 03:57:33 +00:00
|
|
|
|
2022-03-29 08:49:42 +00:00
|
|
|
# Healthcheck Test
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/healthcheck || exit 1
|
2022-03-29 08:49:42 +00:00
|
|
|
|
2022-02-22 09:16:45 +00:00
|
|
|
# Version Test
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/version || exit 1
|
2022-02-22 09:16:45 +00:00
|
|
|
|
2021-11-06 03:57:33 +00:00
|
|
|
# Trending Page
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/trending?region=US || exit 1
|
2021-11-06 03:57:33 +00:00
|
|
|
|
|
|
|
# Channel Pages
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/channel/UCsXVk37bltHxD1rDPwtNM8Q || exit 1
|
|
|
|
curl "${CURLOPTS[@]}" $HOST/c/inanutshell || exit 1
|
|
|
|
curl "${CURLOPTS[@]}" $HOST/user/Kurzgesagt || exit 1
|
2021-11-06 03:57:33 +00:00
|
|
|
|
|
|
|
# Channel Nextpage
|
|
|
|
CHANNEL_NEXTPAGE=$(curl -s -o - -f $HOST/channel/UCsXVk37bltHxD1rDPwtNM8Q | jq -r .nextpage)
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/nextpage/channel/UCsXVk37bltHxD1rDPwtNM8Q -G --data-urlencode "nextpage=$CHANNEL_NEXTPAGE" || exit 1
|
2021-11-06 03:57:33 +00:00
|
|
|
|
2022-10-27 10:55:44 +00:00
|
|
|
# Channel Tab
|
|
|
|
CHANNEL_TAB_DATA=$(curl -s -o - -f $HOST/channel/UCsXVk37bltHxD1rDPwtNM8Q | jq -r .tabs[0].data)
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/channels/tabs -G --data-urlencode "data=$CHANNEL_TAB_DATA" || exit 1
|
2022-10-27 10:55:44 +00:00
|
|
|
|
2021-11-06 03:57:33 +00:00
|
|
|
# Playlist
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/playlists/PLQSoWXSpjA3-egtFq45DcUydZ885W7MTT || exit 1
|
2021-11-06 03:57:33 +00:00
|
|
|
|
|
|
|
# Playlist Nextpage
|
|
|
|
PLAYLIST_NEXTPAGE=$(curl -s -o - -f $HOST/playlists/PLQSoWXSpjA3-egtFq45DcUydZ885W7MTT | jq -r .nextpage)
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/nextpage/playlists/PLQSoWXSpjA3-egtFq45DcUydZ885W7MTT -G --data-urlencode "nextpage=$PLAYLIST_NEXTPAGE" || exit 1
|
2021-11-06 03:57:33 +00:00
|
|
|
|
2022-02-10 15:00:03 +00:00
|
|
|
# Clips
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/clips/Ugkx71jS31nwsms_Cc65oi7yXF1mILflhhrO || exit 1
|
2022-02-10 15:00:03 +00:00
|
|
|
|
2021-11-06 03:57:33 +00:00
|
|
|
# Streams
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/streams/BtN-goy9VOY || exit 1
|
2021-11-06 03:57:33 +00:00
|
|
|
|
|
|
|
# Comments
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/comments/BtN-goy9VOY || exit 1
|
2021-11-06 03:57:33 +00:00
|
|
|
|
|
|
|
# Comments Nextpage
|
|
|
|
COMMENTS_NEXTPAGE=$(curl -s -o - -f $HOST/comments/BtN-goy9VOY | jq -r .nextpage)
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/nextpage/comments/BtN-goy9VOY -G --data-urlencode "nextpage=$COMMENTS_NEXTPAGE" || exit 1
|
2021-11-06 03:57:33 +00:00
|
|
|
|
|
|
|
# Comments Repliespage
|
|
|
|
COMMENTS_REPLIESPAGE=$(curl -s -o - -f $HOST/comments/BtN-goy9VOY | jq -r .comments[0].repliesPage)
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/nextpage/comments/BtN-goy9VOY -G --data-urlencode "nextpage=$COMMENTS_REPLIESPAGE" || exit 1
|
2021-11-06 03:57:33 +00:00
|
|
|
|
|
|
|
# Comments Replies Nextpage
|
|
|
|
COMMENTS_REPLIES_NEXTPAGE=$(curl -s -o - -f $HOST/nextpage/comments/BtN-goy9VOY -G --data-urlencode "nextpage=$COMMENTS_REPLIESPAGE" | jq -r .nextpage)
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/nextpage/comments/BtN-goy9VOY -G --data-urlencode "nextpage=$COMMENTS_REPLIES_NEXTPAGE" || exit 1
|
2021-11-06 03:57:33 +00:00
|
|
|
|
2023-01-30 17:31:54 +00:00
|
|
|
USER="admin"
|
2021-11-06 03:57:33 +00:00
|
|
|
PASS=$(openssl rand -base64 12)
|
|
|
|
|
|
|
|
AUTH_REQ=$(jq -n --compact-output --arg username "$USER" --arg password "$PASS" '{"username": $username, "password": $password}')
|
|
|
|
|
|
|
|
# Register Account
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/register -X POST -H "Content-Type: application/json" -d "$AUTH_REQ" || exit 1
|
2021-11-06 03:57:33 +00:00
|
|
|
|
|
|
|
# Login Account
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/login -X POST -H "Content-Type: application/json" -d "$AUTH_REQ" || exit 1
|
2021-11-06 03:57:33 +00:00
|
|
|
|
2023-01-30 17:31:54 +00:00
|
|
|
AUTH_TOKEN=$(curl -s -o - -f $HOST/login -X POST -H "Content-Type: application/json" -d "$AUTH_REQ" | jq -r .token)
|
2021-11-06 03:57:33 +00:00
|
|
|
|
2022-07-20 14:46:48 +00:00
|
|
|
if [[ -z "$AUTH_TOKEN" || $AUTH_TOKEN == "null" ]]; then
|
|
|
|
echo "Failed to get auth token"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Logout Session
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/logout -X POST -H "Authorization: Bearer $AUTH_TOKEN" || exit 1
|
2022-07-20 14:46:48 +00:00
|
|
|
|
|
|
|
# Login Account
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/login -X POST -H "Content-Type: application/json" -d "$AUTH_REQ" || exit 1
|
2022-07-20 14:46:48 +00:00
|
|
|
|
2023-01-30 17:31:54 +00:00
|
|
|
AUTH_TOKEN=$(curl -s -o - -f $HOST/login -X POST -H "Content-Type: application/json" -d "$AUTH_REQ" | jq -r .token)
|
2022-07-20 14:46:48 +00:00
|
|
|
|
2021-11-06 03:57:33 +00:00
|
|
|
if [[ -z "$AUTH_TOKEN" || $AUTH_TOKEN == "null" ]]; then
|
|
|
|
echo "Failed to get auth token"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Check Subscription Status
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/subscribed -G --data-urlencode "channelId=UCsXVk37bltHxD1rDPwtNM8Q" -H "Authorization: $AUTH_TOKEN" || exit 1
|
2021-11-06 03:57:33 +00:00
|
|
|
|
|
|
|
# Subscribe to a Channel
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/subscribe -X POST -H "Content-Type: application/json" -H "Authorization: $AUTH_TOKEN" -d "$(jq -n --compact-output --arg channelId "UCfdNM3NAhaBOXCafH7krzrA" '{"channelId": $channelId}')" || exit 1
|
2021-11-06 03:57:33 +00:00
|
|
|
|
|
|
|
# Unsubscribe from the Channel
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/unsubscribe -X POST -H "Content-Type: application/json" -H "Authorization: $AUTH_TOKEN" -d "$(jq -n --compact-output --arg channelId "UCfdNM3NAhaBOXCafH7krzrA" '{"channelId": $channelId}')" || exit 1
|
2021-11-06 03:57:33 +00:00
|
|
|
|
|
|
|
# Resubscribe to the Channel
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/subscribe -X POST -H "Content-Type: application/json" -H "Authorization: $AUTH_TOKEN" -d "$(jq -n --compact-output --arg channelId "UCfdNM3NAhaBOXCafH7krzrA" '{"channelId": $channelId}')" || exit 1
|
2021-11-06 03:57:33 +00:00
|
|
|
|
2023-01-30 15:16:07 +00:00
|
|
|
# Import subscriptions Test
|
2023-01-30 17:31:54 +00:00
|
|
|
CHANNEL_IDS="UCsXVk37bltHxD1rDPwtNM8Q,UCXuqSBlHAE6Xw-yeJA0Tunw"
|
|
|
|
CHANNEL_IDS_JSON_ARRAY="[\"${CHANNEL_IDS//,/\",\"}\"]"
|
|
|
|
curl "${CURLOPTS[@]}" $HOST/import -X POST -H "Content-Type: application/json" -H "Authorization: $AUTH_TOKEN" -d "$CHANNEL_IDS_JSON_ARRAY" || exit 1
|
2023-01-30 15:16:07 +00:00
|
|
|
|
2021-11-06 03:57:33 +00:00
|
|
|
# Wait 2s to allow the subscription request to be processed
|
|
|
|
sleep 2
|
|
|
|
|
|
|
|
# Check Feed
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/feed -G --data-urlencode "authToken=$AUTH_TOKEN" || exit 1
|
2022-04-06 03:14:16 +00:00
|
|
|
|
|
|
|
PLAYLIST_NAME=$(openssl rand -hex 6)
|
2022-08-28 10:06:32 +00:00
|
|
|
RENAMED_PLAYLIST_NAME=$(openssl rand --hex 6)
|
2022-04-06 03:14:16 +00:00
|
|
|
|
|
|
|
# Create a Playlist
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/user/playlists/create -X POST -H "Content-Type: application/json" -H "Authorization: $AUTH_TOKEN" -d "$(jq -n --compact-output --arg name "$PLAYLIST_NAME" '{"name": $name}')" || exit 1
|
2022-04-06 03:14:16 +00:00
|
|
|
|
|
|
|
# See created playlists
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/user/playlists -H "Authorization: $AUTH_TOKEN" || exit 1
|
2022-04-06 03:14:16 +00:00
|
|
|
|
|
|
|
# Get Playlist ID
|
|
|
|
PLAYLIST_ID=$(curl -s -o - -f $HOST/user/playlists -H "Authorization: $AUTH_TOKEN" | jq -r ".[0].id") || exit 1
|
|
|
|
|
|
|
|
# Playlist Test
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" "$HOST/playlists/$PLAYLIST_ID" || exit 1
|
2022-04-06 12:07:50 +00:00
|
|
|
|
|
|
|
# Add to Playlist Test
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/user/playlists/add -X POST -H "Content-Type: application/json" -H "Authorization: $AUTH_TOKEN" -d "$(jq -n --compact-output --arg videoId "BtN-goy9VOY" --arg playlistId "$PLAYLIST_ID" '{"videoId": $videoId, "playlistId": $playlistId}')" || exit 1
|
2022-04-06 13:21:46 +00:00
|
|
|
|
|
|
|
# Remove from Playlist Test
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/user/playlists/remove -X POST -H "Content-Type: application/json" -H "Authorization: $AUTH_TOKEN" -d "$(jq -n --compact-output --arg index "0" --arg playlistId "$PLAYLIST_ID" '{"index": $index, "playlistId": $playlistId}')" || exit 1
|
2022-04-06 15:11:28 +00:00
|
|
|
|
2022-08-28 10:06:32 +00:00
|
|
|
# Rename Playlist Test
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/user/playlists/rename -X POST -H "Content-Type: application/json" -H "Authorization: $AUTH_TOKEN" -d "$(jq -n --compact-output --arg playlistId "$PLAYLIST_ID" --arg newName "$RENAMED_PLAYLIST_NAME" '{"playlistId": $playlistId, "newName": $newName}')" || exit 1
|
2022-08-28 10:06:32 +00:00
|
|
|
|
2023-01-07 14:22:12 +00:00
|
|
|
# Clear Playlist Test
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/user/playlists/clear -X POST -H "Content-Type: application/json" -H "Authorization: $AUTH_TOKEN" -d "$(jq -n --compact-output --arg playlistId "$PLAYLIST_ID" '{"playlistId": $playlistId}')" || exit 1
|
2023-01-07 14:22:12 +00:00
|
|
|
|
2022-04-06 15:11:28 +00:00
|
|
|
# Delete Playlist Test
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/user/playlists/delete -X POST -H "Content-Type: application/json" -H "Authorization: $AUTH_TOKEN" -d "$(jq -n --compact-output --arg playlistId "$PLAYLIST_ID" '{"playlistId": $playlistId}')" || exit 1
|
2022-05-05 18:51:51 +00:00
|
|
|
|
2022-06-18 18:10:26 +00:00
|
|
|
# Import Playlist Test
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/import/playlist -X POST -H "Content-Type: application/json" -H "Authorization: $AUTH_TOKEN" -d "$(jq -n --compact-output --arg playlistId "PLQSoWXSpjA3-egtFq45DcUydZ885W7MTT" '{"playlistId": $playlistId}')" || exit 1
|
2022-06-18 18:10:26 +00:00
|
|
|
|
2022-05-05 18:51:51 +00:00
|
|
|
# Delete User Test
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/user/delete -X POST -H "Content-Type: application/json" -H "Authorization: $AUTH_TOKEN" -d "$(jq -n --compact-output --arg password "$PASS" '{"password": $password}')" || exit 1
|
2022-07-31 17:52:22 +00:00
|
|
|
|
2023-01-30 15:05:31 +00:00
|
|
|
# Unauthenticated subscription tests GET
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/feed/unauthenticated -G --data-urlencode "channels=$CHANNEL_IDS" || exit 1
|
|
|
|
curl "${CURLOPTS[@]}" $HOST/feed/unauthenticated/rss -G --data-urlencode "channels=$CHANNEL_IDS" || exit 1
|
|
|
|
curl "${CURLOPTS[@]}" $HOST/subscriptions/unauthenticated -G --data-urlencode "channels=$CHANNEL_IDS" || exit 1
|
2023-01-30 15:05:31 +00:00
|
|
|
|
|
|
|
# Unauthenticated subscription tests POST
|
2023-01-30 17:31:54 +00:00
|
|
|
curl "${CURLOPTS[@]}" $HOST/feed/unauthenticated -X POST -H "Content-Type: application/json" -d "$CHANNEL_IDS_JSON_ARRAY" || exit 1
|
|
|
|
curl "${CURLOPTS[@]}" $HOST/subscriptions/unauthenticated -X POST -H "Content-Type: application/json" -d "$CHANNEL_IDS_JSON_ARRAY" || exit 1
|