summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/io/qurl
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2018-09-27 11:56:07 -0700
committerThiago Macieira <thiago.macieira@intel.com>2018-09-29 00:33:39 +0000
commitcaa598c843eb27fd0c645e62723fd2d4e3e12f60 (patch)
treef195b88180d3bb1c1f9b8725629836f372b6c015 /tests/auto/corelib/io/qurl
parent94884246d445fb3e702ac8c4d4bb432768e61b61 (diff)
Fix QUrl::matches for when removing authority parts (other than host)
QUrl::RemoveAuthority is RemoveUserInfo | RemovePort | 0x10, so the condition if (options & QUrl::RemoveAuthority) would match if any of the other bits for the username, password or port were set, which meant we would skip the host comparison. Ditto for username and RemovePassword. [ChangeLog][QtCore][QUrl] Fixed a bug that caused QUrl::matches to incorrectly compare two URLs with different hostnames or different usernames as equal, if certain QUrl::RemoveXxx options were passed. Change-Id: I015970a03b874898bba7fffd155856ab9d6cb1be Fixes: QTBUG-70774 Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'tests/auto/corelib/io/qurl')
-rw-r--r--tests/auto/corelib/io/qurl/tst_qurl.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/auto/corelib/io/qurl/tst_qurl.cpp b/tests/auto/corelib/io/qurl/tst_qurl.cpp
index 09aefcee91..62af907037 100644
--- a/tests/auto/corelib/io/qurl/tst_qurl.cpp
+++ b/tests/auto/corelib/io/qurl/tst_qurl.cpp
@@ -4123,6 +4123,18 @@ void tst_QUrl::matches_data()
<< "http://user:pass@www.website.com/directory"
<< "http://otheruser:otherpass@www.website.com/directory"
<< uint(QUrl::RemovePath | QUrl::RemoveAuthority) << true;
+ QTest::newRow("matchingHost-removePort") << "http://example.com" << "http://example.com"
+ << uint(QUrl::RemovePort) << true;
+ QTest::newRow("nonMatchingHost-removePort") << "http://example.com" << "http://example.net"
+ << uint(QUrl::RemovePort) << false;
+ QTest::newRow("matchingHost-removePassword") << "http://example.com" << "http://example.com"
+ << uint(QUrl::RemovePassword) << true;
+ QTest::newRow("nonMatchingHost-removePassword") << "http://example.com" << "http://example.net"
+ << uint(QUrl::RemovePassword) << false;
+ QTest::newRow("matchingUserName-removePassword") << "http://user@example.com" << "http://user@example.com"
+ << uint(QUrl::RemovePassword) << true;
+ QTest::newRow("nonMatchingUserName-removePassword") << "http://user@example.com" << "http://user2@example.com"
+ << uint(QUrl::RemovePassword) << false;
}
void tst_QUrl::matches()