summaryrefslogtreecommitdiff
path: root/app/src/androidTest/java/de/test/antennapod/service/download
diff options
context:
space:
mode:
authorH. Lehmann <ByteHamster@users.noreply.github.com>2019-12-20 00:12:51 +0100
committerGitHub <noreply@github.com>2019-12-20 00:12:51 +0100
commit707fcdbc7fc874b99cc08e14906310c718b5e8a7 (patch)
tree6de1485cb2494299b39e70488e68c658ee8fb442 /app/src/androidTest/java/de/test/antennapod/service/download
parent19890afc663d067f70e0286eeaa73cb8cb7acbad (diff)
parent6dc361c5424a9b5b3f516cd2aa531b88011a3413 (diff)
downloadAntennaPod-707fcdbc7fc874b99cc08e14906310c718b5e8a7.zip
Merge pull request #3654 from ByteHamster/emulator-test
Run integration tests on CI
Diffstat (limited to 'app/src/androidTest/java/de/test/antennapod/service/download')
-rw-r--r--app/src/androidTest/java/de/test/antennapod/service/download/DownloadServiceTest.java71
-rw-r--r--app/src/androidTest/java/de/test/antennapod/service/download/HttpDownloaderTest.java29
2 files changed, 50 insertions, 50 deletions
diff --git a/app/src/androidTest/java/de/test/antennapod/service/download/DownloadServiceTest.java b/app/src/androidTest/java/de/test/antennapod/service/download/DownloadServiceTest.java
index d0e14d70a..1ca4de1ad 100644
--- a/app/src/androidTest/java/de/test/antennapod/service/download/DownloadServiceTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/service/download/DownloadServiceTest.java
@@ -1,10 +1,13 @@
package de.test.antennapod.service.download;
+import android.content.Context;
+import android.content.Intent;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.test.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;
+import de.test.antennapod.EspressoTestUtils;
import org.awaitility.Awaitility;
import org.awaitility.core.ConditionTimeoutException;
import org.junit.After;
@@ -53,6 +56,8 @@ public class DownloadServiceTest {
@Before
public void setUp() throws Exception {
+ EspressoTestUtils.clearDatabase();
+ EspressoTestUtils.clearPreferences();
origFactory = DownloadService.getDownloaderFactory();
testFeed = setUpTestFeeds();
testMedia11 = testFeed.getItemAtIndex(0).getMedia();
@@ -77,6 +82,10 @@ public class DownloadServiceTest {
@After
public void tearDown() throws Exception {
DownloadService.setDownloaderFactory(origFactory);
+ Context context = InstrumentationRegistry.getTargetContext();
+ DownloadRequester.getInstance().cancelAllDownloads(context);
+ context.stopService(new Intent(context, DownloadService.class));
+ EspressoTestUtils.tryKillDownloadService();
}
@Test
@@ -136,8 +145,9 @@ public class DownloadServiceTest {
}
private void doTestCancelDownload_UndoEnqueue(boolean itemAlreadyInQueue) throws Exception {
+ Context context = InstrumentationRegistry.getTargetContext();
// let download takes longer to ensure the test can cancel the download in time
- DownloadService.setDownloaderFactory(new StubDownloaderFactory(150, downloadStatus -> {
+ DownloadService.setDownloaderFactory(new StubDownloaderFactory(10000, downloadStatus -> {
downloadStatus.setSuccessful();
}));
UserPreferences.setEnqueueDownloadedEpisodes(true);
@@ -146,45 +156,38 @@ public class DownloadServiceTest {
final long item1Id = testMedia11.getItem().getId();
if (itemAlreadyInQueue) {
// simulate item already in queue condition
- DBWriter.addQueueItem(InstrumentationRegistry.getTargetContext(), false, item1Id).get();
+ DBWriter.addQueueItem(context, false, item1Id).get();
assertTrue(DBReader.getQueueIDList().contains(item1Id));
} else {
assertFalse(DBReader.getQueueIDList().contains(item1Id));
}
withFeedItemEventListener(feedItemEventListener -> {
- try {
- DownloadRequester.getInstance().downloadMedia(false, InstrumentationRegistry.getTargetContext(),
- testMedia11.getItem());
- if (itemAlreadyInQueue) {
- Awaitility.await("download service receives the request - "
- + "no event is expected before cancel is issued")
- .atLeast(100, TimeUnit.MILLISECONDS)
- .until(() -> true);
- } else {
- Awaitility.await("item enqueue event")
- .atMost(1000, TimeUnit.MILLISECONDS)
- .until(() -> feedItemEventListener.getEvents().size() >= 1);
- }
- DownloadRequester.getInstance().cancelDownload(InstrumentationRegistry.getTargetContext(),
- testMedia11);
- final int totalNumEventsExpected = itemAlreadyInQueue ? 1 : 3;
- Awaitility.await("item dequeue event + download termination event")
- .atMost(1000, TimeUnit.MILLISECONDS)
- .until(() ->feedItemEventListener.getEvents().size() >= totalNumEventsExpected);
- assertFalse("The download should have been canceled",
- DBReader.getFeedMedia(testMedia11.getId()).isDownloaded());
- if (itemAlreadyInQueue) {
- assertTrue("The FeedItem should still be in the queue after the download is cancelled."
- + " It's there before download.",
- DBReader.getQueueIDList().contains(item1Id));
- } else {
- assertFalse("The FeedItem should not be in the queue after the download is cancelled.",
- DBReader.getQueueIDList().contains(item1Id));
- }
- } catch (ConditionTimeoutException cte) {
- fail("The expected FeedItemEvent (for media download complete) has not been posted. "
- + cte.getMessage());
+ DownloadRequester.getInstance().downloadMedia(false, context, testMedia11.getItem());
+ if (itemAlreadyInQueue) {
+ Awaitility.await("download service receives the request - "
+ + "no event is expected before cancel is issued")
+ .atLeast(100, TimeUnit.MILLISECONDS)
+ .until(() -> true);
+ } else {
+ Awaitility.await("item enqueue event")
+ .atMost(2000, TimeUnit.MILLISECONDS)
+ .until(() -> feedItemEventListener.getEvents().size() >= 1);
+ }
+ DownloadRequester.getInstance().cancelDownload(context, testMedia11);
+ final int totalNumEventsExpected = itemAlreadyInQueue ? 1 : 3;
+ Awaitility.await("item dequeue event + download termination event")
+ .atMost(1000, TimeUnit.MILLISECONDS)
+ .until(() -> feedItemEventListener.getEvents().size() >= totalNumEventsExpected);
+ assertFalse("The download should have been canceled",
+ DBReader.getFeedMedia(testMedia11.getId()).isDownloaded());
+ if (itemAlreadyInQueue) {
+ assertTrue("The FeedItem should still be in the queue after the download is cancelled."
+ + " It's there before download.",
+ DBReader.getQueueIDList().contains(item1Id));
+ } else {
+ assertFalse("The FeedItem should not be in the queue after the download is cancelled.",
+ DBReader.getQueueIDList().contains(item1Id));
}
});
}
diff --git a/app/src/androidTest/java/de/test/antennapod/service/download/HttpDownloaderTest.java b/app/src/androidTest/java/de/test/antennapod/service/download/HttpDownloaderTest.java
index 4530b7679..7d9ec7c98 100644
--- a/app/src/androidTest/java/de/test/antennapod/service/download/HttpDownloaderTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/service/download/HttpDownloaderTest.java
@@ -29,10 +29,9 @@ public class HttpDownloaderTest {
private static final String TAG = "HttpDownloaderTest";
private static final String DOWNLOAD_DIR = "testdownloads";
- private static boolean successful = true;
-
+ private String url404;
+ private String urlAuth;
private File destDir;
-
private HTTPBin httpServer;
public HttpDownloaderTest() {
@@ -57,6 +56,8 @@ public class HttpDownloaderTest {
assertTrue(destDir.exists());
httpServer = new HTTPBin();
httpServer.start();
+ url404 = httpServer.getBaseUrl() + "/status/404";
+ urlAuth = httpServer.getBaseUrl() + "/basic-auth/user/passwd";
}
private FeedFileImpl setupFeedFile(String downloadUrl, String title, boolean deleteExisting) {
@@ -88,33 +89,29 @@ public class HttpDownloaderTest {
return downloader;
}
-
- private static final String URL_404 = HTTPBin.BASE_URL + "/status/404";
- private static final String URL_AUTH = HTTPBin.BASE_URL + "/basic-auth/user/passwd";
-
@Test
public void testPassingHttp() {
- download(HTTPBin.BASE_URL + "/status/200", "test200", true);
+ download(httpServer.getBaseUrl() + "/status/200", "test200", true);
}
@Test
public void testRedirect() {
- download(HTTPBin.BASE_URL + "/redirect/4", "testRedirect", true);
+ download(httpServer.getBaseUrl() + "/redirect/4", "testRedirect", true);
}
@Test
public void testGzip() {
- download(HTTPBin.BASE_URL + "/gzip/100", "testGzip", true);
+ download(httpServer.getBaseUrl() + "/gzip/100", "testGzip", true);
}
@Test
public void test404() {
- download(URL_404, "test404", false);
+ download(url404, "test404", false);
}
@Test
public void testCancel() {
- final String url = HTTPBin.BASE_URL + "/delay/3";
+ final String url = httpServer.getBaseUrl() + "/delay/3";
FeedFileImpl feedFile = setupFeedFile(url, "delay", true);
final Downloader downloader = new HttpDownloader(new DownloadRequest(feedFile.getFile_url(), url, "delay", 0, feedFile.getTypeAsInt()));
Thread t = new Thread() {
@@ -139,7 +136,7 @@ public class HttpDownloaderTest {
@Test
public void testDeleteOnFailShouldDelete() {
- Downloader downloader = download(URL_404, "testDeleteOnFailShouldDelete", false, true, null, null, true);
+ Downloader downloader = download(url404, "testDeleteOnFailShouldDelete", false, true, null, null, true);
assertFalse(new File(downloader.getDownloadRequest().getDestination()).exists());
}
@@ -149,18 +146,18 @@ public class HttpDownloaderTest {
File dest = new File(destDir, filename);
dest.delete();
assertTrue(dest.createNewFile());
- Downloader downloader = download(URL_404, filename, false, false, null, null, false);
+ Downloader downloader = download(url404, filename, false, false, null, null, false);
assertTrue(new File(downloader.getDownloadRequest().getDestination()).exists());
}
@Test
public void testAuthenticationShouldSucceed() throws InterruptedException {
- download(URL_AUTH, "testAuthSuccess", true, true, "user", "passwd", true);
+ download(urlAuth, "testAuthSuccess", true, true, "user", "passwd", true);
}
@Test
public void testAuthenticationShouldFail() {
- Downloader downloader = download(URL_AUTH, "testAuthSuccess", false, true, "user", "Wrong passwd", true);
+ Downloader downloader = download(urlAuth, "testAuthSuccess", false, true, "user", "Wrong passwd", true);
assertEquals(DownloadError.ERROR_UNAUTHORIZED, downloader.getResult().getReason());
}