ci: skip authenticated tests
This commit is contained in:
parent
75c3746890
commit
51dacf8df2
3 changed files with 97 additions and 151 deletions
|
|
@ -28,15 +28,9 @@ jobs:
|
||||||
run: cargo clippy --all --tests --features=rss,indicatif,audiotag -- -D warnings
|
run: cargo clippy --all --tests --features=rss,indicatif,audiotag -- -D warnings
|
||||||
|
|
||||||
- name: 🧪 Test
|
- name: 🧪 Test
|
||||||
run: |
|
run: cargo nextest run --config-file ~/.config/nextest.toml --profile ci --retries 2 --features rss --workspace -- --skip 'cookie_auth::'
|
||||||
printf '%s\n' "$RUSTYPIPE_CACHE" > rustypipe_cache.json
|
|
||||||
echo "authenticated=$YT_AUTHENTICATED"
|
|
||||||
wc -c rustypipe_cache.json
|
|
||||||
cargo nextest run --config-file ~/.config/nextest.toml --profile ci --retries 2 --features rss --workspace
|
|
||||||
env:
|
env:
|
||||||
ALL_PROXY: "http://warpproxy:8124"
|
ALL_PROXY: "http://warpproxy:8124"
|
||||||
RUSTYPIPE_CACHE: "${{ secrets.RUSTYPIPE_CACHE }}"
|
|
||||||
YT_AUTHENTICATED: "${{ secrets.RUSTYPIPE_CACHE != '' }}"
|
|
||||||
|
|
||||||
- name: Move test report
|
- name: Move test report
|
||||||
if: always()
|
if: always()
|
||||||
|
|
|
||||||
11
Justfile
11
Justfile
|
|
@ -1,15 +1,19 @@
|
||||||
test:
|
test:
|
||||||
# cargo test --features=rss
|
# cargo test --features=rss
|
||||||
cargo nextest run --workspace --features=rss --no-fail-fast --retries 1
|
cargo nextest run --workspace --features=rss --no-fail-fast --retries 1 -- --skip 'cookie_auth::'
|
||||||
|
|
||||||
unittest:
|
unittest:
|
||||||
cargo nextest run --features=rss --no-fail-fast --lib
|
cargo nextest run --features=rss --no-fail-fast --lib
|
||||||
|
|
||||||
testyt:
|
testyt:
|
||||||
|
cargo nextest run --features=rss --no-fail-fast --retries 1 --test youtube -- --skip 'cookie_auth::'
|
||||||
|
|
||||||
|
testyt-cookie:
|
||||||
cargo nextest run --features=rss --no-fail-fast --retries 1 --test youtube
|
cargo nextest run --features=rss --no-fail-fast --retries 1 --test youtube
|
||||||
|
|
||||||
testyt-localized:
|
testyt-localized:
|
||||||
YT_LANG=th cargo nextest run --features=rss --no-fail-fast ---retries 1 --test youtube
|
YT_LANG=th cargo nextest run --features=rss --no-fail-fast --retries 1 --test youtube -- \
|
||||||
|
--skip 'cookie_auth::' --skip 'search_suggestion' --skip 'isrc_search_languages'
|
||||||
|
|
||||||
testintl:
|
testintl:
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
@ -28,7 +32,8 @@ testintl:
|
||||||
for YT_LANG in "${LANGUAGES[@]}"; do
|
for YT_LANG in "${LANGUAGES[@]}"; do
|
||||||
echo "---TESTS FOR $YT_LANG ---"
|
echo "---TESTS FOR $YT_LANG ---"
|
||||||
|
|
||||||
if YT_LANG="$YT_LANG" cargo nextest run --no-fail-fast --retries 1 --test-threads 4 --test youtube -E 'not test(/^resolve/)'; then
|
if YT_LANG="$YT_LANG" cargo nextest run --no-fail-fast --retries 1 --test-threads 4 --test youtube -- \
|
||||||
|
--skip 'cookie_auth::' --skip 'search_suggestion' --skip 'isrc_search_languages' --skip 'resolve_'; then
|
||||||
echo "--- $YT_LANG COMPLETED ---"
|
echo "--- $YT_LANG COMPLETED ---"
|
||||||
else
|
else
|
||||||
echo "--- $YT_LANG FAILED ---"
|
echo "--- $YT_LANG FAILED ---"
|
||||||
|
|
|
||||||
229
tests/youtube.rs
229
tests/youtube.rs
|
|
@ -2734,6 +2734,94 @@ async fn isrc_search_languages(rp: RustyPipe) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mod cookie_auth {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[rstest]
|
||||||
|
#[tokio::test]
|
||||||
|
async fn history(rp: RustyPipe) {
|
||||||
|
let videos = rp.query().history().await.unwrap();
|
||||||
|
assert_next_history(videos, rp.query(), 100).await;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[rstest]
|
||||||
|
#[tokio::test]
|
||||||
|
async fn history_search(rp: RustyPipe) {
|
||||||
|
let videos = rp.query().history_search("a").await.unwrap();
|
||||||
|
assert_next_history(videos, rp.query(), 5).await;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[rstest]
|
||||||
|
#[tokio::test]
|
||||||
|
async fn subscriptions(rp: RustyPipe) {
|
||||||
|
let channels = rp.query().subscriptions().await.unwrap();
|
||||||
|
assert_next_items(channels, rp.query(), 5).await;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[rstest]
|
||||||
|
#[tokio::test]
|
||||||
|
async fn subscription_feed(rp: RustyPipe) {
|
||||||
|
let videos = rp.query().subscription_feed().await.unwrap();
|
||||||
|
assert_next_items(videos, rp.query(), 50).await;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[rstest]
|
||||||
|
#[tokio::test]
|
||||||
|
async fn liked_videos(rp: RustyPipe) {
|
||||||
|
let videos = rp.query().liked_videos().await.unwrap();
|
||||||
|
assert_next_items(videos.videos, rp.query(), 5).await;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[rstest]
|
||||||
|
#[tokio::test]
|
||||||
|
async fn watch_later(rp: RustyPipe) {
|
||||||
|
let videos = rp.query().watch_later().await.unwrap();
|
||||||
|
assert_next_items(videos.videos, rp.query(), 5).await;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[rstest]
|
||||||
|
#[tokio::test]
|
||||||
|
async fn music_history(rp: RustyPipe) {
|
||||||
|
let tracks = rp.query().music_history().await.unwrap();
|
||||||
|
assert_next_music_history(tracks, rp.query(), 150).await;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[rstest]
|
||||||
|
#[tokio::test]
|
||||||
|
async fn music_saved_artists(rp: RustyPipe) {
|
||||||
|
let artists = rp.query().music_saved_artists().await.unwrap();
|
||||||
|
assert_next_items(artists, rp.query(), 5).await;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[rstest]
|
||||||
|
#[tokio::test]
|
||||||
|
async fn music_saved_albums(rp: RustyPipe) {
|
||||||
|
let albums = rp.query().music_saved_albums().await.unwrap();
|
||||||
|
assert_next_items(albums, rp.query(), 5).await;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[rstest]
|
||||||
|
#[tokio::test]
|
||||||
|
async fn music_saved_tracks(rp: RustyPipe) {
|
||||||
|
let tracks = rp.query().music_saved_tracks().await.unwrap();
|
||||||
|
assert_next_items(tracks, rp.query(), 50).await;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[rstest]
|
||||||
|
#[tokio::test]
|
||||||
|
async fn music_saved_playlists(rp: RustyPipe) {
|
||||||
|
let playlists = rp.query().music_saved_playlists().await.unwrap();
|
||||||
|
assert_next_items(playlists, rp.query(), 5).await;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[rstest]
|
||||||
|
#[tokio::test]
|
||||||
|
async fn music_liked_tracks(rp: RustyPipe) {
|
||||||
|
let tracks = rp.query().music_liked_tracks().await.unwrap();
|
||||||
|
assert_next_items(tracks.tracks, rp.query(), 5).await;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[rstest]
|
#[rstest]
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn user_auth_check_login(rp: RustyPipe, auth_enabled: bool) {
|
async fn user_auth_check_login(rp: RustyPipe, auth_enabled: bool) {
|
||||||
|
|
@ -2743,138 +2831,6 @@ async fn user_auth_check_login(rp: RustyPipe, auth_enabled: bool) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rstest]
|
|
||||||
#[tokio::test]
|
|
||||||
async fn history(rp: RustyPipe, cookie_auth_enabled: bool) {
|
|
||||||
if !cookie_auth_enabled {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let videos = rp.query().history().await.unwrap();
|
|
||||||
assert_next_history(videos, rp.query(), 100).await;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[rstest]
|
|
||||||
#[tokio::test]
|
|
||||||
async fn history_search(rp: RustyPipe, cookie_auth_enabled: bool) {
|
|
||||||
if !cookie_auth_enabled {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let videos = rp.query().history_search("a").await.unwrap();
|
|
||||||
assert_next_history(videos, rp.query(), 5).await;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[rstest]
|
|
||||||
#[tokio::test]
|
|
||||||
async fn subscriptions(rp: RustyPipe, cookie_auth_enabled: bool) {
|
|
||||||
if !cookie_auth_enabled {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let channels = rp.query().subscriptions().await.unwrap();
|
|
||||||
assert_next_items(channels, rp.query(), 5).await;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[rstest]
|
|
||||||
#[tokio::test]
|
|
||||||
async fn subscription_feed(rp: RustyPipe, cookie_auth_enabled: bool) {
|
|
||||||
if !cookie_auth_enabled {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let videos = rp.query().subscription_feed().await.unwrap();
|
|
||||||
assert_next_items(videos, rp.query(), 50).await;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[rstest]
|
|
||||||
#[tokio::test]
|
|
||||||
async fn liked_videos(rp: RustyPipe, cookie_auth_enabled: bool) {
|
|
||||||
if !cookie_auth_enabled {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let videos = rp.query().liked_videos().await.unwrap();
|
|
||||||
assert_next_items(videos.videos, rp.query(), 5).await;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[rstest]
|
|
||||||
#[tokio::test]
|
|
||||||
async fn watch_later(rp: RustyPipe, cookie_auth_enabled: bool) {
|
|
||||||
if !cookie_auth_enabled {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let videos = rp.query().watch_later().await.unwrap();
|
|
||||||
assert_next_items(videos.videos, rp.query(), 5).await;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[rstest]
|
|
||||||
#[tokio::test]
|
|
||||||
async fn music_history(rp: RustyPipe, cookie_auth_enabled: bool) {
|
|
||||||
if !cookie_auth_enabled {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let tracks = rp.query().music_history().await.unwrap();
|
|
||||||
assert_next_music_history(tracks, rp.query(), 150).await;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[rstest]
|
|
||||||
#[tokio::test]
|
|
||||||
async fn music_saved_artists(rp: RustyPipe, cookie_auth_enabled: bool) {
|
|
||||||
if !cookie_auth_enabled {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let artists = rp.query().music_saved_artists().await.unwrap();
|
|
||||||
assert_next_items(artists, rp.query(), 5).await;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[rstest]
|
|
||||||
#[tokio::test]
|
|
||||||
async fn music_saved_albums(rp: RustyPipe, cookie_auth_enabled: bool) {
|
|
||||||
if !cookie_auth_enabled {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let albums = rp.query().music_saved_albums().await.unwrap();
|
|
||||||
assert_next_items(albums, rp.query(), 5).await;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[rstest]
|
|
||||||
#[tokio::test]
|
|
||||||
async fn music_saved_tracks(rp: RustyPipe, cookie_auth_enabled: bool) {
|
|
||||||
if !cookie_auth_enabled {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let tracks = rp.query().music_saved_tracks().await.unwrap();
|
|
||||||
assert_next_items(tracks, rp.query(), 50).await;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[rstest]
|
|
||||||
#[tokio::test]
|
|
||||||
async fn music_saved_playlists(rp: RustyPipe, cookie_auth_enabled: bool) {
|
|
||||||
if !cookie_auth_enabled {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let playlists = rp.query().music_saved_playlists().await.unwrap();
|
|
||||||
assert_next_items(playlists, rp.query(), 5).await;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[rstest]
|
|
||||||
#[tokio::test]
|
|
||||||
async fn music_liked_tracks(rp: RustyPipe, cookie_auth_enabled: bool) {
|
|
||||||
if !cookie_auth_enabled {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let tracks = rp.query().music_liked_tracks().await.unwrap();
|
|
||||||
assert_next_items(tracks.tracks, rp.query(), 5).await;
|
|
||||||
}
|
|
||||||
|
|
||||||
//#TESTUTIL
|
//#TESTUTIL
|
||||||
|
|
||||||
/// Get the language setting from the environment variable
|
/// Get the language setting from the environment variable
|
||||||
|
|
@ -2914,15 +2870,6 @@ fn auth_enabled(rp: RustyPipe) -> bool {
|
||||||
|| rp.query().auth_enabled(ClientType::Tv)
|
|| rp.query().auth_enabled(ClientType::Tv)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get a flag signaling if an authenticated user is expected
|
|
||||||
#[fixture]
|
|
||||||
fn cookie_auth_enabled(rp: RustyPipe) -> bool {
|
|
||||||
std::env::var("YT_AUTHENTICATED")
|
|
||||||
.map(|v| !v.is_empty() && !v.eq_ignore_ascii_case("false"))
|
|
||||||
.unwrap_or_default()
|
|
||||||
|| rp.query().auth_enabled(ClientType::Desktop)
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
/// Get a new RustyPipe instance with pre-set visitor data
|
/// Get a new RustyPipe instance with pre-set visitor data
|
||||||
fn rp_visitor_data(vdata: &str) -> RustyPipe {
|
fn rp_visitor_data(vdata: &str) -> RustyPipe {
|
||||||
|
|
|
||||||
Reference in a new issue