kopia lustrzana https://github.com/TeamNewPipe/NewPipeExtractor
Make all YT tests in MOCK mode use mock data
rodzic
cf5df3fcff
commit
177262485a
extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube
|
@ -16,7 +16,6 @@ import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
|||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||
import org.schabi.newpipe.extractor.ExtractorAsserts;
|
||||
import org.schabi.newpipe.extractor.NewPipe;
|
||||
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
|
||||
|
@ -25,7 +24,6 @@ import org.schabi.newpipe.extractor.channel.tabs.ChannelTabs;
|
|||
import org.schabi.newpipe.extractor.exceptions.AccountTerminatedException;
|
||||
import org.schabi.newpipe.extractor.exceptions.ContentNotAvailableException;
|
||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler;
|
||||
import org.schabi.newpipe.extractor.linkhandler.ReadyChannelTabListLinkHandler;
|
||||
import org.schabi.newpipe.extractor.services.BaseChannelExtractorTest;
|
||||
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor;
|
||||
|
@ -70,7 +68,7 @@ public class YoutubeChannelExtractorTest {
|
|||
final ChannelExtractor extractor =
|
||||
YouTube.getChannelExtractor("https://www.youtube.com/channel/UCTGjY2I-ZUGnwVoWAGRd7XQ");
|
||||
|
||||
AccountTerminatedException ex =
|
||||
final AccountTerminatedException ex =
|
||||
assertThrows(AccountTerminatedException.class, extractor::fetchPage);
|
||||
assertEquals(AccountTerminatedException.Reason.VIOLATION, ex.getReason());
|
||||
}
|
||||
|
@ -81,7 +79,7 @@ public class YoutubeChannelExtractorTest {
|
|||
final ChannelExtractor extractor =
|
||||
YouTube.getChannelExtractor("https://www.youtube.com/channel/UC0AuOxCr9TZ0TtEgL1zpIgA");
|
||||
|
||||
AccountTerminatedException ex =
|
||||
final AccountTerminatedException ex =
|
||||
assertThrows(AccountTerminatedException.class, extractor::fetchPage);
|
||||
assertEquals(AccountTerminatedException.Reason.VIOLATION, ex.getReason());
|
||||
}
|
||||
|
@ -93,7 +91,7 @@ public class YoutubeChannelExtractorTest {
|
|||
final ChannelExtractor extractor =
|
||||
YouTube.getChannelExtractor("https://www.youtube.com/channel/UCPWXIOPK-9myzek6jHR5yrg");
|
||||
|
||||
AccountTerminatedException ex =
|
||||
final AccountTerminatedException ex =
|
||||
assertThrows(AccountTerminatedException.class, extractor::fetchPage);
|
||||
assertEquals(AccountTerminatedException.Reason.VIOLATION, ex.getReason());
|
||||
}
|
||||
|
@ -105,7 +103,7 @@ public class YoutubeChannelExtractorTest {
|
|||
final ChannelExtractor extractor =
|
||||
YouTube.getChannelExtractor("https://youtube.com/channel/UCB1o7_gbFp2PLsamWxFenBg");
|
||||
|
||||
AccountTerminatedException ex =
|
||||
final AccountTerminatedException ex =
|
||||
assertThrows(AccountTerminatedException.class, extractor::fetchPage);
|
||||
assertEquals(AccountTerminatedException.Reason.VIOLATION, ex.getReason());
|
||||
}
|
||||
|
@ -118,7 +116,7 @@ public class YoutubeChannelExtractorTest {
|
|||
final ChannelExtractor extractor =
|
||||
YouTube.getChannelExtractor("https://www.youtube.com/channel/UCoaO4U_p7G7AwalqSbGCZOA");
|
||||
|
||||
AccountTerminatedException ex =
|
||||
final AccountTerminatedException ex =
|
||||
assertThrows(AccountTerminatedException.class, extractor::fetchPage);
|
||||
assertEquals(AccountTerminatedException.Reason.VIOLATION, ex.getReason());
|
||||
}
|
||||
|
@ -130,7 +128,7 @@ public class YoutubeChannelExtractorTest {
|
|||
final ChannelExtractor extractor =
|
||||
YouTube.getChannelExtractor("https://www.youtube.com/channel/UCI4i4RgFT5ilfMpna4Z_Y8w");
|
||||
|
||||
AccountTerminatedException ex =
|
||||
final AccountTerminatedException ex =
|
||||
assertThrows(AccountTerminatedException.class, extractor::fetchPage);
|
||||
assertEquals(AccountTerminatedException.Reason.VIOLATION, ex.getReason());
|
||||
}
|
||||
|
@ -169,26 +167,31 @@ public class YoutubeChannelExtractorTest {
|
|||
// Extractor
|
||||
//////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testServiceId() {
|
||||
assertEquals(YouTube.getServiceId(), extractor.getServiceId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testName() throws Exception {
|
||||
assertEquals("Gronkh", extractor.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testId() throws Exception {
|
||||
assertEquals("UCYJ61XIK64sp6ZFFS8sctxw", extractor.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testUrl() throws ParsingException {
|
||||
assertEquals("https://www.youtube.com/channel/UCYJ61XIK64sp6ZFFS8sctxw", extractor.getUrl());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testOriginalUrl() throws ParsingException {
|
||||
assertEquals("http://www.youtube.com/@Gronkh", extractor.getOriginalUrl());
|
||||
|
@ -198,26 +201,31 @@ public class YoutubeChannelExtractorTest {
|
|||
// ChannelExtractor
|
||||
//////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testDescription() throws Exception {
|
||||
assertContains("Ungebremster Spieltrieb seit 1896.", extractor.getDescription());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testAvatars() throws Exception {
|
||||
YoutubeTestsUtils.testImages(extractor.getAvatars());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testBanners() throws Exception {
|
||||
YoutubeTestsUtils.testImages(extractor.getBanners());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testFeedUrl() throws Exception {
|
||||
assertEquals("https://www.youtube.com/feeds/videos.xml?channel_id=UCYJ61XIK64sp6ZFFS8sctxw", extractor.getFeedUrl());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testSubscriberCount() throws Exception {
|
||||
ExtractorAsserts.assertGreaterOrEqual(4_900_000, extractor.getSubscriberCount());
|
||||
|
@ -262,26 +270,31 @@ public class YoutubeChannelExtractorTest {
|
|||
// Extractor
|
||||
//////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testServiceId() {
|
||||
assertEquals(YouTube.getServiceId(), extractor.getServiceId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testName() throws Exception {
|
||||
assertEquals("Vsauce", extractor.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testId() throws Exception {
|
||||
assertEquals("UC6nSFpj9HTCZ5t-N3Rm3-HA", extractor.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testUrl() throws ParsingException {
|
||||
assertEquals("https://www.youtube.com/channel/UC6nSFpj9HTCZ5t-N3Rm3-HA", extractor.getUrl());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testOriginalUrl() throws ParsingException {
|
||||
assertEquals("https://www.youtube.com/user/Vsauce", extractor.getOriginalUrl());
|
||||
|
@ -291,31 +304,37 @@ public class YoutubeChannelExtractorTest {
|
|||
// ChannelExtractor
|
||||
//////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testDescription() throws Exception {
|
||||
assertContains("Our World is Amazing", extractor.getDescription());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testAvatars() throws Exception {
|
||||
YoutubeTestsUtils.testImages(extractor.getAvatars());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testBanners() throws Exception {
|
||||
YoutubeTestsUtils.testImages(extractor.getBanners());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testFeedUrl() throws Exception {
|
||||
assertEquals("https://www.youtube.com/feeds/videos.xml?channel_id=UC6nSFpj9HTCZ5t-N3Rm3-HA", extractor.getFeedUrl());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testSubscriberCount() throws Exception {
|
||||
ExtractorAsserts.assertGreaterOrEqual(17_000_000, extractor.getSubscriberCount());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testVerified() throws Exception {
|
||||
assertTrue(extractor.isVerified());
|
||||
|
@ -355,26 +374,31 @@ public class YoutubeChannelExtractorTest {
|
|||
// Extractor
|
||||
//////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testServiceId() {
|
||||
assertEquals(YouTube.getServiceId(), extractor.getServiceId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testName() throws Exception {
|
||||
assertTrue(extractor.getName().startsWith("Kurzgesagt"));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testId() throws Exception {
|
||||
assertEquals("UCsXVk37bltHxD1rDPwtNM8Q", extractor.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testUrl() throws ParsingException {
|
||||
assertEquals("https://www.youtube.com/channel/UCsXVk37bltHxD1rDPwtNM8Q", extractor.getUrl());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testOriginalUrl() throws ParsingException {
|
||||
assertEquals("https://www.youtube.com/channel/UCsXVk37bltHxD1rDPwtNM8Q", extractor.getOriginalUrl());
|
||||
|
@ -384,6 +408,7 @@ public class YoutubeChannelExtractorTest {
|
|||
// ChannelExtractor
|
||||
//////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testDescription() throws Exception {
|
||||
ExtractorAsserts.assertContains("science", extractor.getDescription());
|
||||
|
@ -392,26 +417,31 @@ public class YoutubeChannelExtractorTest {
|
|||
//assertTrue(description, description.contains("Currently we make one animation video per month"));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testAvatars() throws Exception {
|
||||
YoutubeTestsUtils.testImages(extractor.getAvatars());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testBanners() throws Exception {
|
||||
YoutubeTestsUtils.testImages(extractor.getBanners());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testFeedUrl() throws Exception {
|
||||
assertEquals("https://www.youtube.com/feeds/videos.xml?channel_id=UCsXVk37bltHxD1rDPwtNM8Q", extractor.getFeedUrl());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testSubscriberCount() throws Exception {
|
||||
ExtractorAsserts.assertGreaterOrEqual(17_000_000, extractor.getSubscriberCount());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testVerified() throws Exception {
|
||||
assertTrue(extractor.isVerified());
|
||||
|
@ -442,8 +472,8 @@ public class YoutubeChannelExtractorTest {
|
|||
|
||||
@BeforeAll
|
||||
public static void setUp() throws Exception {
|
||||
// Test is not deterministic, mocks can't be used
|
||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||
YoutubeTestsUtils.ensureStateless();
|
||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "kurzgesagtAdditional"));
|
||||
extractor = (YoutubeChannelExtractor) YouTube.getChannelExtractor(
|
||||
"https://www.youtube.com/channel/UCsXVk37bltHxD1rDPwtNM8Q");
|
||||
extractor.fetchPage();
|
||||
|
@ -478,26 +508,31 @@ public class YoutubeChannelExtractorTest {
|
|||
// Extractor
|
||||
//////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testServiceId() {
|
||||
assertEquals(YouTube.getServiceId(), extractor.getServiceId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testName() throws Exception {
|
||||
assertEquals("Captain Disillusion", extractor.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testId() throws Exception {
|
||||
assertEquals("UCEOXxzW2vU0P-0THehuIIeg", extractor.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testUrl() throws ParsingException {
|
||||
assertEquals("https://www.youtube.com/channel/UCEOXxzW2vU0P-0THehuIIeg", extractor.getUrl());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testOriginalUrl() throws ParsingException {
|
||||
assertEquals("https://www.youtube.com/user/CaptainDisillusion/videos", extractor.getOriginalUrl());
|
||||
|
@ -507,31 +542,37 @@ public class YoutubeChannelExtractorTest {
|
|||
// ChannelExtractor
|
||||
//////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testDescription() throws Exception {
|
||||
assertContains("In a world where", extractor.getDescription());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testAvatars() throws Exception {
|
||||
YoutubeTestsUtils.testImages(extractor.getAvatars());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testBanners() throws Exception {
|
||||
YoutubeTestsUtils.testImages(extractor.getBanners());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testFeedUrl() throws Exception {
|
||||
assertEquals("https://www.youtube.com/feeds/videos.xml?channel_id=UCEOXxzW2vU0P-0THehuIIeg", extractor.getFeedUrl());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testSubscriberCount() throws Exception {
|
||||
ExtractorAsserts.assertGreaterOrEqual(2_000_000, extractor.getSubscriberCount());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testVerified() throws Exception {
|
||||
assertTrue(extractor.isVerified());
|
||||
|
@ -571,26 +612,31 @@ public class YoutubeChannelExtractorTest {
|
|||
// Extractor
|
||||
//////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testServiceId() {
|
||||
assertEquals(YouTube.getServiceId(), extractor.getServiceId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testName() throws Exception {
|
||||
assertEquals("random channel", extractor.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testId() throws Exception {
|
||||
assertEquals("UCUaQMQS9lY5lit3vurpXQ6w", extractor.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testUrl() throws ParsingException {
|
||||
assertEquals("https://www.youtube.com/channel/UCUaQMQS9lY5lit3vurpXQ6w", extractor.getUrl());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testOriginalUrl() throws ParsingException {
|
||||
assertEquals("https://www.youtube.com/channel/UCUaQMQS9lY5lit3vurpXQ6w", extractor.getOriginalUrl());
|
||||
|
@ -600,31 +646,37 @@ public class YoutubeChannelExtractorTest {
|
|||
// ChannelExtractor
|
||||
//////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testDescription() throws Exception {
|
||||
assertContains("Hey there iu will upoload a load of pranks onto this channel", extractor.getDescription());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testAvatars() throws Exception {
|
||||
YoutubeTestsUtils.testImages(extractor.getAvatars());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testBanners() throws Exception {
|
||||
YoutubeTestsUtils.testImages(extractor.getBanners());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testFeedUrl() throws Exception {
|
||||
assertEquals("https://www.youtube.com/feeds/videos.xml?channel_id=UCUaQMQS9lY5lit3vurpXQ6w", extractor.getFeedUrl());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testSubscriberCount() throws Exception {
|
||||
ExtractorAsserts.assertGreaterOrEqual(50, extractor.getSubscriberCount());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testVerified() throws Exception {
|
||||
assertFalse(extractor.isVerified());
|
||||
|
@ -662,26 +714,31 @@ public class YoutubeChannelExtractorTest {
|
|||
// Extractor
|
||||
//////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testServiceId() {
|
||||
assertEquals(YouTube.getServiceId(), extractor.getServiceId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testName() throws Exception {
|
||||
assertEquals("Sports", extractor.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testId() throws Exception {
|
||||
assertEquals("UCEgdi0XIXXZ-qJOFPf4JSKw", extractor.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testUrl() throws ParsingException {
|
||||
assertEquals("https://www.youtube.com/channel/UCEgdi0XIXXZ-qJOFPf4JSKw", extractor.getUrl());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testOriginalUrl() throws ParsingException {
|
||||
assertEquals("https://www.youtube.com/channel/UCEgdi0XIXXZ-qJOFPf4JSKw", extractor.getOriginalUrl());
|
||||
|
@ -697,27 +754,32 @@ public class YoutubeChannelExtractorTest {
|
|||
assertNull(extractor.getDescription());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testAvatars() throws Exception {
|
||||
YoutubeTestsUtils.testImages(extractor.getAvatars());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testBanners() {
|
||||
// A CarouselHeaderRenderer doesn't contain a banner
|
||||
assertEmpty(extractor.getBanners());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testFeedUrl() throws Exception {
|
||||
assertEquals("https://www.youtube.com/feeds/videos.xml?channel_id=UCEgdi0XIXXZ-qJOFPf4JSKw", extractor.getFeedUrl());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testSubscriberCount() throws Exception {
|
||||
ExtractorAsserts.assertGreaterOrEqual(70_000_000, extractor.getSubscriberCount());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Test
|
||||
public void testVerified() throws Exception {
|
||||
assertTrue(extractor.isVerified());
|
||||
|
|
|
@ -1,31 +1,5 @@
|
|||
package org.schabi.newpipe.extractor.services.youtube;
|
||||
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||
import org.schabi.newpipe.extractor.NewPipe;
|
||||
import org.schabi.newpipe.extractor.services.youtube.dashmanifestcreators.CreationException;
|
||||
import org.schabi.newpipe.extractor.services.youtube.dashmanifestcreators.YoutubeOtfDashManifestCreator;
|
||||
import org.schabi.newpipe.extractor.services.youtube.dashmanifestcreators.YoutubeProgressiveDashManifestCreator;
|
||||
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor;
|
||||
import org.schabi.newpipe.extractor.stream.DeliveryMethod;
|
||||
import org.schabi.newpipe.extractor.stream.Stream;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.NodeList;
|
||||
import org.xml.sax.InputSource;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import java.io.StringReader;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Random;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertAll;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
|
@ -50,6 +24,33 @@ import static org.schabi.newpipe.extractor.services.youtube.dashmanifestcreators
|
|||
import static org.schabi.newpipe.extractor.services.youtube.dashmanifestcreators.YoutubeDashManifestCreatorsUtils.SEGMENT_TIMELINE;
|
||||
import static org.schabi.newpipe.extractor.utils.Utils.isBlank;
|
||||
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||
import org.schabi.newpipe.extractor.NewPipe;
|
||||
import org.schabi.newpipe.extractor.services.youtube.dashmanifestcreators.CreationException;
|
||||
import org.schabi.newpipe.extractor.services.youtube.dashmanifestcreators.YoutubeOtfDashManifestCreator;
|
||||
import org.schabi.newpipe.extractor.services.youtube.dashmanifestcreators.YoutubeProgressiveDashManifestCreator;
|
||||
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor;
|
||||
import org.schabi.newpipe.extractor.stream.DeliveryMethod;
|
||||
import org.schabi.newpipe.extractor.stream.Stream;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.NodeList;
|
||||
import org.xml.sax.InputSource;
|
||||
|
||||
import java.io.StringReader;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
|
||||
/**
|
||||
* Test for YouTube DASH manifest creators.
|
||||
*
|
||||
|
@ -80,19 +81,22 @@ import static org.schabi.newpipe.extractor.utils.Utils.isBlank;
|
|||
* </p>
|
||||
*/
|
||||
class YoutubeDashManifestCreatorsTest {
|
||||
private static final String RESOURCE_PATH =
|
||||
DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/dash_manifest";
|
||||
|
||||
// Setting a higher number may let Google video servers return 403s
|
||||
private static final int MAX_STREAMS_TO_TEST_PER_METHOD = 3;
|
||||
private static final String url = "https://www.youtube.com/watch?v=DJ8GQUNUXGM";
|
||||
private static final String URL = "https://www.youtube.com/watch?v=DJ8GQUNUXGM";
|
||||
private static YoutubeStreamExtractor extractor;
|
||||
private static long videoLength;
|
||||
|
||||
@BeforeAll
|
||||
public static void setUp() throws Exception {
|
||||
YoutubeParsingHelper.resetClientVersion();
|
||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||
YoutubeTestsUtils.ensureStateless();
|
||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH));
|
||||
|
||||
extractor = (YoutubeStreamExtractor) YouTube.getStreamExtractor(url);
|
||||
extractor = (YoutubeStreamExtractor) YouTube.getStreamExtractor(URL);
|
||||
extractor.fetchPage();
|
||||
videoLength = extractor.getLength();
|
||||
}
|
||||
|
|
|
@ -4,40 +4,43 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
|||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||
import org.schabi.newpipe.extractor.ExtractorAsserts;
|
||||
import org.schabi.newpipe.extractor.NewPipe;
|
||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class YoutubeJavaScriptExtractorTest {
|
||||
class YoutubeJavaScriptExtractorTest {
|
||||
private static final String RESOURCE_PATH =
|
||||
DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/js_extractor";
|
||||
|
||||
@BeforeEach
|
||||
public void setup() throws IOException {
|
||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||
YoutubeTestsUtils.ensureStateless();
|
||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExtractJavaScriptUrlIframe() throws ParsingException {
|
||||
void testExtractJavaScriptUrlIframe() throws ParsingException {
|
||||
assertTrue(YoutubeJavaScriptExtractor.extractJavaScriptUrlWithIframeResource()
|
||||
.endsWith("base.js"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExtractJavaScriptUrlEmbed() throws ParsingException {
|
||||
void testExtractJavaScriptUrlEmbed() throws ParsingException {
|
||||
assertTrue(YoutubeJavaScriptExtractor.extractJavaScriptUrlWithEmbedWatchPage("d4IGg5dqeO8")
|
||||
.endsWith("base.js"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExtractJavaScript__success() throws ParsingException {
|
||||
String playerJsCode = YoutubeJavaScriptExtractor.extractJavaScriptPlayerCode("d4IGg5dqeO8");
|
||||
void testExtractJavaScript__success() throws ParsingException {
|
||||
final String playerJsCode = YoutubeJavaScriptExtractor.extractJavaScriptPlayerCode("d4IGg5dqeO8");
|
||||
assertPlayerJsCode(playerJsCode);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExtractJavaScript__invalidVideoId__success() throws ParsingException {
|
||||
void testExtractJavaScript__invalidVideoId__success() throws ParsingException {
|
||||
String playerJsCode = YoutubeJavaScriptExtractor.extractJavaScriptPlayerCode("not_a_video_id");
|
||||
assertPlayerJsCode(playerJsCode);
|
||||
|
||||
|
|
|
@ -1,24 +1,27 @@
|
|||
package org.schabi.newpipe.extractor.services.youtube;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.CsvSource;
|
||||
import org.junit.jupiter.params.provider.ValueSource;
|
||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||
import org.schabi.newpipe.extractor.NewPipe;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
class YoutubeSignaturesTest {
|
||||
private static final String RESOURCE_PATH =
|
||||
DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/signatures";
|
||||
|
||||
@BeforeEach
|
||||
void setUp() throws IOException {
|
||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||
YoutubeTestsUtils.ensureStateless();
|
||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH));
|
||||
}
|
||||
|
||||
@ValueSource(strings = {
|
||||
|
|
|
@ -6,18 +6,20 @@ import static org.junit.jupiter.api.Assertions.fail;
|
|||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||
import org.schabi.newpipe.extractor.NewPipe;
|
||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
class YoutubeThrottlingParameterDeobfuscationTest {
|
||||
private static final String RESOURCE_PATH =
|
||||
DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/parameter_deobf";
|
||||
|
||||
@BeforeEach
|
||||
void setup() throws IOException {
|
||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||
YoutubeTestsUtils.ensureStateless();
|
||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -4,27 +4,34 @@ import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
|||
import static java.util.Collections.singletonList;
|
||||
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||
import org.schabi.newpipe.extractor.InfoItem;
|
||||
import org.schabi.newpipe.extractor.NewPipe;
|
||||
import org.schabi.newpipe.extractor.StreamingService;
|
||||
import org.schabi.newpipe.extractor.search.SearchExtractor;
|
||||
import org.schabi.newpipe.extractor.services.DefaultSearchExtractorTest;
|
||||
import org.schabi.newpipe.extractor.services.youtube.YoutubeTestsUtils;
|
||||
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
// Doesn't work with mocks. Makes request with different `dataToSend` I think
|
||||
public class YoutubeMusicSearchExtractorTest {
|
||||
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/music_search/";
|
||||
private static final String BASE_SEARCH_URL = "music.youtube.com/search?q=";
|
||||
|
||||
public static class MusicSongs extends DefaultSearchExtractorTest {
|
||||
private static SearchExtractor extractor;
|
||||
private static final String QUERY = "mocromaniac";
|
||||
|
||||
@BeforeAll
|
||||
public static void setUp() throws Exception {
|
||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||
YoutubeTestsUtils.ensureStateless();
|
||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "music_songs"));
|
||||
|
||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_SONGS), "");
|
||||
extractor.fetchPage();
|
||||
}
|
||||
|
@ -33,8 +40,8 @@ public class YoutubeMusicSearchExtractorTest {
|
|||
@Override public StreamingService expectedService() { return YouTube; }
|
||||
@Override public String expectedName() { return QUERY; }
|
||||
@Override public String expectedId() { return QUERY; }
|
||||
@Override public String expectedUrlContains() { return "music.youtube.com/search?q=" + QUERY; }
|
||||
@Override public String expectedOriginalUrlContains() { return "music.youtube.com/search?q=" + QUERY; }
|
||||
@Override public String expectedUrlContains() { return BASE_SEARCH_URL + QUERY; }
|
||||
@Override public String expectedOriginalUrlContains() { return BASE_SEARCH_URL + QUERY; }
|
||||
@Override public String expectedSearchString() { return QUERY; }
|
||||
@Nullable @Override public String expectedSearchSuggestion() { return null; }
|
||||
@Override public InfoItem.InfoType expectedInfoItemType() { return InfoItem.InfoType.STREAM; }
|
||||
|
@ -46,7 +53,9 @@ public class YoutubeMusicSearchExtractorTest {
|
|||
|
||||
@BeforeAll
|
||||
public static void setUp() throws Exception {
|
||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||
YoutubeTestsUtils.ensureStateless();
|
||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "music_videos"));
|
||||
|
||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_VIDEOS), "");
|
||||
extractor.fetchPage();
|
||||
}
|
||||
|
@ -55,8 +64,8 @@ public class YoutubeMusicSearchExtractorTest {
|
|||
@Override public StreamingService expectedService() { return YouTube; }
|
||||
@Override public String expectedName() { return QUERY; }
|
||||
@Override public String expectedId() { return QUERY; }
|
||||
@Override public String expectedUrlContains() { return "music.youtube.com/search?q=" + QUERY; }
|
||||
@Override public String expectedOriginalUrlContains() { return "music.youtube.com/search?q=" + QUERY; }
|
||||
@Override public String expectedUrlContains() { return BASE_SEARCH_URL + QUERY; }
|
||||
@Override public String expectedOriginalUrlContains() { return BASE_SEARCH_URL + QUERY; }
|
||||
@Override public String expectedSearchString() { return QUERY; }
|
||||
@Nullable @Override public String expectedSearchSuggestion() { return null; }
|
||||
@Override public InfoItem.InfoType expectedInfoItemType() { return InfoItem.InfoType.STREAM; }
|
||||
|
@ -68,7 +77,9 @@ public class YoutubeMusicSearchExtractorTest {
|
|||
|
||||
@BeforeAll
|
||||
public static void setUp() throws Exception {
|
||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||
YoutubeTestsUtils.ensureStateless();
|
||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "music_albums"));
|
||||
|
||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_ALBUMS), "");
|
||||
extractor.fetchPage();
|
||||
}
|
||||
|
@ -77,8 +88,8 @@ public class YoutubeMusicSearchExtractorTest {
|
|||
@Override public StreamingService expectedService() { return YouTube; }
|
||||
@Override public String expectedName() { return QUERY; }
|
||||
@Override public String expectedId() { return QUERY; }
|
||||
@Override public String expectedUrlContains() { return "music.youtube.com/search?q=" + URLEncoder.encode(QUERY); }
|
||||
@Override public String expectedOriginalUrlContains() { return "music.youtube.com/search?q=" + URLEncoder.encode(QUERY); }
|
||||
@Override public String expectedUrlContains() { return BASE_SEARCH_URL + URLEncoder.encode(QUERY, StandardCharsets.UTF_8); }
|
||||
@Override public String expectedOriginalUrlContains() { return BASE_SEARCH_URL + URLEncoder.encode(QUERY, StandardCharsets.UTF_8); }
|
||||
@Override public String expectedSearchString() { return QUERY; }
|
||||
@Nullable @Override public String expectedSearchSuggestion() { return null; }
|
||||
@Override public InfoItem.InfoType expectedInfoItemType() { return InfoItem.InfoType.PLAYLIST; }
|
||||
|
@ -90,7 +101,9 @@ public class YoutubeMusicSearchExtractorTest {
|
|||
|
||||
@BeforeAll
|
||||
public static void setUp() throws Exception {
|
||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||
YoutubeTestsUtils.ensureStateless();
|
||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "music_playlists"));
|
||||
|
||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_PLAYLISTS), "");
|
||||
extractor.fetchPage();
|
||||
}
|
||||
|
@ -99,8 +112,8 @@ public class YoutubeMusicSearchExtractorTest {
|
|||
@Override public StreamingService expectedService() { return YouTube; }
|
||||
@Override public String expectedName() { return QUERY; }
|
||||
@Override public String expectedId() { return QUERY; }
|
||||
@Override public String expectedUrlContains() { return "music.youtube.com/search?q=" + QUERY; }
|
||||
@Override public String expectedOriginalUrlContains() { return "music.youtube.com/search?q=" + QUERY; }
|
||||
@Override public String expectedUrlContains() { return BASE_SEARCH_URL + QUERY; }
|
||||
@Override public String expectedOriginalUrlContains() { return BASE_SEARCH_URL + QUERY; }
|
||||
@Override public String expectedSearchString() { return QUERY; }
|
||||
@Nullable @Override public String expectedSearchSuggestion() { return null; }
|
||||
@Override public InfoItem.InfoType expectedInfoItemType() { return InfoItem.InfoType.PLAYLIST; }
|
||||
|
@ -112,7 +125,9 @@ public class YoutubeMusicSearchExtractorTest {
|
|||
|
||||
@BeforeAll
|
||||
public static void setUp() throws Exception {
|
||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||
YoutubeTestsUtils.ensureStateless();
|
||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "music_artists"));
|
||||
|
||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_ARTISTS), "");
|
||||
extractor.fetchPage();
|
||||
}
|
||||
|
@ -121,8 +136,8 @@ public class YoutubeMusicSearchExtractorTest {
|
|||
@Override public StreamingService expectedService() { return YouTube; }
|
||||
@Override public String expectedName() { return QUERY; }
|
||||
@Override public String expectedId() { return QUERY; }
|
||||
@Override public String expectedUrlContains() { return "music.youtube.com/search?q=" + QUERY; }
|
||||
@Override public String expectedOriginalUrlContains() { return "music.youtube.com/search?q=" + QUERY; }
|
||||
@Override public String expectedUrlContains() { return BASE_SEARCH_URL + QUERY; }
|
||||
@Override public String expectedOriginalUrlContains() { return BASE_SEARCH_URL + QUERY; }
|
||||
@Override public String expectedSearchString() { return QUERY; }
|
||||
@Nullable @Override public String expectedSearchSuggestion() { return null; }
|
||||
@Override public InfoItem.InfoType expectedInfoItemType() { return InfoItem.InfoType.CHANNEL; }
|
||||
|
@ -134,7 +149,9 @@ public class YoutubeMusicSearchExtractorTest {
|
|||
|
||||
@BeforeAll
|
||||
public static void setUp() throws Exception {
|
||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||
YoutubeTestsUtils.ensureStateless();
|
||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "suggestion"));
|
||||
|
||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_SONGS), "");
|
||||
extractor.fetchPage();
|
||||
}
|
||||
|
@ -143,8 +160,8 @@ public class YoutubeMusicSearchExtractorTest {
|
|||
@Override public StreamingService expectedService() { return YouTube; }
|
||||
@Override public String expectedName() { return QUERY; }
|
||||
@Override public String expectedId() { return QUERY; }
|
||||
@Override public String expectedUrlContains() { return "music.youtube.com/search?q=" + URLEncoder.encode(QUERY); }
|
||||
@Override public String expectedOriginalUrlContains() { return "music.youtube.com/search?q=" + URLEncoder.encode(QUERY); }
|
||||
@Override public String expectedUrlContains() { return BASE_SEARCH_URL + URLEncoder.encode(QUERY, StandardCharsets.UTF_8); }
|
||||
@Override public String expectedOriginalUrlContains() { return BASE_SEARCH_URL + URLEncoder.encode(QUERY, StandardCharsets.UTF_8); }
|
||||
@Override public String expectedSearchString() { return QUERY; }
|
||||
@Nullable @Override public String expectedSearchSuggestion() { return "mega man x3"; }
|
||||
@Override public InfoItem.InfoType expectedInfoItemType() { return InfoItem.InfoType.STREAM; }
|
||||
|
@ -157,7 +174,9 @@ public class YoutubeMusicSearchExtractorTest {
|
|||
|
||||
@BeforeAll
|
||||
public static void setUp() throws Exception {
|
||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||
YoutubeTestsUtils.ensureStateless();
|
||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "corrected"));
|
||||
|
||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_SONGS), "");
|
||||
extractor.fetchPage();
|
||||
}
|
||||
|
@ -166,8 +185,8 @@ public class YoutubeMusicSearchExtractorTest {
|
|||
@Override public StreamingService expectedService() { return YouTube; }
|
||||
@Override public String expectedName() { return QUERY; }
|
||||
@Override public String expectedId() { return QUERY; }
|
||||
@Override public String expectedUrlContains() { return "music.youtube.com/search?q=" + URLEncoder.encode(QUERY); }
|
||||
@Override public String expectedOriginalUrlContains() { return "music.youtube.com/search?q=" + URLEncoder.encode(QUERY); }
|
||||
@Override public String expectedUrlContains() { return BASE_SEARCH_URL + URLEncoder.encode(QUERY, StandardCharsets.UTF_8); }
|
||||
@Override public String expectedOriginalUrlContains() { return BASE_SEARCH_URL + URLEncoder.encode(QUERY, StandardCharsets.UTF_8); }
|
||||
@Override public String expectedSearchString() { return QUERY; }
|
||||
@Nullable @Override public String expectedSearchSuggestion() { return EXPECTED_SUGGESTION; }
|
||||
@Override public InfoItem.InfoType expectedInfoItemType() { return InfoItem.InfoType.STREAM; }
|
||||
|
|
Ładowanie…
Reference in New Issue