13
14
CPPUNIT_TEST_SUITE(RequestTest);
14
15
CPPUNIT_TEST(testSetUri1);
15
16
CPPUNIT_TEST(testSetUri2);
16
CPPUNIT_TEST(testSetUri3);
17
CPPUNIT_TEST(testSetUri4);
18
CPPUNIT_TEST(testSetUri5);
19
CPPUNIT_TEST(testSetUri6);
20
17
CPPUNIT_TEST(testSetUri7);
21
CPPUNIT_TEST(testSetUri8);
22
CPPUNIT_TEST(testSetUri9);
23
CPPUNIT_TEST(testSetUri10);
24
CPPUNIT_TEST(testSetUri11);
25
CPPUNIT_TEST(testSetUri12);
26
CPPUNIT_TEST(testSetUri13);
27
CPPUNIT_TEST(testSetUri14);
28
CPPUNIT_TEST(testSetUri15);
29
CPPUNIT_TEST(testSetUri16);
30
18
CPPUNIT_TEST(testSetUri17);
31
CPPUNIT_TEST(testSetUri18);
32
CPPUNIT_TEST(testSetUri19);
33
CPPUNIT_TEST(testSetUri20);
34
CPPUNIT_TEST(testSetUri_username);
35
CPPUNIT_TEST(testSetUri_usernamePassword);
36
CPPUNIT_TEST(testSetUri_zeroUsername);
37
19
CPPUNIT_TEST(testSetUri_supportsPersistentConnection);
38
CPPUNIT_TEST(testSetUri_ipv6);
39
20
CPPUNIT_TEST(testRedirectUri);
40
21
CPPUNIT_TEST(testRedirectUri2);
41
22
CPPUNIT_TEST(testRedirectUri_supportsPersistentConnection);
123
87
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getQuery());
126
void RequestTest::testSetUri3() {
128
bool v = req.setUri("http://aria.rednoah.com/aria2/index.html");
131
CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol());
132
CPPUNIT_ASSERT_EQUAL((uint16_t)80, req.getPort());
133
CPPUNIT_ASSERT_EQUAL(std::string("aria.rednoah.com"), req.getHost());
134
CPPUNIT_ASSERT_EQUAL(std::string("/aria2"), req.getDir());
135
CPPUNIT_ASSERT_EQUAL(std::string("index.html"), req.getFile());
136
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getQuery());
139
void RequestTest::testSetUri4() {
141
bool v = req.setUri("http://aria.rednoah.com/aria2/aria3/index.html");
144
CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol());
145
CPPUNIT_ASSERT_EQUAL((uint16_t)80, req.getPort());
146
CPPUNIT_ASSERT_EQUAL(std::string("aria.rednoah.com"), req.getHost());
147
CPPUNIT_ASSERT_EQUAL(std::string("/aria2/aria3"), req.getDir());
148
CPPUNIT_ASSERT_EQUAL(std::string("index.html"), req.getFile());
149
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getQuery());
152
void RequestTest::testSetUri5() {
154
bool v = req.setUri("http://aria.rednoah.com/aria2/aria3/");
157
CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol());
158
CPPUNIT_ASSERT_EQUAL((uint16_t)80, req.getPort());
159
CPPUNIT_ASSERT_EQUAL(std::string("aria.rednoah.com"), req.getHost());
160
CPPUNIT_ASSERT_EQUAL(std::string("/aria2/aria3"), req.getDir());
161
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getFile());
162
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getQuery());
165
void RequestTest::testSetUri6() {
167
bool v = req.setUri("http://aria.rednoah.com/aria2/aria3");
170
CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol());
171
CPPUNIT_ASSERT_EQUAL((uint16_t)80, req.getPort());
172
CPPUNIT_ASSERT_EQUAL(std::string("aria.rednoah.com"), req.getHost());
173
CPPUNIT_ASSERT_EQUAL(std::string("/aria2"), req.getDir());
174
CPPUNIT_ASSERT_EQUAL(std::string("aria3"), req.getFile());
175
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getQuery());
178
90
void RequestTest::testSetUri7() {
180
92
bool v = req.setUri("http://");
182
94
CPPUNIT_ASSERT(!v);
185
void RequestTest::testSetUri8() {
187
bool v = req.setUri("http:/aria.rednoah.com");
192
void RequestTest::testSetUri9() {
194
bool v = req.setUri("h");
199
void RequestTest::testSetUri10() {
201
bool v = req.setUri("");
206
void RequestTest::testSetUri11() {
208
bool v = req.setUri("http://host?query/");
211
CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol());
212
CPPUNIT_ASSERT_EQUAL(std::string("host"), req.getHost());
213
CPPUNIT_ASSERT_EQUAL(std::string("/"), req.getDir());
214
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getFile());
215
CPPUNIT_ASSERT_EQUAL(std::string("?query/"), req.getQuery());
218
void RequestTest::testSetUri12() {
220
bool v = req.setUri("http://host?query");
223
CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol());
224
CPPUNIT_ASSERT_EQUAL(std::string("host"), req.getHost());
225
CPPUNIT_ASSERT_EQUAL(std::string("/"), req.getDir());
226
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getFile());
227
CPPUNIT_ASSERT_EQUAL(std::string("?query"), req.getQuery());
230
void RequestTest::testSetUri13() {
232
bool v = req.setUri("http://host/?query");
235
CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol());
236
CPPUNIT_ASSERT_EQUAL(std::string("host"), req.getHost());
237
CPPUNIT_ASSERT_EQUAL(std::string("/"), req.getDir());
238
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getFile());
239
CPPUNIT_ASSERT_EQUAL(std::string("?query"), req.getQuery());
242
void RequestTest::testSetUri14() {
244
bool v = req.setUri("http://host:8080/abc?query");
247
CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol());
248
CPPUNIT_ASSERT_EQUAL(std::string("host"), req.getHost());
249
CPPUNIT_ASSERT_EQUAL((uint16_t)8080, req.getPort());
250
CPPUNIT_ASSERT_EQUAL(std::string("/"), req.getDir());
251
CPPUNIT_ASSERT_EQUAL(std::string("abc"), req.getFile());
252
CPPUNIT_ASSERT_EQUAL(std::string("?query"), req.getQuery());
255
void RequestTest::testSetUri15()
258
// 2 slashes after host name and dir
259
bool v = req.setUri("http://host//dir1/dir2//file");
261
CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol());
262
CPPUNIT_ASSERT_EQUAL(std::string("host"), req.getHost());
263
CPPUNIT_ASSERT_EQUAL(std::string("/dir1/dir2"), req.getDir());
264
CPPUNIT_ASSERT_EQUAL(std::string("file"), req.getFile());
265
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getQuery());
268
void RequestTest::testSetUri16()
271
// 2 slashes before file
272
bool v = req.setUri("http://host//file");
274
CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol());
275
CPPUNIT_ASSERT_EQUAL(std::string("host"), req.getHost());
276
CPPUNIT_ASSERT_EQUAL(std::string("/"), req.getDir());
277
CPPUNIT_ASSERT_EQUAL(std::string("file"), req.getFile());
278
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getQuery());
281
97
void RequestTest::testSetUri17()
284
bool v = req.setUri("http://host:80/file<with%2 %20space/file with space;param%?a=/?");
100
bool v = req.setUri("http://host:80/file<with%2 %20space/"
101
"file with space;param%?a=/?");
285
102
CPPUNIT_ASSERT(v);
286
103
CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol());
287
104
CPPUNIT_ASSERT_EQUAL(std::string("host"), req.getHost());
288
CPPUNIT_ASSERT_EQUAL(std::string("/file%3Cwith%252%20%20space"), req.getDir());
289
CPPUNIT_ASSERT_EQUAL(std::string("file%20with%20space;param%25"), req.getFile());
105
CPPUNIT_ASSERT_EQUAL(std::string("/file%3Cwith%252%20%20space"),
107
CPPUNIT_ASSERT_EQUAL(std::string("file%20with%20space;param%25"),
290
109
CPPUNIT_ASSERT_EQUAL(std::string("?a=/?"), req.getQuery());
291
110
CPPUNIT_ASSERT_EQUAL(std::string("http://host:80/file%3Cwith%252%20%20space"
292
111
"/file%20with%20space;param%25?a=/?"),
402
197
bool v3 = req.resetUri();
403
198
CPPUNIT_ASSERT(v3);
404
199
// currentUri must equal to uri
405
CPPUNIT_ASSERT_EQUAL(std::string("http://aria.rednoah.com:8080/aria2/index.html"), req.getUri());
201
(std::string("http://aria.rednoah.com:8080/aria2/index.html"),
406
203
CPPUNIT_ASSERT_EQUAL(req.getUri(), req.getCurrentUri());
407
204
// previousUri must equal to referer
408
CPPUNIT_ASSERT_EQUAL(std::string("http://aria.rednoah.com:8080/"), req.getPreviousUri());
205
CPPUNIT_ASSERT_EQUAL(std::string("http://aria.rednoah.com:8080/"),
206
req.getPreviousUri());
409
207
// referer is unchanged
410
CPPUNIT_ASSERT_EQUAL(std::string("http://aria.rednoah.com:8080/"), req.getReferer());
208
CPPUNIT_ASSERT_EQUAL(std::string("http://aria.rednoah.com:8080/"),
411
210
CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol());
412
211
CPPUNIT_ASSERT_EQUAL((uint16_t)8080, req.getPort());
413
212
CPPUNIT_ASSERT_EQUAL(std::string("aria.rednoah.com"), req.getHost());
429
229
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getQuery());
432
void RequestTest::testInnerLinkInReferer() {
232
void RequestTest::testInnerLinkInReferer()
434
235
req.setReferer("http://aria.rednoah.com/home.html#top");
435
236
CPPUNIT_ASSERT_EQUAL(std::string("http://aria.rednoah.com/home.html"),
436
237
req.getReferer());
439
void RequestTest::testSetUri_zeroUsername()
442
CPPUNIT_ASSERT(req.setUri("ftp://@localhost/download/aria2-1.0.0.tar.bz2"));
443
CPPUNIT_ASSERT_EQUAL(std::string("ftp"), req.getProtocol());
444
CPPUNIT_ASSERT_EQUAL((uint16_t)21, req.getPort());
445
CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req.getHost());
446
CPPUNIT_ASSERT_EQUAL(std::string("/download"), req.getDir());
447
CPPUNIT_ASSERT_EQUAL(std::string("aria2-1.0.0.tar.bz2"), req.getFile());
448
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getUsername());
449
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getPassword());
451
CPPUNIT_ASSERT(req.setUri("ftp://:@localhost/download/aria2-1.0.0.tar.bz2"));
452
CPPUNIT_ASSERT_EQUAL(std::string("ftp"), req.getProtocol());
453
CPPUNIT_ASSERT_EQUAL((uint16_t)21, req.getPort());
454
CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req.getHost());
455
CPPUNIT_ASSERT_EQUAL(std::string("/download"), req.getDir());
456
CPPUNIT_ASSERT_EQUAL(std::string("aria2-1.0.0.tar.bz2"), req.getFile());
457
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getUsername());
458
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getPassword());
460
CPPUNIT_ASSERT(req.setUri("ftp://:pass@localhost/download/aria2-1.0.0.tar.bz2"));
461
CPPUNIT_ASSERT_EQUAL(std::string("ftp"), req.getProtocol());
462
CPPUNIT_ASSERT_EQUAL((uint16_t)21, req.getPort());
463
CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req.getHost());
464
CPPUNIT_ASSERT_EQUAL(std::string("/download"), req.getDir());
465
CPPUNIT_ASSERT_EQUAL(std::string("aria2-1.0.0.tar.bz2"), req.getFile());
466
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getUsername());
467
CPPUNIT_ASSERT_EQUAL(std::string("pass"), req.getPassword());
471
void RequestTest::testSetUri_username()
474
CPPUNIT_ASSERT(req.setUri("ftp://aria2user@localhost/download/aria2-1.0.0.tar.bz2"));
475
CPPUNIT_ASSERT_EQUAL(std::string("ftp"), req.getProtocol());
476
CPPUNIT_ASSERT_EQUAL((uint16_t)21, req.getPort());
477
CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req.getHost());
478
CPPUNIT_ASSERT_EQUAL(std::string("/download"), req.getDir());
479
CPPUNIT_ASSERT_EQUAL(std::string("aria2-1.0.0.tar.bz2"), req.getFile());
480
CPPUNIT_ASSERT_EQUAL(std::string("aria2user"), req.getUsername());
481
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getPassword());
484
void RequestTest::testSetUri_usernamePassword()
487
CPPUNIT_ASSERT(req.setUri("ftp://aria2user%40:aria2pass%40@localhost/download/aria2-1.0.0.tar.bz2"));
488
CPPUNIT_ASSERT_EQUAL(std::string("ftp"), req.getProtocol());
489
CPPUNIT_ASSERT_EQUAL((uint16_t)21, req.getPort());
490
CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req.getHost());
491
CPPUNIT_ASSERT_EQUAL(std::string("/download"), req.getDir());
492
CPPUNIT_ASSERT_EQUAL(std::string("aria2-1.0.0.tar.bz2"), req.getFile());
493
CPPUNIT_ASSERT_EQUAL(std::string("aria2user@"), req.getUsername());
494
CPPUNIT_ASSERT_EQUAL(std::string("aria2pass@"), req.getPassword());
496
// make sure that after new uri is set, username and password are updated.
497
CPPUNIT_ASSERT(req.setUri("ftp://localhost/download/aria2-1.0.0.tar.bz2"));
498
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getUsername());
499
CPPUNIT_ASSERT_EQUAL(std::string(""), req.getPassword());
503
240
void RequestTest::testSetUri_supportsPersistentConnection()
530
267
CPPUNIT_ASSERT(req.supportsPersistentConnection());
533
void RequestTest::testSetUri_ipv6()
536
CPPUNIT_ASSERT(!req.setUri("http://[::1"));
537
CPPUNIT_ASSERT(req.setUri("http://[::1]"));
538
CPPUNIT_ASSERT_EQUAL(std::string("::1"), req.getHost());
540
CPPUNIT_ASSERT(req.setUri("http://[::1]:8000/dir/file"));
541
CPPUNIT_ASSERT_EQUAL(std::string("::1"), req.getHost());
542
CPPUNIT_ASSERT_EQUAL((uint16_t)8000, req.getPort());
543
CPPUNIT_ASSERT_EQUAL(std::string("/dir"), req.getDir());
544
CPPUNIT_ASSERT_EQUAL(std::string("file"), req.getFile());
545
CPPUNIT_ASSERT(req.isIPv6LiteralAddress());
548
270
void RequestTest::testGetURIHost()