From bc3d8a89b6a80e993911aef3e2210799269747a8 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 23 Mar 2016 16:18:53 +0100 Subject: [PATCH] add tests of HttpDownloader --- app/build.gradle | 2 + .../fdroid/fdroid/net/HttpDownloaderTest.java | 59 +++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 app/src/test/java/org/fdroid/fdroid/net/HttpDownloaderTest.java diff --git a/app/build.gradle b/app/build.gradle index 1280c28d3..8f53c13bc 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -28,6 +28,8 @@ dependencies { } compile 'io.reactivex:rxjava:1.1.0' compile 'io.reactivex:rxandroid:0.23.0' + + testCompile 'junit:junit:4.12' } if (!hasProperty('sourceDeps')) { diff --git a/app/src/test/java/org/fdroid/fdroid/net/HttpDownloaderTest.java b/app/src/test/java/org/fdroid/fdroid/net/HttpDownloaderTest.java new file mode 100644 index 000000000..a12f34cd6 --- /dev/null +++ b/app/src/test/java/org/fdroid/fdroid/net/HttpDownloaderTest.java @@ -0,0 +1,59 @@ + +package org.fdroid.fdroid.net; + +import org.junit.Test; + +import java.io.File; +import java.io.IOException; +import java.net.URL; + +import static org.junit.Assert.assertTrue; + +public class HttpDownloaderTest { + + String[] urls = { + "https://www.google.com", + "https://en.wikipedia.org/wiki/Index.html", + "https://mirrors.kernel.org/debian/dists/stable/Release", + "https://f-droid.org/archive/de.we.acaldav_5.apk", + // sites that use SNI for HTTPS + "https://guardianproject.info/fdroid/repo/index.jar", + "https://firstlook.org", + }; + + private boolean receivedProgress; + + @Test + public void downloadUninterruptedTest() throws IOException, InterruptedException { + for (String urlString : urls) { + URL url = new URL(urlString); + File destFile = File.createTempFile("dl-", ""); + destFile.deleteOnExit(); // this probably does nothing, but maybe... + HttpDownloader httpDownloader = new HttpDownloader(url, destFile, null); + httpDownloader.download(); + assertTrue(destFile.exists()); + assertTrue(destFile.canRead()); + } + } + + @Test + public void downloadUninterruptedTestWithProgress() throws IOException, InterruptedException { + for (String urlString : urls) { + receivedProgress = false; + URL url = new URL(urlString); + File destFile = File.createTempFile("dl-", ""); + destFile.deleteOnExit(); // this probably does nothing, but maybe... + HttpDownloader httpDownloader = new HttpDownloader(url, destFile, null); + httpDownloader.setListener(new Downloader.DownloaderProgressListener() { + @Override + public void sendProgress(URL sourceUrl, int bytesRead, int totalBytes) { + receivedProgress = true; + } + }); + httpDownloader.download(); + assertTrue(destFile.exists()); + assertTrue(destFile.canRead()); + assertTrue(receivedProgress); + } + } +}