#include "HttpRequest.h" #include "prefs.h" #include using namespace std; class HttpRequestTest : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(HttpRequestTest); CPPUNIT_TEST(testGetStartByte); CPPUNIT_TEST(testGetEndByte); CPPUNIT_TEST(testCreateRequest); CPPUNIT_TEST(testCreateRequest_ftp); CPPUNIT_TEST(testCreateRequest_with_cookie); CPPUNIT_TEST(testCreateProxyRequest); CPPUNIT_TEST(testIsRangeSatisfied); CPPUNIT_TEST_SUITE_END(); private: public: void setUp() { } void testGetStartByte(); void testGetEndByte(); void testCreateRequest(); void testCreateRequest_ftp(); void testCreateRequest_with_cookie(); void testCreateProxyRequest(); void testIsRangeSatisfied(); }; CPPUNIT_TEST_SUITE_REGISTRATION( HttpRequestTest ); void HttpRequestTest::testGetStartByte() { HttpRequest httpRequest; SegmentHandle segment = new Segment(1, 1024*1024, 1024*1024, 0); CPPUNIT_ASSERT_EQUAL((int64_t)0, httpRequest.getStartByte()); httpRequest.setSegment(segment); CPPUNIT_ASSERT_EQUAL((int64_t)1024*1024, httpRequest.getStartByte()); } void HttpRequestTest::testGetEndByte() { int32_t index = 1; int32_t length = 1024*1024-1024; int32_t segmentLength = 1024*1024; int32_t writtenLength = 1024; HttpRequest httpRequest; SegmentHandle segment = new Segment(index, length, segmentLength, writtenLength); CPPUNIT_ASSERT_EQUAL((int64_t)0, httpRequest.getEndByte()); httpRequest.setSegment(segment); CPPUNIT_ASSERT_EQUAL((int64_t)0, httpRequest.getEndByte()); RequestHandle request = new Request(); request->setKeepAlive(true); httpRequest.setRequest(request); CPPUNIT_ASSERT_EQUAL((int64_t)segmentLength*index+length-1, httpRequest.getEndByte()); request->setKeepAlive(false); CPPUNIT_ASSERT_EQUAL((int64_t)0, httpRequest.getEndByte()); } void HttpRequestTest::testCreateRequest() { RequestHandle request = new Request(); request->setUrl("http://localhost:8080/archives/aria2-1.0.0.tar.bz2"); SegmentHandle segment = new Segment(); HttpRequest httpRequest; httpRequest.setRequest(request); httpRequest.setSegment(segment); string expectedText = "GET /archives/aria2-1.0.0.tar.bz2 HTTP/1.1\r\n" "User-Agent: aria2\r\n" "Accept: */*\r\n" "Host: localhost:8080\r\n" "Pragma: no-cache\r\n" "Cache-Control: no-cache\r\n" "\r\n"; CPPUNIT_ASSERT_EQUAL(expectedText, httpRequest.createRequest()); request->setKeepAlive(false); expectedText = "GET /archives/aria2-1.0.0.tar.bz2 HTTP/1.1\r\n" "User-Agent: aria2\r\n" "Accept: */*\r\n" "Host: localhost:8080\r\n" "Pragma: no-cache\r\n" "Cache-Control: no-cache\r\n" "Connection: close\r\n" "\r\n"; CPPUNIT_ASSERT_EQUAL(expectedText, httpRequest.createRequest()); segment->index = 1; segment->length = 1024*1024; segment->segmentLength = 1024*1024; segment->writtenLength = 0; expectedText = "GET /archives/aria2-1.0.0.tar.bz2 HTTP/1.1\r\n" "User-Agent: aria2\r\n" "Accept: */*\r\n" "Host: localhost:8080\r\n" "Pragma: no-cache\r\n" "Cache-Control: no-cache\r\n" "Connection: close\r\n" "Range: bytes=1048576-\r\n" "\r\n"; CPPUNIT_ASSERT_EQUAL(expectedText, httpRequest.createRequest()); request->setKeepAlive(true); expectedText = "GET /archives/aria2-1.0.0.tar.bz2 HTTP/1.1\r\n" "User-Agent: aria2\r\n" "Accept: */*\r\n" "Host: localhost:8080\r\n" "Pragma: no-cache\r\n" "Cache-Control: no-cache\r\n" "Range: bytes=1048576-2097151\r\n" "\r\n"; CPPUNIT_ASSERT_EQUAL(expectedText, httpRequest.createRequest()); httpRequest.setSegment(new Segment()); request->redirectUrl("http://localhost:8080/archives/download/aria2-1.0.0.tar.bz2"); expectedText = "GET /archives/download/aria2-1.0.0.tar.bz2 HTTP/1.1\r\n" "User-Agent: aria2\r\n" "Accept: */*\r\n" "Host: localhost:8080\r\n" "Pragma: no-cache\r\n" "Cache-Control: no-cache\r\n" "Referer: http://localhost:8080/archives/aria2-1.0.0.tar.bz2\r\n" "\r\n"; CPPUNIT_ASSERT_EQUAL(expectedText, httpRequest.createRequest()); request->resetUrl(); SharedHandle