From 4007fca6689317fc18c8578b2e0643421d6b2ac0 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Tue, 24 Jan 2023 14:13:38 +0000 Subject: [PATCH] Add integration tests for importing an RSS feed from a file. --- .../feed/FeedManagerIntegrationTest.java | 48 ++++++++-- .../resources/briarproject.org_news_index.xml | 95 +++++++++++++++++++ 2 files changed, 133 insertions(+), 10 deletions(-) create mode 100644 briar-core/src/test/resources/briarproject.org_news_index.xml diff --git a/briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerIntegrationTest.java index 56aa1637a..42480694c 100644 --- a/briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerIntegrationTest.java +++ b/briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerIntegrationTest.java @@ -5,30 +5,43 @@ import org.briarproject.bramble.api.identity.IdentityManager; import org.briarproject.bramble.api.lifecycle.LifecycleManager; import org.briarproject.bramble.test.BrambleTestCase; import org.briarproject.bramble.test.TestDatabaseConfigModule; -import org.briarproject.bramble.test.TestUtils; import org.briarproject.briar.api.blog.Blog; import org.briarproject.briar.api.blog.BlogManager; import org.briarproject.briar.api.blog.BlogPostHeader; import org.briarproject.briar.api.feed.Feed; import org.briarproject.briar.api.feed.FeedManager; +import org.briarproject.nullsafety.NullSafety; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.File; +import java.io.FileInputStream; import java.util.Collection; +import javax.annotation.Nullable; + +import static org.briarproject.bramble.test.TestUtils.deleteTestDirectory; import static org.briarproject.bramble.test.TestUtils.getSecretKey; +import static org.briarproject.bramble.test.TestUtils.getTestDirectory; +import static org.briarproject.nullsafety.NullSafety.requireNonNull; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; public class FeedManagerIntegrationTest extends BrambleTestCase { + private static final String FEED_PATH = + "src/test/resources/briarproject.org_news_index.xml"; + private static final String FEED_URL = + "https://briarproject.org/news/index.xml"; + private static final String FEED_TITLE = "News - Briar"; + private LifecycleManager lifecycleManager; private FeedManager feedManager; private BlogManager blogManager; - private final File testDir = TestUtils.getTestDirectory(); + private final File testDir = getTestDirectory(); private final File testFile = new File(testDir, "feedTest"); @Before @@ -38,7 +51,8 @@ public class FeedManagerIntegrationTest extends BrambleTestCase { DaggerFeedManagerIntegrationTestComponent.builder() .testDatabaseConfigModule( new TestDatabaseConfigModule(testFile)).build(); - FeedManagerIntegrationTestComponent.Helper.injectEagerSingletons(component); + FeedManagerIntegrationTestComponent.Helper + .injectEagerSingletons(component); component.inject(this); IdentityManager identityManager = component.getIdentityManager(); @@ -54,17 +68,30 @@ public class FeedManagerIntegrationTest extends BrambleTestCase { } @Test - public void testFeedImportAndRemoval() throws Exception { + public void testFeedImportAndRemovalFromUrl() throws Exception { + testFeedImportAndRemoval(FEED_URL, null); + } + + @Test + public void testFeedImportAndRemovalFromFile() throws Exception { + testFeedImportAndRemoval(null, FEED_PATH); + } + + private void testFeedImportAndRemoval(@Nullable String url, + @Nullable String path) throws Exception { // initially, there's only the one personal blog Collection blogs = blogManager.getBlogs(); assertEquals(1, blogs.size()); Blog personalBlog = blogs.iterator().next(); // add feed into a dedicated blog - String url = "https://www.schneier.com/blog/atom.xml"; - feedManager.addFeed(url); + if (url == null) { + feedManager.addFeed(new FileInputStream(requireNonNull(path))); + } else { + feedManager.addFeed(url); + } - // then there's the feed's blog now + // now there's the feed's blog too blogs = blogManager.getBlogs(); assertEquals(2, blogs.size()); Blog feedBlog = null; @@ -80,15 +107,16 @@ public class FeedManagerIntegrationTest extends BrambleTestCase { assertTrue(feed.getLastEntryTime() > 0); assertTrue(feed.getAdded() > 0); assertTrue(feed.getUpdated() > 0); - assertEquals(url, feed.getProperties().getUrl()); + assertTrue(NullSafety.equals(url, feed.getProperties().getUrl())); assertEquals(feedBlog, feed.getBlog()); - assertEquals("Schneier on Security", feed.getTitle()); + assertEquals(FEED_TITLE, feed.getTitle()); assertEquals(feed.getTitle(), feed.getBlog().getName()); assertEquals(feed.getTitle(), feed.getLocalAuthor().getName()); // check the feed entries have been added to the blog as expected Collection headers = blogManager.getPostHeaders(feedBlog.getId()); + assertFalse(headers.isEmpty()); for (BlogPostHeader header : headers) { assertTrue(header.isRssFeed()); } @@ -105,6 +133,6 @@ public class FeedManagerIntegrationTest extends BrambleTestCase { public void tearDown() throws Exception { lifecycleManager.stopServices(); lifecycleManager.waitForShutdown(); - TestUtils.deleteTestDirectory(testDir); + deleteTestDirectory(testDir); } } diff --git a/briar-core/src/test/resources/briarproject.org_news_index.xml b/briar-core/src/test/resources/briarproject.org_news_index.xml new file mode 100644 index 000000000..7d27dfbc1 --- /dev/null +++ b/briar-core/src/test/resources/briarproject.org_news_index.xml @@ -0,0 +1,95 @@ + + + News - Briar + + + + 2022-12-05T12:00:00+00:00 + https://briarproject.org/news/ + + The Briar Team + + Hugo -- gohugo.io + + <![CDATA[Briar Desktop got another round of funding]]> + + https://briarproject.org/news/2022-briar-desktop-nlnet-funding/ + 2022-12-05T12:00:00+00:00 + 2022-12-05T12:00:00+00:00 + + + + + <![CDATA[Briar is available on Google Play again]]> + + https://briarproject.org/news/2022-briar-removed-from-google-play/ + 2022-02-28T13:20:00+00:00 + 2022-02-28T13:20:00+00:00 + + + + + <![CDATA[Briar 1.4 released - offline app sharing, message transfer via SD cards and USB sticks]]> + + https://briarproject.org/news/2021-briar-1.4-released/ + 2021-11-15T00:00:00+00:00 + 2021-11-15T00:00:00+00:00 + + + + + <![CDATA[Briar 1.3 released - image attachments, profile images and disappearing messages]]> + + https://briarproject.org/news/2021-briar-1.3-released/ + 2021-06-07T00:00:00+00:00 + 2021-06-07T00:00:00+00:00 + + + + + <![CDATA[Briar 1.2 released, contacts can now be added by exchanging links]]> + + https://briarproject.org/news/2019-briar-1.2-released-remote-contacts/ + 2019-11-06T00:00:00+00:00 + 2019-11-06T00:00:00+00:00 + + + + + <![CDATA[Briar 1.1 released with dark theme, new emoji and more]]> + + https://briarproject.org/news/2018-briar-1.1-released/ + 2018-09-14T00:00:00+00:00 + 2018-09-14T00:00:00+00:00 + + + + + <![CDATA[Briar - Secure P2P Messenger Releases First Version, Receives New Funding]]> + + https://briarproject.org/news/2018-1.0-released-new-funding/ + 2018-05-09T00:00:00+00:00 + 2018-05-09T00:00:00+00:00 + + + + + <![CDATA[Briar - Darknet Messenger Releases Beta, Passes Security Audit]]> + + https://briarproject.org/news/2017-beta-released-security-audit/ + 2017-07-21T00:00:00+00:00 + 2017-07-21T00:00:00+00:00 + + + +