From 1ff6c575ce57c84324e4be4919cac65e09b96025 Mon Sep 17 00:00:00 2001 From: Jeongmin Kim Date: Wed, 24 Sep 2014 18:51:21 +0900 Subject: QNetworkDiskCache: Fix QNetworkDiskCache don't handle to set CookieHeader. QNetworkDiskCache don't handle to set CookieHeader. so All Set-Cookie's value is invalid. The root of cause is that metaDataChanged() don't work because of no slot for it. Add the slot for it and renamed to _q_metaDataChanged. Task-number: QTBUG-41514 Change-Id: I5cec017e59a1de69c6e89c0bc7209a73dcdc11da Reviewed-by: Jeongmin Kim Reviewed-by: Jung Dong-Heon Reviewed-by: Peter Hartmann --- .../qnetworkdiskcache/tst_qnetworkdiskcache.cpp | 39 +++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp b/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp index a6d75390c3..a2f1668ef5 100644 --- a/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp +++ b/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp @@ -55,6 +55,7 @@ public slots: void init(); void cleanup(); void accessAfterRemoveReadyReadSlot(); + void setCookieHeaderMetaDataChangedSlot(); private slots: void qnetworkdiskcache_data(); @@ -68,6 +69,7 @@ private slots: void metaData(); void remove(); void accessAfterRemove(); // QTBUG-17400 + void setCookieHeader(); // QTBUG-41514 void setCacheDirectory_data(); void setCacheDirectory(); void updateMetaData(); @@ -86,8 +88,9 @@ private slots: private: QTemporaryDir tempDir; - QUrl url; // used by accessAfterRemove() + QUrl url; // used by accessAfterRemove(), setCookieHeader() QNetworkDiskCache *diskCache; // used by accessAfterRemove() + QNetworkAccessManager *manager; // used by setCookieHeader() }; // FIXME same as in tst_qnetworkreply.cpp .. could be unified @@ -403,6 +406,40 @@ void tst_QNetworkDiskCache::accessAfterRemoveReadyReadSlot() diskCache->remove(url); // this used to cause a crash later on } +void tst_QNetworkDiskCache::setCookieHeader() // QTBUG-41514 +{ + SubQNetworkDiskCache *cache = new SubQNetworkDiskCache(); + url = QUrl("http://www.foo.com/cookieTest.html"); + QNetworkCacheMetaData metaData; + metaData.setUrl(url); + + QNetworkCacheMetaData::RawHeaderList headers; + headers.append(QNetworkCacheMetaData::RawHeader("Set-Cookie", "aaa=bbb")); + metaData.setRawHeaders(headers); + metaData.setSaveToDisk(true); + cache->setupWithOne(tempDir.path(), url, metaData); + + manager = new QNetworkAccessManager(); + manager->setCache(cache); + + QNetworkRequest request(url); + QNetworkReply *reply = manager->get(request); + connect(reply, SIGNAL(metaDataChanged()), this, SLOT(setCookieHeaderMetaDataChangedSlot())); + connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); + + QTestEventLoop::instance().enterLoop(5); + QVERIFY(!QTestEventLoop::instance().timeout()); + + reply->deleteLater(); + manager->deleteLater(); +} + +void tst_QNetworkDiskCache::setCookieHeaderMetaDataChangedSlot() +{ + QList actualCookieJar = manager->cookieJar()->cookiesForUrl(url); + QVERIFY(!actualCookieJar.empty()); +} + void tst_QNetworkDiskCache::setCacheDirectory_data() { QTest::addColumn("cacheDir"); -- cgit v1.2.3