mirror of https://github.com/aria2/aria2
2008-08-17 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Seprate the implementation to load old mozilla format of cookie to NsCookieParser class. * src/CookieBoxFactory.cc * src/CookieBoxFactory.h * src/NsCookieParser.cc * src/NsCookieParser.h * test/NsCookieParserTest.ccpull/1/head
parent
aabb6bb2d9
commit
adfcf57e32
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
|||
2008-08-17 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
||||
|
||||
Seprate the implementation to load old mozilla format of cookie to
|
||||
NsCookieParser class.
|
||||
* src/CookieBoxFactory.cc
|
||||
* src/CookieBoxFactory.h
|
||||
* src/NsCookieParser.cc
|
||||
* src/NsCookieParser.h
|
||||
* test/NsCookieParserTest.cc
|
||||
|
||||
2008-08-17 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
||||
|
||||
Made parse() const
|
||||
|
|
|
@ -37,9 +37,9 @@
|
|||
#include "CookieBox.h"
|
||||
#include "Util.h"
|
||||
#include "RecoverableException.h"
|
||||
#include "A2STR.h"
|
||||
#include "LogFactory.h"
|
||||
#include "Logger.h"
|
||||
#include "NsCookieParser.h"
|
||||
#ifdef HAVE_SQLITE3
|
||||
# include "Sqlite3MozCookieParser.h"
|
||||
#endif // HAVE_SQLITE3
|
||||
|
@ -48,8 +48,6 @@
|
|||
|
||||
namespace aria2 {
|
||||
|
||||
const std::string CookieBoxFactory::C_TRUE("TRUE");
|
||||
|
||||
CookieBoxFactory::CookieBoxFactory():_logger(LogFactory::getInstance()) {}
|
||||
|
||||
CookieBoxFactory::~CookieBoxFactory() {}
|
||||
|
@ -63,67 +61,31 @@ CookieBoxHandle CookieBoxFactory::createNewInstance()
|
|||
|
||||
void CookieBoxFactory::loadDefaultCookie(const std::string& filename)
|
||||
{
|
||||
std::ifstream s(filename.c_str());
|
||||
char header[16]; // "SQLite format 3" plus \0
|
||||
s.get(header, sizeof(header));
|
||||
if(s.bad()) {
|
||||
_logger->error("Failed to read header of cookie file %s", filename.c_str());
|
||||
return;
|
||||
}
|
||||
if(std::string(header) == "SQLite format 3") {
|
||||
#ifdef HAVE_SQLITE3
|
||||
try {
|
||||
defaultCookies = Sqlite3MozCookieParser().parse(filename);
|
||||
} catch(RecoverableException& e) {
|
||||
_logger->error("Failed to load cookies from %s, cause: %s",
|
||||
filename.c_str(), e.what());
|
||||
{
|
||||
std::ifstream s(filename.c_str());
|
||||
s.get(header, sizeof(header));
|
||||
if(s.bad()) {
|
||||
_logger->error("Failed to read header of cookie file %s",
|
||||
filename.c_str());
|
||||
return;
|
||||
}
|
||||
}
|
||||
try {
|
||||
if(std::string(header) == "SQLite format 3") {
|
||||
#ifdef HAVE_SQLITE3
|
||||
defaultCookies = Sqlite3MozCookieParser().parse(filename);
|
||||
#else // !HAVE_SQLITE3
|
||||
_logger->notice("Cannot read SQLite3 database because SQLite3 support is"
|
||||
" disabled by configuration.");
|
||||
#endif // !HAVE_SQLITE3
|
||||
} else {
|
||||
s.seekg(0);
|
||||
std::string line;
|
||||
while(getline(s, line)) {
|
||||
if(Util::startsWith(line, A2STR::SHARP_C)) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
Cookie c = parseNsCookie(line);
|
||||
if(c.good()) {
|
||||
defaultCookies.push_back(c);
|
||||
}
|
||||
} catch(RecoverableException& e) {
|
||||
// ignore malformed cookie entry
|
||||
// TODO better to log it
|
||||
}
|
||||
} else {
|
||||
defaultCookies = NsCookieParser().parse(filename);
|
||||
}
|
||||
} catch(RecoverableException& e) {
|
||||
_logger->error("Failed to load cookies from %s, cause: %s",
|
||||
filename.c_str(), e.what());
|
||||
}
|
||||
}
|
||||
|
||||
Cookie CookieBoxFactory::parseNsCookie(const std::string& nsCookieStr) const
|
||||
{
|
||||
std::deque<std::string> vs;
|
||||
Util::slice(vs, nsCookieStr, '\t', true);
|
||||
Cookie c;
|
||||
if(vs.size() < 6 ) {
|
||||
return c;
|
||||
}
|
||||
c.domain = vs[0];
|
||||
c.path = vs[2];
|
||||
c.secure = vs[3] == C_TRUE ? true : false;
|
||||
int64_t expireDate = Util::parseLLInt(vs[4]);
|
||||
// TODO assuming time_t is int32_t...
|
||||
if(expireDate > INT32_MAX) {
|
||||
expireDate = INT32_MAX;
|
||||
}
|
||||
c.expires = expireDate;
|
||||
c.name = vs[5];
|
||||
if(vs.size() >= 7) {
|
||||
c.value = vs[6];
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
} // namespace aria2
|
||||
|
|
|
@ -61,15 +61,10 @@ public:
|
|||
|
||||
void loadDefaultCookie(const std::string& filename);
|
||||
|
||||
Cookie parseNsCookie(const std::string& nsCookieStr) const;
|
||||
|
||||
const Cookies& getDefaultCookies() const
|
||||
{
|
||||
return defaultCookies;
|
||||
}
|
||||
|
||||
private:
|
||||
static const std::string C_TRUE;
|
||||
};
|
||||
|
||||
typedef SharedHandle<CookieBoxFactory> CookieBoxFactoryHandle;
|
||||
|
|
|
@ -194,7 +194,8 @@ SRCS = Socket.h\
|
|||
ServerStatMan.cc ServerStatMan.h\
|
||||
URISelector.h\
|
||||
InOrderURISelector.cc InOrderURISelector.h\
|
||||
ServerStatURISelector.cc ServerStatURISelector.h
|
||||
ServerStatURISelector.cc ServerStatURISelector.h\
|
||||
NsCookieParser.cc NsCookieParser.h
|
||||
|
||||
if HAVE_LIBZ
|
||||
SRCS += GZipDecoder.cc GZipDecoder.h
|
||||
|
|
|
@ -414,10 +414,10 @@ am__libaria2c_a_SOURCES_DIST = Socket.h SocketCore.cc SocketCore.h \
|
|||
Signature.h ServerStat.cc ServerStat.h ServerStatMan.cc \
|
||||
ServerStatMan.h URISelector.h InOrderURISelector.cc \
|
||||
InOrderURISelector.h ServerStatURISelector.cc \
|
||||
ServerStatURISelector.h GZipDecoder.cc GZipDecoder.h \
|
||||
Sqlite3MozCookieParser.cc Sqlite3MozCookieParser.h \
|
||||
AsyncNameResolver.cc AsyncNameResolver.h \
|
||||
IteratableChunkChecksumValidator.cc \
|
||||
ServerStatURISelector.h NsCookieParser.cc NsCookieParser.h \
|
||||
GZipDecoder.cc GZipDecoder.h Sqlite3MozCookieParser.cc \
|
||||
Sqlite3MozCookieParser.h AsyncNameResolver.cc \
|
||||
AsyncNameResolver.h IteratableChunkChecksumValidator.cc \
|
||||
IteratableChunkChecksumValidator.h \
|
||||
IteratableChecksumValidator.cc IteratableChecksumValidator.h \
|
||||
CheckIntegrityCommand.cc CheckIntegrityCommand.h \
|
||||
|
@ -808,13 +808,13 @@ am__objects_18 = SocketCore.$(OBJEXT) Command.$(OBJEXT) \
|
|||
RarestPieceSelector.$(OBJEXT) ChunkedDecoder.$(OBJEXT) \
|
||||
Signature.$(OBJEXT) ServerStat.$(OBJEXT) \
|
||||
ServerStatMan.$(OBJEXT) InOrderURISelector.$(OBJEXT) \
|
||||
ServerStatURISelector.$(OBJEXT) $(am__objects_1) \
|
||||
$(am__objects_2) $(am__objects_3) $(am__objects_4) \
|
||||
$(am__objects_5) $(am__objects_6) $(am__objects_7) \
|
||||
$(am__objects_8) $(am__objects_9) $(am__objects_10) \
|
||||
$(am__objects_11) $(am__objects_12) $(am__objects_13) \
|
||||
$(am__objects_14) $(am__objects_15) $(am__objects_16) \
|
||||
$(am__objects_17)
|
||||
ServerStatURISelector.$(OBJEXT) NsCookieParser.$(OBJEXT) \
|
||||
$(am__objects_1) $(am__objects_2) $(am__objects_3) \
|
||||
$(am__objects_4) $(am__objects_5) $(am__objects_6) \
|
||||
$(am__objects_7) $(am__objects_8) $(am__objects_9) \
|
||||
$(am__objects_10) $(am__objects_11) $(am__objects_12) \
|
||||
$(am__objects_13) $(am__objects_14) $(am__objects_15) \
|
||||
$(am__objects_16) $(am__objects_17)
|
||||
am_libaria2c_a_OBJECTS = $(am__objects_18)
|
||||
libaria2c_a_OBJECTS = $(am_libaria2c_a_OBJECTS)
|
||||
am__installdirs = "$(DESTDIR)$(bindir)"
|
||||
|
@ -1138,12 +1138,13 @@ SRCS = Socket.h SocketCore.cc SocketCore.h BinaryStream.h Command.cc \
|
|||
Signature.h ServerStat.cc ServerStat.h ServerStatMan.cc \
|
||||
ServerStatMan.h URISelector.h InOrderURISelector.cc \
|
||||
InOrderURISelector.h ServerStatURISelector.cc \
|
||||
ServerStatURISelector.h $(am__append_1) $(am__append_2) \
|
||||
$(am__append_3) $(am__append_4) $(am__append_5) \
|
||||
$(am__append_6) $(am__append_7) $(am__append_8) \
|
||||
$(am__append_9) $(am__append_10) $(am__append_11) \
|
||||
$(am__append_12) $(am__append_13) $(am__append_14) \
|
||||
$(am__append_15) $(am__append_16) $(am__append_17)
|
||||
ServerStatURISelector.h NsCookieParser.cc NsCookieParser.h \
|
||||
$(am__append_1) $(am__append_2) $(am__append_3) \
|
||||
$(am__append_4) $(am__append_5) $(am__append_6) \
|
||||
$(am__append_7) $(am__append_8) $(am__append_9) \
|
||||
$(am__append_10) $(am__append_11) $(am__append_12) \
|
||||
$(am__append_13) $(am__append_14) $(am__append_15) \
|
||||
$(am__append_16) $(am__append_17)
|
||||
noinst_LIBRARIES = libaria2c.a
|
||||
libaria2c_a_SOURCES = $(SRCS)
|
||||
aria2c_LDADD = libaria2c.a @LIBINTL@ @ALLOCA@ @LIBGNUTLS_LIBS@\
|
||||
|
@ -1443,6 +1444,7 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NameResolver.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Netrc.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetrcAuthResolver.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NsCookieParser.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OSMetalinkParserState.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Option.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OptionHandlerFactory.Po@am__quote@
|
||||
|
|
|
@ -0,0 +1,100 @@
|
|||
/* <!-- copyright */
|
||||
/*
|
||||
* aria2 - The high speed download utility
|
||||
*
|
||||
* Copyright (C) 2006 Tatsuhiro Tsujikawa
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* In addition, as a special exception, the copyright holders give
|
||||
* permission to link the code of portions of this program with the
|
||||
* OpenSSL library under certain conditions as described in each
|
||||
* individual source file, and distribute linked combinations
|
||||
* including the two.
|
||||
* You must obey the GNU General Public License in all respects
|
||||
* for all of the code used other than OpenSSL. If you modify
|
||||
* file(s) with this exception, you may extend this exception to your
|
||||
* version of the file(s), but you are not obligated to do so. If you
|
||||
* do not wish to do so, delete this exception statement from your
|
||||
* version. If you delete this exception statement from all source
|
||||
* files in the program, then also delete it here.
|
||||
*/
|
||||
/* copyright --> */
|
||||
#include "NsCookieParser.h"
|
||||
#include "Util.h"
|
||||
#include "A2STR.h"
|
||||
#include "RecoverableException.h"
|
||||
#include "StringFormat.h"
|
||||
#include <fstream>
|
||||
|
||||
namespace aria2 {
|
||||
|
||||
NsCookieParser::NsCookieParser() {}
|
||||
|
||||
NsCookieParser::~NsCookieParser() {}
|
||||
|
||||
static const std::string C_TRUE("TRUE");
|
||||
|
||||
static Cookie parseNsCookie(const std::string& nsCookieStr)
|
||||
{
|
||||
std::deque<std::string> vs;
|
||||
Util::slice(vs, nsCookieStr, '\t', true);
|
||||
if(vs.size() < 6 ) {
|
||||
return Cookie();
|
||||
}
|
||||
|
||||
int64_t expireDate = Util::parseLLInt(vs[4]);
|
||||
// TODO assuming time_t is int32_t...
|
||||
if(expireDate > INT32_MAX) {
|
||||
expireDate = INT32_MAX;
|
||||
}
|
||||
|
||||
Cookie c(vs[5], // name
|
||||
vs.size() >= 7? vs[6]:A2STR::NIL, // value
|
||||
expireDate, // expires
|
||||
vs[2], // path
|
||||
vs[0], // domain
|
||||
vs[3] == C_TRUE ? true : false);
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
std::deque<Cookie> NsCookieParser::parse(const std::string& filename)
|
||||
{
|
||||
std::ifstream s(filename.c_str());
|
||||
if(!s) {
|
||||
throw RecoverableException
|
||||
(StringFormat("Failed to open file %s", filename.c_str()).str());
|
||||
}
|
||||
std::string line;
|
||||
std::deque<Cookie> cookies;
|
||||
while(getline(s, line)) {
|
||||
if(Util::startsWith(line, A2STR::SHARP_C)) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
Cookie c = parseNsCookie(line);
|
||||
if(c.good()) {
|
||||
cookies.push_back(c);
|
||||
}
|
||||
} catch(RecoverableException& e) {
|
||||
// ignore malformed cookie entry
|
||||
// TODO better to log it
|
||||
}
|
||||
}
|
||||
return cookies;
|
||||
}
|
||||
|
||||
} // namespace aria2
|
|
@ -0,0 +1,56 @@
|
|||
/* <!-- copyright */
|
||||
/*
|
||||
* aria2 - The high speed download utility
|
||||
*
|
||||
* Copyright (C) 2006 Tatsuhiro Tsujikawa
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* In addition, as a special exception, the copyright holders give
|
||||
* permission to link the code of portions of this program with the
|
||||
* OpenSSL library under certain conditions as described in each
|
||||
* individual source file, and distribute linked combinations
|
||||
* including the two.
|
||||
* You must obey the GNU General Public License in all respects
|
||||
* for all of the code used other than OpenSSL. If you modify
|
||||
* file(s) with this exception, you may extend this exception to your
|
||||
* version of the file(s), but you are not obligated to do so. If you
|
||||
* do not wish to do so, delete this exception statement from your
|
||||
* version. If you delete this exception statement from all source
|
||||
* files in the program, then also delete it here.
|
||||
*/
|
||||
/* copyright --> */
|
||||
#ifndef _D_NS_COOKIE_PARSER_H_
|
||||
#define _D_NS_COOKIE_PARSER_H_
|
||||
|
||||
#include "common.h"
|
||||
#include "Cookie.h"
|
||||
#include <string>
|
||||
#include <deque>
|
||||
|
||||
namespace aria2 {
|
||||
|
||||
class NsCookieParser {
|
||||
public:
|
||||
NsCookieParser();
|
||||
|
||||
~NsCookieParser();
|
||||
|
||||
std::deque<Cookie> parse(const std::string& filename);
|
||||
};
|
||||
|
||||
} // namespace aria2
|
||||
|
||||
#endif // _D_NS_COOKIE_PARSER_H_
|
|
@ -57,7 +57,8 @@ aria2c_SOURCES = AllTest.cc\
|
|||
ServerStatManTest.cc\
|
||||
ServerStatURISelectorTest.cc\
|
||||
InOrderURISelectorTest.cc\
|
||||
ServerStatTest.cc
|
||||
ServerStatTest.cc\
|
||||
NsCookieParserTest.cc
|
||||
|
||||
if HAVE_LIBZ
|
||||
aria2c_SOURCES += GZipDecoderTest.cc
|
||||
|
|
|
@ -192,7 +192,7 @@ am__aria2c_SOURCES_DIST = AllTest.cc SocketCoreTest.cc \
|
|||
DownloadHandlerFactoryTest.cc ChunkedDecoderTest.cc \
|
||||
SignatureTest.cc ServerStatManTest.cc \
|
||||
ServerStatURISelectorTest.cc InOrderURISelectorTest.cc \
|
||||
ServerStatTest.cc GZipDecoderTest.cc \
|
||||
ServerStatTest.cc NsCookieParserTest.cc GZipDecoderTest.cc \
|
||||
Sqlite3MozCookieParserTest.cc MessageDigestHelperTest.cc \
|
||||
IteratableChunkChecksumValidatorTest.cc \
|
||||
IteratableChecksumValidatorTest.cc BtAllowedFastMessageTest.cc \
|
||||
|
@ -363,8 +363,8 @@ am_aria2c_OBJECTS = AllTest.$(OBJEXT) SocketCoreTest.$(OBJEXT) \
|
|||
ServerStatManTest.$(OBJEXT) \
|
||||
ServerStatURISelectorTest.$(OBJEXT) \
|
||||
InOrderURISelectorTest.$(OBJEXT) ServerStatTest.$(OBJEXT) \
|
||||
$(am__objects_1) $(am__objects_2) $(am__objects_3) \
|
||||
$(am__objects_4) $(am__objects_5)
|
||||
NsCookieParserTest.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
|
||||
$(am__objects_3) $(am__objects_4) $(am__objects_5)
|
||||
aria2c_OBJECTS = $(am_aria2c_OBJECTS)
|
||||
am__DEPENDENCIES_1 =
|
||||
aria2c_DEPENDENCIES = ../src/libaria2c.a $(am__DEPENDENCIES_1)
|
||||
|
@ -583,8 +583,9 @@ aria2c_SOURCES = AllTest.cc SocketCoreTest.cc array_funTest.cc \
|
|||
DownloadHandlerFactoryTest.cc ChunkedDecoderTest.cc \
|
||||
SignatureTest.cc ServerStatManTest.cc \
|
||||
ServerStatURISelectorTest.cc InOrderURISelectorTest.cc \
|
||||
ServerStatTest.cc $(am__append_1) $(am__append_2) \
|
||||
$(am__append_3) $(am__append_4) $(am__append_5)
|
||||
ServerStatTest.cc NsCookieParserTest.cc $(am__append_1) \
|
||||
$(am__append_2) $(am__append_3) $(am__append_4) \
|
||||
$(am__append_5)
|
||||
|
||||
#aria2c_CXXFLAGS = ${CPPUNIT_CFLAGS} -I../src -I../lib -Wall -D_FILE_OFFSET_BITS=64
|
||||
#aria2c_LDFLAGS = ${CPPUNIT_LIBS}
|
||||
|
@ -773,6 +774,7 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MultiFileAllocationIteratorTest.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetrcAuthResolverTest.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetrcTest.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NsCookieParserTest.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OptionHandlerTest.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OptionTest.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PStringBuildVisitorTest.Po@am__quote@
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
#include "NsCookieParser.h"
|
||||
#include "RecoverableException.h"
|
||||
#include "Util.h"
|
||||
#include <iostream>
|
||||
#include <cppunit/extensions/HelperMacros.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;
|
||||
std::deque<Cookie> cookies = parser.parse("nscookietest.txt");
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)4, cookies.size());
|
||||
|
||||
Cookie c = cookies[0];
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("JSESSIONID"), c.name);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("123456789"), c.value);
|
||||
CPPUNIT_ASSERT_EQUAL((time_t)1181473200, c.expires);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("/"), c.path);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("localhost"), c.domain);
|
||||
|
||||
c = cookies[1];
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("user"), c.name);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("me"), c.value);
|
||||
CPPUNIT_ASSERT_EQUAL((time_t)1181473200, c.expires);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("/"), c.path);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("localhost"), c.domain);
|
||||
|
||||
c = cookies[2];
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("passwd"), c.name);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("secret"), c.value);
|
||||
CPPUNIT_ASSERT_EQUAL((time_t)2147483647, c.expires);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("/cgi-bin"), c.path);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("localhost"), c.domain);
|
||||
|
||||
c = cookies[3];
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("novalue"), c.name);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string(""), c.value);
|
||||
CPPUNIT_ASSERT_EQUAL((time_t)2147483647, c.expires);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("/"), c.path);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("localhost"), c.domain);
|
||||
}
|
||||
|
||||
void NsCookieParserTest::testParse_fileNotFound()
|
||||
{
|
||||
NsCookieParser parser;
|
||||
try {
|
||||
parser.parse("fileNotFound");
|
||||
CPPUNIT_FAIL("exception must be thrown.");
|
||||
} catch(RecoverableException& e) {
|
||||
// SUCCESS
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace aria2
|
Loading…
Reference in New Issue