summaryrefslogtreecommitdiffstats
path: root/tests/auto/network/access/qnetworkcookie/tst_qnetworkcookie.cpp
diff options
context:
space:
mode:
authorShane Kearns <ext-shane.2.kearns@nokia.com>2012-06-08 14:56:11 +0100
committerQt by Nokia <qt-info@nokia.com>2012-06-27 00:46:35 +0200
commit058fddd1c01d49ee9fe8b70587a088d73f2c8e3c (patch)
treefc732f423b90b0721a9596048c6369f2fabcca3e /tests/auto/network/access/qnetworkcookie/tst_qnetworkcookie.cpp
parentd76bd0d7358b1c061f3c685a9256243eb9f11d7a (diff)
Use RFC6265 rules for cookie path & path matching
Url encoding of paths is no longer used. This matches the current release behaviour of Firefox, Chrome and MSIE browsers. RFC6265 does not allow this type of encoding. This fixes remaining path test cases in the IETF test suite. Currently the path0027 test is passed by Firefox but failed by Chrome and MSIE, so there is a potential compatibility issue. However it is a corner case with a malformed cookie. Task-number: QTBUG-15794 Change-Id: I9b02bb5adc32d614f512d314d06f2c60894aa2b0 Reviewed-by: Richard J. Moore <rich@kde.org>
Diffstat (limited to 'tests/auto/network/access/qnetworkcookie/tst_qnetworkcookie.cpp')
-rw-r--r--tests/auto/network/access/qnetworkcookie/tst_qnetworkcookie.cpp38
1 files changed, 25 insertions, 13 deletions
diff --git a/tests/auto/network/access/qnetworkcookie/tst_qnetworkcookie.cpp b/tests/auto/network/access/qnetworkcookie/tst_qnetworkcookie.cpp
index 77afd23289..7896003bb2 100644
--- a/tests/auto/network/access/qnetworkcookie/tst_qnetworkcookie.cpp
+++ b/tests/auto/network/access/qnetworkcookie/tst_qnetworkcookie.cpp
@@ -235,20 +235,24 @@ void tst_QNetworkCookie::parseSingleCookie_data()
QTest::newRow("path9") << "a=b;path=/foo" << cookie;
// some weird paths:
- cookie.setPath("/with spaces");
+ cookie.setPath("/with%20spaces");
QTest::newRow("path-with-spaces") << "a=b;path=/with%20spaces" << cookie;
QTest::newRow("path-with-spaces2") << "a=b; path=/with%20spaces " << cookie;
- cookie.setPath("\"/with spaces\"");
- QTest::newRow("path-with-spaces3") << "a=b; path=\"/with spaces\"" << cookie;
- QTest::newRow("path-with-spaces4") << "a=b; path = \"/with spaces\" " << cookie;
+ cookie.setPath(QString());
+ QTest::newRow("invalid-path-with-spaces3") << "a=b; path=\"/with spaces\"" << cookie;
+ QTest::newRow("invalid-path-with-spaces4") << "a=b; path = \"/with spaces\" " << cookie;
+ cookie.setPath("/with spaces");
+ QTest::newRow("path-with-spaces5") << "a=b; path=/with spaces" << cookie;
+ QTest::newRow("path-with-spaces6") << "a=b; path = /with spaces " << cookie;
cookie.setPath("/with\"Quotes");
- QTest::newRow("path-with-quotes") << "a=b; path = /with%22Quotes" << cookie;
- cookie.setPath("\"/with\\\"Quotes\"");
- QTest::newRow("path-with-quotes2") << "a=b; path = \"/with\\\"Quotes\"" << cookie;
+ QTest::newRow("path-with-quotes") << "a=b; path = /with\"Quotes" << cookie;
+ cookie.setPath(QString());
+ QTest::newRow("invalid-path-with-quotes2") << "a=b; path = \"/with\\\"Quotes\"" << cookie;
cookie.setPath(QString::fromUtf8("/R\303\251sum\303\251"));
QTest::newRow("path-with-utf8") << QString::fromUtf8("a=b;path=/R\303\251sum\303\251") << cookie;
+ cookie.setPath("/R%C3%A9sum%C3%A9");
QTest::newRow("path-with-utf8-2") << "a=b;path=/R%C3%A9sum%C3%A9" << cookie;
cookie.setPath(QString());
@@ -649,12 +653,21 @@ void tst_QNetworkCookie::parseMultipleCookies_data()
QTest::newRow("invalid-06") << "=b" << list;
QTest::newRow("invalid-07") << ";path=/" << list;
+ // these should be accepted by RFC6265 but ignoring the expires field
// reason: malformed expiration date string
- QTest::newRow("invalid-08") << "a=b;expires=" << list;
- QTest::newRow("invalid-09") << "a=b;expires=foobar" << list;
- QTest::newRow("invalid-10") << "a=b;expires=foobar, abc" << list;
- QTest::newRow("invalid-11") << "a=b;expires=foobar, dd-mmm-yyyy hh:mm:ss GMT; path=/" << list;
- QTest::newRow("invalid-12") << "a=b;expires=foobar, 32-Caz-1999 24:01:60 GMT; path=/" << list;
+ QNetworkCookie datelessCookie;
+ datelessCookie.setName("a");
+ datelessCookie.setValue("b");
+ list << datelessCookie;
+ QTest::newRow("expiration-empty") << "a=b;expires=" << list;
+ QTest::newRow("expiration-invalid-01") << "a=b;expires=foobar" << list;
+ QTest::newRow("expiration-invalid-02") << "a=b;expires=foobar, abc" << list;
+ QTest::newRow("expiration-invalid-03") << "a=b; expires=123" << list; // used to ASSERT
+ datelessCookie.setPath("/");
+ list.clear();
+ list << datelessCookie;
+ QTest::newRow("expiration-invalid-04") << "a=b;expires=foobar, dd-mmm-yyyy hh:mm:ss GMT; path=/" << list;
+ QTest::newRow("expiration-invalid-05") << "a=b;expires=foobar, 32-Caz-1999 24:01:60 GMT; path=/" << list;
// cookies obtained from the network:
QNetworkCookie cookie;
@@ -697,7 +710,6 @@ void tst_QNetworkCookie::parseMultipleCookies_data()
cookie.setDomain("!@#$%^&*();:."); // the ';' is actually problematic, because it is a separator
list = QList<QNetworkCookie>();
QTest::newRow("domain-non-alpha-numeric") << "NonAlphNumDomName=NonAlphNumDomValue; domain=!@#$%^&*()" << list;
- QTest::newRow("expiration-3digit1") << "a=b; expires=123" << list; // used to ASSERT
}
void tst_QNetworkCookie::parseMultipleCookies()