package org.schabi.newpipe.extractor.services.peertube; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; 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; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.linkhandler.ChannelTabs; import org.schabi.newpipe.extractor.services.BaseChannelExtractorTest; import org.schabi.newpipe.extractor.services.peertube.extractors.PeertubeChannelExtractor; import java.util.Set; import java.util.stream.Collectors; import static org.junit.jupiter.api.Assertions.*; import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl; import static org.schabi.newpipe.extractor.ServiceList.PeerTube; /** * Test for {@link PeertubeChannelExtractor} */ public class PeertubeChannelExtractorTest { public static class LaQuadratureDuNet implements BaseChannelExtractorTest { private static PeertubeChannelExtractor extractor; @BeforeAll public static void setUp() throws Exception { NewPipe.init(DownloaderTestImpl.getInstance()); // setting instance might break test when running in parallel PeerTube.setInstance(new PeertubeInstance("https://framatube.org", "Framatube")); extractor = (PeertubeChannelExtractor) PeerTube .getChannelExtractor("https://framatube.org/video-channels/lqdn_channel@video.lqdn.fr/videos"); extractor.fetchPage(); } /*////////////////////////////////////////////////////////////////////////// // Extractor //////////////////////////////////////////////////////////////////////////*/ @Test @Override public void testServiceId() { assertEquals(PeerTube.getServiceId(), extractor.getServiceId()); } @Test @Override public void testName() throws ParsingException { assertEquals("La Quadrature du Net", extractor.getName()); } @Test @Override public void testId() throws ParsingException { assertEquals("video-channels/lqdn_channel@video.lqdn.fr", extractor.getId()); } @Test @Override public void testUrl() throws ParsingException { assertEquals("https://framatube.org/video-channels/lqdn_channel@video.lqdn.fr", extractor.getUrl()); } @Test @Override public void testOriginalUrl() throws ParsingException { assertEquals("https://framatube.org/video-channels/lqdn_channel@video.lqdn.fr/videos", extractor.getOriginalUrl()); } /*////////////////////////////////////////////////////////////////////////// // ChannelExtractor //////////////////////////////////////////////////////////////////////////*/ @Test @Override public void testDescription() throws ParsingException { assertNotNull(extractor.getDescription()); } @Test public void testParentChannelName() throws ParsingException { assertEquals("lqdn", extractor.getParentChannelName()); } @Test public void testParentChannelUrl() throws ParsingException { assertEquals("https://video.lqdn.fr/accounts/lqdn", extractor.getParentChannelUrl()); } @Test public void testParentChannelAvatarUrl() throws ParsingException { assertIsSecureUrl(extractor.getParentChannelAvatarUrl()); } @Test @Override public void testAvatarUrl() throws ParsingException { assertIsSecureUrl(extractor.getAvatarUrl()); } @Test @Override public void testBannerUrl() throws ParsingException { assertNull(extractor.getBannerUrl()); } @Test @Override public void testFeedUrl() throws ParsingException { assertEquals("https://framatube.org/feeds/videos.xml?videoChannelId=1126", extractor.getFeedUrl()); } @Test @Override public void testSubscriberCount() throws ParsingException { ExtractorAsserts.assertGreaterOrEqual(230, extractor.getSubscriberCount()); } @Test @Override public void testVerified() throws Exception { assertFalse(extractor.isVerified()); } @Test @Override public void testTabs() throws Exception { Set tabs = extractor.getTabs().stream() .map(linkHandler -> linkHandler.getContentFilters().get(0)).collect(Collectors.toSet()); assertTrue(tabs.contains(ChannelTabs.PLAYLISTS)); } } public static class ChatSceptique implements BaseChannelExtractorTest { private static PeertubeChannelExtractor extractor; @BeforeAll public static void setUp() throws Exception { NewPipe.init(DownloaderTestImpl.getInstance()); // setting instance might break test when running in parallel PeerTube.setInstance(new PeertubeInstance("https://framatube.org", "Framatube")); extractor = (PeertubeChannelExtractor) PeerTube .getChannelExtractor("https://framatube.org/api/v1/video-channels/chatsceptique@skeptikon.fr"); extractor.fetchPage(); } /*////////////////////////////////////////////////////////////////////////// // Additional Testing //////////////////////////////////////////////////////////////////////////*/ @Test public void testGetPageInNewExtractor() throws Exception { final ChannelExtractor newExtractor = PeerTube.getChannelExtractor(extractor.getUrl()); newExtractor.fetchPage(); } /*////////////////////////////////////////////////////////////////////////// // Extractor //////////////////////////////////////////////////////////////////////////*/ @Test @Override public void testServiceId() { assertEquals(PeerTube.getServiceId(), extractor.getServiceId()); } @Test @Override public void testName() throws ParsingException { assertEquals("Chat Sceptique", extractor.getName()); } @Test @Override public void testId() throws ParsingException { assertEquals("video-channels/chatsceptique@skeptikon.fr", extractor.getId()); } @Test @Override public void testUrl() throws ParsingException { assertEquals("https://framatube.org/video-channels/chatsceptique@skeptikon.fr", extractor.getUrl()); } @Test @Override public void testOriginalUrl() throws ParsingException { assertEquals("https://framatube.org/api/v1/video-channels/chatsceptique@skeptikon.fr", extractor.getOriginalUrl()); } /*////////////////////////////////////////////////////////////////////////// // ChannelExtractor //////////////////////////////////////////////////////////////////////////*/ @Test @Override public void testDescription() throws ParsingException { assertNotNull(extractor.getDescription()); } @Test public void testParentChannelName() throws ParsingException { assertEquals("nathan", extractor.getParentChannelName()); } @Test public void testParentChannelUrl() throws ParsingException { assertEquals("https://skeptikon.fr/accounts/nathan", extractor.getParentChannelUrl()); } @Test public void testParentChannelAvatarUrl() throws ParsingException { assertIsSecureUrl(extractor.getParentChannelAvatarUrl()); } @Test @Override public void testAvatarUrl() throws ParsingException { assertIsSecureUrl(extractor.getAvatarUrl()); } @Test @Override public void testBannerUrl() throws ParsingException { assertNull(extractor.getBannerUrl()); } @Test @Override public void testFeedUrl() throws ParsingException { assertEquals("https://framatube.org/feeds/videos.xml?videoChannelId=137", extractor.getFeedUrl()); } @Test @Override public void testSubscriberCount() throws ParsingException { ExtractorAsserts.assertGreaterOrEqual(700, extractor.getSubscriberCount()); } @Test @Override public void testVerified() throws Exception { assertFalse(extractor.isVerified()); } @Test @Override public void testTabs() throws Exception { Set tabs = extractor.getTabs().stream() .map(linkHandler -> linkHandler.getContentFilters().get(0)).collect(Collectors.toSet()); assertTrue(tabs.contains(ChannelTabs.PLAYLISTS)); } } }