diff options
Diffstat (limited to 'test/HttpResponseTest.cc.8905')
| -rw-r--r-- | test/HttpResponseTest.cc.8905 | 246 |
1 files changed, 246 insertions, 0 deletions
diff --git a/test/HttpResponseTest.cc.8905 b/test/HttpResponseTest.cc.8905 new file mode 100644 index 00000000..495cf4eb --- /dev/null +++ b/test/HttpResponseTest.cc.8905 @@ -0,0 +1,246 @@ +#include "HttpResponse.h" + +#include <iostream> + +#include <cppunit/extensions/HelperMacros.h> + +#include "TestUtil.h" +#include "prefs.h" +#include "PiecedSegment.h" +#include "Piece.h" +#include "Request.h" +#include "HttpHeader.h" +#include "HttpRequest.h" +#include "Exception.h" +#include "A2STR.h" +#include "DlRetryEx.h" +#include "CookieStorage.h" +#include "AuthConfigFactory.h" +#include "AuthConfig.h" +#include "StreamFilter.h" +#include "MetalinkHttpEntry.h" +#include "Option.h" +#include "Checksum.h" + +namespace aria2 { + +class HttpResponseTest : public CppUnit::TestFixture { + + CPPUNIT_TEST_SUITE(HttpResponseTest); + CPPUNIT_TEST(testGetContentLength_null); + CPPUNIT_TEST(testGetContentLength_contentLength); + // CPPUNIT_TEST(testGetContentLength_range); + CPPUNIT_TEST(testGetEntityLength); + CPPUNIT_TEST(testGetContentType); + CPPUNIT_TEST(testDetermineFilename_without_ContentDisposition); + CPPUNIT_TEST(testDetermineFilename_with_ContentDisposition_zero_length); + CPPUNIT_TEST(testDetermineFilename_with_ContentDisposition); + CPPUNIT_TEST(testGetRedirectURI_without_Location); + CPPUNIT_TEST(testGetRedirectURI_with_Location); + CPPUNIT_TEST(testIsRedirect); + CPPUNIT_TEST(testIsTransferEncodingSpecified); + CPPUNIT_TEST(testGetTransferEncoding); + CPPUNIT_TEST(testGetTransferEncodingStreamFilter); + CPPUNIT_TEST(testIsContentEncodingSpecified); + CPPUNIT_TEST(testGetContentEncoding); + CPPUNIT_TEST(testGetContentEncodingStreamFilter); + CPPUNIT_TEST(testValidateResponse); + CPPUNIT_TEST(testValidateResponse_good_range); + CPPUNIT_TEST(testValidateResponse_bad_range); + CPPUNIT_TEST(testValidateResponse_chunked); + CPPUNIT_TEST(testValidateResponse_withIfModifiedSince); + CPPUNIT_TEST(testProcessRedirect); + CPPUNIT_TEST(testRetrieveCookie); + CPPUNIT_TEST(testSupportsPersistentConnection); + CPPUNIT_TEST(testGetMetalinKHttpEntries); + CPPUNIT_TEST(testGetDigest); + CPPUNIT_TEST_SUITE_END(); + +private: +public: + void setUp() {} + + void testGetContentLength_null(); + void testGetContentLength_contentLength(); + void testGetEntityLength(); + void testGetContentType(); + void testDetermineFilename_without_ContentDisposition(); + void testDetermineFilename_with_ContentDisposition_zero_length(); + void testDetermineFilename_with_ContentDisposition(); + void testGetRedirectURI_without_Location(); + void testGetRedirectURI_with_Location(); + void testIsRedirect(); + void testIsTransferEncodingSpecified(); + void testGetTransferEncoding(); + void testGetTransferEncodingStreamFilter(); + void testIsContentEncodingSpecified(); + void testGetContentEncoding(); + void testGetContentEncodingStreamFilter(); + void testValidateResponse(); + void testValidateResponse_good_range(); + void testValidateResponse_bad_range(); + void testValidateResponse_chunked(); + void testValidateResponse_withIfModifiedSince(); + void testProcessRedirect(); + void testRetrieveCookie(); + void testSupportsPersistentConnection(); + void testGetMetalinKHttpEntries(); + void testGetDigest(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(HttpResponseTest); + +void HttpResponseTest::testGetContentLength_null() +{ + HttpResponse httpResponse; + + CPPUNIT_ASSERT_EQUAL((int64_t)0LL, httpResponse.getContentLength()); +} + +void HttpResponseTest::testGetContentLength_contentLength() +{ + HttpResponse httpResponse; + + auto httpHeader = make_unique<HttpHeader>(); + httpHeader->put(HttpHeader::CONTENT_LENGTH, "4294967296"); + + httpResponse.setHttpHeader(std::move(httpHeader)); + + CPPUNIT_ASSERT_EQUAL((int64_t)4294967296LL, httpResponse.getContentLength()); +} + +void HttpResponseTest::testGetEntityLength() +{ + HttpResponse httpResponse; + + auto httpHeader = make_unique<HttpHeader>(); + httpHeader->put(HttpHeader::CONTENT_LENGTH, "4294967296"); + + httpResponse.setHttpHeader(std::move(httpHeader)); + CPPUNIT_ASSERT_EQUAL((int64_t)4294967296LL, httpResponse.getEntityLength()); + + httpResponse.getHttpHeader()->put(HttpHeader::CONTENT_RANGE, + "bytes 1-4294967296/4294967297"); + CPPUNIT_ASSERT_EQUAL((int64_t)4294967297LL, httpResponse.getEntityLength()); +} + +void HttpResponseTest::testGetContentType() +{ + HttpResponse httpResponse; + auto httpHeader = make_unique<HttpHeader>(); + httpHeader->put(HttpHeader::CONTENT_TYPE, + "application/metalink+xml; charset=UTF-8"); + httpResponse.setHttpHeader(std::move(httpHeader)); + // See parameter is ignored. + CPPUNIT_ASSERT_EQUAL(std::string("application/metalink+xml"), + httpResponse.getContentType()); +} + +void HttpResponseTest::testDetermineFilename_without_ContentDisposition() +{ + HttpResponse httpResponse; + auto httpRequest = make_unique<HttpRequest>(); + auto request = std::make_shared<Request>(); + request->setUri("http://localhost/archives/aria2-1.0.0.tar.bz2"); + httpRequest->setRequest(request); + + httpResponse.setHttpHeader(make_unique<HttpHeader>()); + httpResponse.setHttpRequest(std::move(httpRequest)); + + CPPUNIT_ASSERT_EQUAL(std::string("aria2-1.0.0.tar.bz2"), + httpResponse.determineFilename(false)); +} + +void HttpResponseTest:: + testDetermineFilename_with_ContentDisposition_zero_length() +{ + HttpResponse httpResponse; + auto httpHeader = make_unique<HttpHeader>(); + httpHeader->put(HttpHeader::CONTENT_DISPOSITION, "attachment; filename=\"\""); + auto httpRequest = make_unique<HttpRequest>(); + auto request = std::make_shared<Request>(); + request->setUri("http://localhost/archives/aria2-1.0.0.tar.bz2"); + httpRequest->setRequest(request); + + httpResponse.setHttpHeader(std::move(httpHeader)); + httpResponse.setHttpRequest(std::move(httpRequest)); + + CPPUNIT_ASSERT_EQUAL(std::string("aria2-1.0.0.tar.bz2"), + httpResponse.determineFilename(false)); +} + +void HttpResponseTest::testDetermineFilename_with_ContentDisposition() +{ + HttpResponse httpResponse; + auto httpHeader = make_unique<HttpHeader>(); + httpHeader->put(HttpHeader::CONTENT_DISPOSITION, + "attachment; filename=\"aria2-current.tar.bz2\""); + auto httpRequest = make_unique<HttpRequest>(); + auto request = std::make_shared<Request>(); + request->setUri("http://localhost/archives/aria2-1.0.0.tar.bz2"); + httpRequest->setRequest(request); + + httpResponse.setHttpHeader(std::move(httpHeader)); + httpResponse.setHttpRequest(std::move(httpRequest)); + + CPPUNIT_ASSERT_EQUAL(std::string("aria2-current.tar.bz2"), + httpResponse.determineFilename(false)); +} + +void HttpResponseTest::testGetRedirectURI_without_Location() +{ + HttpResponse httpResponse; + + httpResponse.setHttpHeader(make_unique<HttpHeader>()); + + CPPUNIT_ASSERT_EQUAL(std::string(""), httpResponse.getRedirectURI()); +} + +void HttpResponseTest::testGetRedirectURI_with_Location() +{ + HttpResponse httpResponse; + auto httpHeader = make_unique<HttpHeader>(); + httpHeader->put(HttpHeader::LOCATION, + "http://localhost/download/aria2-1.0.0.tar.bz2"); + httpResponse.setHttpHeader(std::move(httpHeader)); + + CPPUNIT_ASSERT_EQUAL( + std::string("http://localhost/download/aria2-1.0.0.tar.bz2"), + httpResponse.getRedirectURI()); +} + +void HttpResponseTest::testIsRedirect() +{ + HttpResponse httpResponse; + httpResponse.setHttpHeader(make_unique<HttpHeader>()); + + httpResponse.getHttpHeader()->setStatusCode(301); + CPPUNIT_ASSERT(!httpResponse.isRedirect()); + + httpResponse.getHttpHeader()->setStatusCode(200); + CPPUNIT_ASSERT(!httpResponse.isRedirect()); + + httpResponse.getHttpHeader()->put( + HttpHeader::LOCATION, "http://localhost/download/aria2-1.0.0.tar.bz2"); + + CPPUNIT_ASSERT(!httpResponse.isRedirect()); + + httpResponse.getHttpHeader()->setStatusCode(300); + CPPUNIT_ASSERT(httpResponse.isRedirect()); + + httpResponse.getHttpHeader()->setStatusCode(301); + CPPUNIT_ASSERT(httpResponse.isRedirect()); + + httpResponse.getHttpHeader()->setStatusCode(302); + CPPUNIT_ASSERT(httpResponse.isRedirect()); + + httpResponse.getHttpHeader()->setStatusCode(303); + CPPUNIT_ASSERT(httpResponse.isRedirect()); + + httpResponse.getHttpHeader()->setStatusCode(304); + CPPUNIT_ASSERT(!httpResponse.isRedirect()); + + httpResponse.getHttpHeader()->setStatusCode(305); + CPPUNIT_ASSERT(!httpResponse.isRedirect()); + + httpResp
\ No newline at end of file |
