|
@@ -26,16 +26,10 @@ import com.google.common.collect.Lists;
|
26
|
26
|
import com.google.common.collect.Maps;
|
27
|
27
|
import com.google.common.jimfs.Configuration;
|
28
|
28
|
import com.google.common.jimfs.Jimfs;
|
29
|
|
-import org.junit.Before;
|
30
|
|
-import org.junit.Test;
|
31
|
|
-import org.junit.runner.RunWith;
|
32
|
|
-import org.mockito.InOrder;
|
33
|
|
-import org.mockito.Mock;
|
34
|
|
-import org.mockito.runners.MockitoJUnitRunner;
|
35
|
29
|
|
36
|
30
|
import java.io.ByteArrayInputStream;
|
|
31
|
+import java.io.ByteArrayOutputStream;
|
37
|
32
|
import java.io.IOException;
|
38
|
|
-import java.io.OutputStream;
|
39
|
33
|
import java.net.URLConnection;
|
40
|
34
|
import java.nio.charset.Charset;
|
41
|
35
|
import java.nio.file.FileSystem;
|
|
@@ -43,24 +37,36 @@ import java.nio.file.Files;
|
43
|
37
|
import java.nio.file.Path;
|
44
|
38
|
import java.util.Map;
|
45
|
39
|
|
46
|
|
-import static org.junit.Assert.*;
|
|
40
|
+import org.junit.Before;
|
|
41
|
+import org.junit.Test;
|
|
42
|
+import org.junit.runner.RunWith;
|
|
43
|
+import org.mockito.Mock;
|
|
44
|
+import org.mockito.runners.MockitoJUnitRunner;
|
|
45
|
+
|
|
46
|
+import static org.junit.Assert.assertEquals;
|
|
47
|
+import static org.junit.Assert.assertFalse;
|
|
48
|
+import static org.junit.Assert.assertTrue;
|
47
|
49
|
import static org.mockito.Matchers.anyBoolean;
|
48
|
|
-import static org.mockito.Matchers.anyByte;
|
49
|
50
|
import static org.mockito.Matchers.anyInt;
|
50
|
|
-import static org.mockito.Mockito.*;
|
|
51
|
+import static org.mockito.Mockito.atLeastOnce;
|
|
52
|
+import static org.mockito.Mockito.never;
|
|
53
|
+import static org.mockito.Mockito.verify;
|
|
54
|
+import static org.mockito.Mockito.when;
|
51
|
55
|
|
52
|
56
|
@RunWith(MockitoJUnitRunner.class)
|
53
|
57
|
public class DownloaderTest {
|
54
|
58
|
|
55
|
59
|
@Mock private URLConnection mockedConnection;
|
56
|
|
- @Mock private OutputStream os;
|
57
|
60
|
@Mock private DownloadListener listener;
|
|
61
|
+ private ByteArrayOutputStream os;
|
58
|
62
|
private FileSystem fakeFS;
|
59
|
63
|
|
60
|
64
|
@Before
|
61
|
65
|
public void setup() throws IOException {
|
62
|
66
|
fakeFS = Jimfs.newFileSystem(Configuration.unix());
|
63
|
|
- ByteArrayInputStream is = new ByteArrayInputStream(
|
|
67
|
+ os = new ByteArrayOutputStream();
|
|
68
|
+
|
|
69
|
+ final ByteArrayInputStream is = new ByteArrayInputStream(
|
64
|
70
|
"OMG IM A FAKE DOWNLOAD".getBytes("UTF-8"));
|
65
|
71
|
when(mockedConnection.getInputStream()).thenReturn(is);
|
66
|
72
|
when(mockedConnection.getOutputStream()).thenReturn(os);
|
|
@@ -72,7 +78,7 @@ public class DownloaderTest {
|
72
|
78
|
new TestableDownloader().getPage("rar");
|
73
|
79
|
verify(mockedConnection, never()).setRequestProperty("Content-Type",
|
74
|
80
|
"application/x-www-form-urlencoded");
|
75
|
|
- verify(os, never()).write(anyByte());
|
|
81
|
+ assertEquals(0, os.size());
|
76
|
82
|
}
|
77
|
83
|
|
78
|
84
|
@Test
|
|
@@ -81,10 +87,7 @@ public class DownloaderTest {
|
81
|
87
|
new TestableDownloader().getPage("rar", postData);
|
82
|
88
|
verify(mockedConnection).setRequestProperty("Content-Type",
|
83
|
89
|
"application/x-www-form-urlencoded");
|
84
|
|
- final InOrder order = inOrder(os);
|
85
|
|
- for (int i=0; i < postData.length(); i++) {
|
86
|
|
- order.verify(os).write((byte) postData.charAt(i));
|
87
|
|
- }
|
|
90
|
+ assertEquals(postData, os.toString());
|
88
|
91
|
}
|
89
|
92
|
|
90
|
93
|
@Test
|
|
@@ -92,14 +95,13 @@ public class DownloaderTest {
|
92
|
95
|
final Map<String, String> postData = Maps.newHashMap();
|
93
|
96
|
postData.put("key1", "value1");
|
94
|
97
|
postData.put("key2", "value2");
|
95
|
|
- final String postDataString = "key1=value1&key2=value2";
|
96
|
98
|
new TestableDownloader().getPage("rar", postData);
|
97
|
99
|
verify(mockedConnection).setRequestProperty("Content-Type",
|
98
|
100
|
"application/x-www-form-urlencoded");
|
99
|
|
- final InOrder order = inOrder(os);
|
100
|
|
- for (int i=0; i < postDataString.length(); i++) {
|
101
|
|
- order.verify(os).write(postDataString.charAt(i));
|
102
|
|
- }
|
|
101
|
+
|
|
102
|
+ final String postDataString1 = "key1=value1&key2=value2";
|
|
103
|
+ final String postDataString2 = "key2=value2&key1=value1";
|
|
104
|
+ assertTrue(postDataString1.equals(os.toString()) || postDataString2.equals(os.toString()));
|
103
|
105
|
}
|
104
|
106
|
|
105
|
107
|
@Test
|
|
@@ -125,6 +127,7 @@ public class DownloaderTest {
|
125
|
127
|
}
|
126
|
128
|
|
127
|
129
|
private class TestableDownloader extends Downloader {
|
|
130
|
+ @Override
|
128
|
131
|
protected URLConnection getURLConnection(final String url) throws IOException {
|
129
|
132
|
return mockedConnection;
|
130
|
133
|
}
|