Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorvarjolintu <sami.vanttinen@protonmail.com>2019-11-01 21:13:12 +0300
committerJonathan White <support@dmapps.us>2019-11-10 16:43:10 +0300
commit3d0964bce940c1e28214bd2562d269c197b1b678 (patch)
tree889dca63a50576200e7e46ff612959ffe3f30d81 /tests
parent4437e6a609bfddd6c1e1a0df11bcd9329d29d309 (diff)
Fix URL matching
Diffstat (limited to 'tests')
-rw-r--r--tests/TestBrowser.cpp126
-rw-r--r--tests/TestBrowser.h2
2 files changed, 106 insertions, 22 deletions
diff --git a/tests/TestBrowser.cpp b/tests/TestBrowser.cpp
index 576b72c18..bb3318d07 100644
--- a/tests/TestBrowser.cpp
+++ b/tests/TestBrowser.cpp
@@ -147,7 +147,7 @@ void TestBrowser::testSortPriority()
entry6->setUrl("http://github.com/login");
entry7->setUrl("github.com");
entry8->setUrl("github.com/login");
- entry9->setUrl("https://github");
+ entry9->setUrl("https://github"); // Invalid URL
entry10->setUrl("github.com");
// The extension uses the submitUrl as default for comparison
@@ -170,7 +170,7 @@ void TestBrowser::testSortPriority()
QCOMPARE(res6, 0);
QCOMPARE(res7, 0);
QCOMPARE(res8, 0);
- QCOMPARE(res9, 90);
+ QCOMPARE(res9, 0);
QCOMPARE(res10, 0);
}
@@ -188,7 +188,7 @@ void TestBrowser::testSearchEntries()
urls.push_back("http://github.com/login");
urls.push_back("github.com");
urls.push_back("github.com/login");
- urls.push_back("https://github");
+ urls.push_back("https://github"); // Invalid URL
urls.push_back("github.com");
for (int i = 0; i < urls.length(); ++i) {
@@ -202,24 +202,23 @@ void TestBrowser::testSearchEntries()
browserSettings()->setMatchUrlScheme(false);
auto result = m_browserService->searchEntries(db, "github.com", "https://github.com"); // db, hostname, url
- QCOMPARE(result.length(), 7);
+
+ QCOMPARE(result.length(), 9);
QCOMPARE(result[0]->url(), QString("https://github.com/login_page"));
QCOMPARE(result[1]->url(), QString("https://github.com/login"));
QCOMPARE(result[2]->url(), QString("https://github.com/"));
- QCOMPARE(result[3]->url(), QString("http://github.com"));
- QCOMPARE(result[4]->url(), QString("http://github.com/login"));
- QCOMPARE(result[5]->url(), QString("github.com"));
- QCOMPARE(result[6]->url(), QString("github.com"));
+ QCOMPARE(result[3]->url(), QString("github.com/login"));
+ QCOMPARE(result[4]->url(), QString("http://github.com"));
+ QCOMPARE(result[5]->url(), QString("http://github.com/login"));
- // With matching there should be only 5 results
+ // With matching there should be only 3 results + 4 without a scheme
browserSettings()->setMatchUrlScheme(true);
result = m_browserService->searchEntries(db, "github.com", "https://github.com"); // db, hostname, url
- QCOMPARE(result.length(), 5);
+ QCOMPARE(result.length(), 7);
QCOMPARE(result[0]->url(), QString("https://github.com/login_page"));
QCOMPARE(result[1]->url(), QString("https://github.com/login"));
QCOMPARE(result[2]->url(), QString("https://github.com/"));
- QCOMPARE(result[3]->url(), QString("github.com"));
- QCOMPARE(result[4]->url(), QString("github.com"));
+ QCOMPARE(result[3]->url(), QString("github.com/login"));
}
void TestBrowser::testSearchEntriesWithPort()
@@ -242,7 +241,7 @@ void TestBrowser::testSearchEntriesWithPort()
auto result = m_browserService->searchEntries(db, "127.0.0.1", "http://127.0.0.1:443"); // db, hostname, url
QCOMPARE(result.length(), 1);
- QCOMPARE(result[0]->url(), QString("http://127.0.0.1:443"));
+ QCOMPARE(result[0]->url(), urls[0]);
}
void TestBrowser::testSearchEntriesWithAdditionalURLs()
@@ -271,12 +270,94 @@ void TestBrowser::testSearchEntriesWithAdditionalURLs()
auto result = m_browserService->searchEntries(db, "github.com", "https://github.com"); // db, hostname, url
QCOMPARE(result.length(), 1);
- QCOMPARE(result[0]->url(), QString("https://github.com/"));
+ QCOMPARE(result[0]->url(), urls[0]);
// Search the additional URL. It should return the same entry
auto additionalResult = m_browserService->searchEntries(db, "keepassxc.org", "https://keepassxc.org");
QCOMPARE(additionalResult.length(), 1);
- QCOMPARE(additionalResult[0]->url(), QString("https://github.com/"));
+ QCOMPARE(additionalResult[0]->url(), urls[0]);
+}
+
+void TestBrowser::testInvalidEntries()
+{
+ auto db = QSharedPointer<Database>::create();
+ auto* root = db->rootGroup();
+
+ QList<QString> urls;
+ urls.push_back("https://github.com/login");
+ urls.push_back("https:///github.com/"); // Extra '/'
+ urls.push_back("http://github.com/**//*");
+ urls.push_back("http://*.github.com/login");
+ urls.push_back("//github.com"); // fromUserInput() corrects this one.
+ urls.push_back("github.com/{}<>");
+
+ for (int i = 0; i < urls.length(); ++i) {
+ auto entry = new Entry();
+ entry->setGroup(root);
+ entry->beginUpdate();
+ entry->setUrl(urls[i]);
+ entry->setUsername(QString("User %1").arg(i));
+ entry->endUpdate();
+ }
+
+ browserSettings()->setMatchUrlScheme(true);
+ auto result = m_browserService->searchEntries(db, "github.com", "https://github.com"); // db, hostname, url
+ QCOMPARE(result.length(), 2);
+ QCOMPARE(result[0]->url(), QString("https://github.com/login"));
+ QCOMPARE(result[1]->url(), QString("//github.com"));
+
+ // Test the URL's directly
+ QCOMPARE(m_browserService->handleURL(urls[0], "github.com", "https://github.com"), true);
+ QCOMPARE(m_browserService->handleURL(urls[1], "github.com", "https://github.com"), false);
+ QCOMPARE(m_browserService->handleURL(urls[2], "github.com", "https://github.com"), false);
+ QCOMPARE(m_browserService->handleURL(urls[3], "github.com", "https://github.com"), false);
+ QCOMPARE(m_browserService->handleURL(urls[4], "github.com", "https://github.com"), true);
+ QCOMPARE(m_browserService->handleURL(urls[5], "github.com", "https://github.com"), false);
+}
+
+void TestBrowser::testSubdomainsAndPaths()
+{
+ auto db = QSharedPointer<Database>::create();
+ auto* root = db->rootGroup();
+
+ QList<QString> urls;
+ urls.push_back("https://www.github.com/login/page.xml");
+ urls.push_back("https://login.github.com/");
+ urls.push_back("https://github.com");
+ urls.push_back("http://www.github.com");
+ urls.push_back("http://login.github.com/pathtonowhere");
+ urls.push_back(".github.com"); // Invalid URL
+ urls.push_back("www.github.com/");
+ urls.push_back("https://github"); // Invalid URL
+
+ for (int i = 0; i < urls.length(); ++i) {
+ auto entry = new Entry();
+ entry->setGroup(root);
+ entry->beginUpdate();
+ entry->setUrl(urls[i]);
+ entry->setUsername(QString("User %1").arg(i));
+ entry->endUpdate();
+ }
+
+ browserSettings()->setMatchUrlScheme(false);
+ auto result = m_browserService->searchEntries(db, "github.com", "https://github.com"); // db, hostname, url
+
+ QCOMPARE(result.length(), 6);
+ QCOMPARE(result[0]->url(), urls[0]);
+ QCOMPARE(result[1]->url(), urls[1]);
+ QCOMPARE(result[2]->url(), urls[2]);
+ QCOMPARE(result[3]->url(), urls[3]);
+ QCOMPARE(result[4]->url(), urls[4]);
+ QCOMPARE(result[5]->url(), urls[6]);
+
+ // With matching there should be only 3 results
+ browserSettings()->setMatchUrlScheme(true);
+ result = m_browserService->searchEntries(db, "github.com", "https://github.com"); // db, hostname, url
+ QCOMPARE(result.length(), 4);
+ QCOMPARE(result[0]->url(), urls[0]);
+ QCOMPARE(result[1]->url(), urls[1]);
+ QCOMPARE(result[2]->url(), urls[2]);
+ QCOMPARE(result[3]->url(), urls[6]);
}
void TestBrowser::testSortEntries()
@@ -293,7 +374,7 @@ void TestBrowser::testSortEntries()
urls.push_back("http://github.com/login");
urls.push_back("github.com");
urls.push_back("github.com/login");
- urls.push_back("https://github");
+ urls.push_back("https://github"); // Invalid URL
urls.push_back("github.com");
QList<Entry*> entries;
@@ -313,12 +394,13 @@ void TestBrowser::testSortEntries()
QCOMPARE(result.size(), 10);
QCOMPARE(result[0]->username(), QString("User 2"));
QCOMPARE(result[0]->url(), QString("https://github.com/"));
- QCOMPARE(result[1]->username(), QString("User 8"));
- QCOMPARE(result[1]->url(), QString("https://github"));
- QCOMPARE(result[2]->username(), QString("User 0"));
- QCOMPARE(result[2]->url(), QString("https://github.com/login_page"));
- QCOMPARE(result[3]->username(), QString("User 1"));
- QCOMPARE(result[3]->url(), QString("https://github.com/login"));
+ QCOMPARE(result[1]->username(), QString("User 0"));
+ QCOMPARE(result[1]->url(), QString("https://github.com/login_page"));
+ QCOMPARE(result[2]->username(), QString("User 1"));
+ QCOMPARE(result[2]->url(), QString("https://github.com/login"));
+ QCOMPARE(result[3]->username(), QString("User 3"));
+ QCOMPARE(result[3]->url(), QString("github.com/login"));
+
}
void TestBrowser::testGetDatabaseGroups()
diff --git a/tests/TestBrowser.h b/tests/TestBrowser.h
index 0eed0d23f..981c1642d 100644
--- a/tests/TestBrowser.h
+++ b/tests/TestBrowser.h
@@ -43,6 +43,8 @@ private slots:
void testSearchEntries();
void testSearchEntriesWithPort();
void testSearchEntriesWithAdditionalURLs();
+ void testInvalidEntries();
+ void testSubdomainsAndPaths();
void testSortEntries();
void testGetDatabaseGroups();