#include "NsCookieParser.h" #include #include #include #include "RecoverableException.h" #include "util.h" #include "Cookie.h" namespace aria2 { class NsCookieParserTest:public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(NsCookieParserTest); CPPUNIT_TEST(testParse); CPPUNIT_TEST(testParse_fileNotFound); CPPUNIT_TEST_SUITE_END(); public: void setUp() {} void tearDown() {} void testParse(); void testParse_fileNotFound(); }; CPPUNIT_TEST_SUITE_REGISTRATION(NsCookieParserTest); void NsCookieParserTest::testParse() { NsCookieParser parser; time_t now = 0; std::vector cookies = parser.parse(A2_TEST_DIR"/nscookietest.txt", now); CPPUNIT_ASSERT_EQUAL((size_t)5, cookies.size()); Cookie c = cookies[0]; CPPUNIT_ASSERT_EQUAL(std::string("JSESSIONID"), c.getName()); CPPUNIT_ASSERT_EQUAL(std::string("123456789"), c.getValue()); CPPUNIT_ASSERT_EQUAL((time_t)INT32_MAX, c.getExpiryTime()); CPPUNIT_ASSERT(c.getPersistent()); CPPUNIT_ASSERT_EQUAL(std::string("localhost"), c.getDomain()); CPPUNIT_ASSERT(c.getHostOnly()); CPPUNIT_ASSERT_EQUAL(std::string("/"), c.getPath()); CPPUNIT_ASSERT(c.getSecure()); c = cookies[1]; CPPUNIT_ASSERT_EQUAL(std::string("user"), c.getName()); CPPUNIT_ASSERT_EQUAL(std::string("me"), c.getValue()); CPPUNIT_ASSERT_EQUAL((time_t)1000, c.getExpiryTime()); CPPUNIT_ASSERT(c.getPersistent()); CPPUNIT_ASSERT_EQUAL(std::string("expired"), c.getDomain()); CPPUNIT_ASSERT(c.getHostOnly()); CPPUNIT_ASSERT_EQUAL(std::string("/"), c.getPath()); CPPUNIT_ASSERT(!c.getSecure()); c = cookies[2]; CPPUNIT_ASSERT_EQUAL(std::string("passwd"), c.getName()); CPPUNIT_ASSERT_EQUAL(std::string("secret"), c.getValue()); CPPUNIT_ASSERT_EQUAL(std::numeric_limits::max(), c.getExpiryTime()); CPPUNIT_ASSERT(!c.getPersistent()); CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), c.getDomain()); CPPUNIT_ASSERT(c.getHostOnly()); CPPUNIT_ASSERT_EQUAL(std::string("/cgi-bin"), c.getPath()); CPPUNIT_ASSERT(!c.getSecure()); c = cookies[3]; CPPUNIT_ASSERT_EQUAL(std::string("TAX"), c.getName()); CPPUNIT_ASSERT_EQUAL(std::string("1000"), c.getValue()); CPPUNIT_ASSERT((time_t)INT32_MAX <= c.getExpiryTime()); CPPUNIT_ASSERT(c.getPersistent()); CPPUNIT_ASSERT_EQUAL(std::string("overflow"), c.getDomain()); CPPUNIT_ASSERT(c.getHostOnly()); CPPUNIT_ASSERT_EQUAL(std::string("/"), c.getPath()); CPPUNIT_ASSERT(!c.getSecure()); c = cookies[4]; CPPUNIT_ASSERT_EQUAL(std::string("novalue"), c.getName()); CPPUNIT_ASSERT_EQUAL(std::string(""), c.getValue()); CPPUNIT_ASSERT_EQUAL((time_t)INT32_MAX, c.getExpiryTime()); CPPUNIT_ASSERT(c.getPersistent()); CPPUNIT_ASSERT_EQUAL(std::string("example.org"), c.getDomain()); CPPUNIT_ASSERT(!c.getHostOnly()); CPPUNIT_ASSERT_EQUAL(std::string("/"), c.getPath()); CPPUNIT_ASSERT(!c.getSecure()); } void NsCookieParserTest::testParse_fileNotFound() { NsCookieParser parser; try { time_t now = 0; parser.parse("fileNotFound", now); CPPUNIT_FAIL("exception must be thrown."); } catch(RecoverableException& e) { // SUCCESS } } } // namespace aria2