From 69d5bf2a89bd40525076b2caa8490408f8383853 Mon Sep 17 00:00:00 2001 From: litetex <40789489+litetex@users.noreply.github.com> Date: Wed, 12 Feb 2025 21:56:02 +0100 Subject: [PATCH] YouTube 100% Mock coverage --- .../youtube/YoutubeChannelExtractorTest.java | 7 ++++-- .../YoutubeJavaScriptExtractorTest.java | 13 +++++++--- .../YoutubeStreamExtractorDefaultTest.java | 25 +++++++++++++++---- 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeChannelExtractorTest.java b/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeChannelExtractorTest.java index e8dbee17c..c65b99663 100644 --- a/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeChannelExtractorTest.java +++ b/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeChannelExtractorTest.java @@ -473,7 +473,7 @@ public class YoutubeChannelExtractorTest { @BeforeAll public static void setUp() throws Exception { YoutubeTestsUtils.ensureStateless(); - NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "kurzgesagtAdditional")); + NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "kurzgesagtAdditional1")); extractor = (YoutubeChannelExtractor) YouTube.getChannelExtractor( "https://www.youtube.com/channel/UCsXVk37bltHxD1rDPwtNM8Q"); extractor.fetchPage(); @@ -483,7 +483,10 @@ public class YoutubeChannelExtractorTest { } @Test - public void testGetPageInNewExtractor() throws Exception { + void testGetPageInNewExtractor() throws Exception { + // Init downloader again for mock as otherwise request confusion occurs when using Mock + NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "kurzgesagtAdditional2")); + final ChannelExtractor newExtractor = YouTube.getChannelExtractor(extractor.getUrl()); newExtractor.fetchPage(); final ChannelTabExtractor newTabExtractor = YouTube.getChannelTabExtractor( diff --git a/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeJavaScriptExtractorTest.java b/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeJavaScriptExtractorTest.java index 0646a13c7..66d55869d 100644 --- a/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeJavaScriptExtractorTest.java +++ b/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeJavaScriptExtractorTest.java @@ -13,34 +13,41 @@ import java.io.IOException; class YoutubeJavaScriptExtractorTest { private static final String RESOURCE_PATH = - DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/js_extractor"; + DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/js_extractor/"; @BeforeEach - public void setup() throws IOException { + public void setup() { YoutubeTestsUtils.ensureStateless(); - NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH)); } @Test void testExtractJavaScriptUrlIframe() throws ParsingException { + NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "urlWithIframeResource")); + assertTrue(YoutubeJavaScriptExtractor.extractJavaScriptUrlWithIframeResource() .endsWith("base.js")); } @Test void testExtractJavaScriptUrlEmbed() throws ParsingException { + NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "embedWatchPage")); + assertTrue(YoutubeJavaScriptExtractor.extractJavaScriptUrlWithEmbedWatchPage("d4IGg5dqeO8") .endsWith("base.js")); } @Test void testExtractJavaScript__success() throws ParsingException { + NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "playerCode")); + final String playerJsCode = YoutubeJavaScriptExtractor.extractJavaScriptPlayerCode("d4IGg5dqeO8"); assertPlayerJsCode(playerJsCode); } @Test void testExtractJavaScript__invalidVideoId__success() throws ParsingException { + NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "playerCodeInvalidVideoId")); + String playerJsCode = YoutubeJavaScriptExtractor.extractJavaScriptPlayerCode("not_a_video_id"); assertPlayerJsCode(playerJsCode); diff --git a/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/stream/YoutubeStreamExtractorDefaultTest.java b/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/stream/YoutubeStreamExtractorDefaultTest.java index af414fa46..b73f2a22f 100644 --- a/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/stream/YoutubeStreamExtractorDefaultTest.java +++ b/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/stream/YoutubeStreamExtractorDefaultTest.java @@ -68,14 +68,14 @@ public class YoutubeStreamExtractorDefaultTest { public static final String YOUTUBE_LICENCE = "YouTube licence"; public static class NotAvailable { - @BeforeAll - public static void setUp() throws IOException { - YoutubeTestsUtils.ensureStateless(); - NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "notAvailable")); - } + private static final String RESOURCE_PATH = + YoutubeStreamExtractorDefaultTest.RESOURCE_PATH + "notAvailable/"; @Test void geoRestrictedContent() throws Exception { + YoutubeTestsUtils.ensureStateless(); + NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "restricted")); + final StreamExtractor extractor = YouTube.getStreamExtractor(BASE_URL + "_PL2HJKxnOM"); assertThrows(GeographicRestrictionException.class, extractor::fetchPage); @@ -83,6 +83,9 @@ public class YoutubeStreamExtractorDefaultTest { @Test void nonExistentFetch() throws Exception { + YoutubeTestsUtils.ensureStateless(); + NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "nonExistent")); + final StreamExtractor extractor = YouTube.getStreamExtractor(BASE_URL + "don-t-exist"); assertThrows(ContentNotAvailableException.class, extractor::fetchPage); @@ -90,6 +93,9 @@ public class YoutubeStreamExtractorDefaultTest { @Test void invalidId() throws Exception { + YoutubeTestsUtils.ensureStateless(); + NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "invalidId")); + final StreamExtractor extractor = YouTube.getStreamExtractor(BASE_URL + "INVALID_ID_INVALID_ID"); assertThrows(ParsingException.class, extractor::fetchPage); @@ -97,6 +103,9 @@ public class YoutubeStreamExtractorDefaultTest { @Test void paidContent() throws Exception { + YoutubeTestsUtils.ensureStateless(); + NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "paidContent")); + final StreamExtractor extractor = YouTube.getStreamExtractor(BASE_URL + "ayI2iBwGdxw"); assertThrows(PaidContentException.class, extractor::fetchPage); @@ -104,6 +113,9 @@ public class YoutubeStreamExtractorDefaultTest { @Test void privateContent() throws Exception { + YoutubeTestsUtils.ensureStateless(); + NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "privateContent")); + final StreamExtractor extractor = YouTube.getStreamExtractor(BASE_URL + "8VajtrESJzA"); assertThrows(PrivateContentException.class, extractor::fetchPage); @@ -111,6 +123,9 @@ public class YoutubeStreamExtractorDefaultTest { @Test void youtubeMusicPremiumContent() throws Exception { + YoutubeTestsUtils.ensureStateless(); + NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "musicPremiumContent")); + final StreamExtractor extractor = YouTube.getStreamExtractor(BASE_URL + "sMJ8bRN2dak"); assertThrows(YoutubeMusicPremiumContentException.class, extractor::fetchPage);