summaryrefslogtreecommitdiffstats
path: root/toolkit/components/search/tests/xpcshell/test_sendSubmissionURL.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/search/tests/xpcshell/test_sendSubmissionURL.js')
-rw-r--r--toolkit/components/search/tests/xpcshell/test_sendSubmissionURL.js90
1 files changed, 90 insertions, 0 deletions
diff --git a/toolkit/components/search/tests/xpcshell/test_sendSubmissionURL.js b/toolkit/components/search/tests/xpcshell/test_sendSubmissionURL.js
new file mode 100644
index 0000000000..26052c1bea
--- /dev/null
+++ b/toolkit/components/search/tests/xpcshell/test_sendSubmissionURL.js
@@ -0,0 +1,90 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/*
+ * Tests covering sending submission URLs for major engines
+ */
+
+const SUBMISSION_YES = [
+ ["Google1 Test", "https://www.google.com/search", "q={searchTerms}"],
+ ["Google2 Test", "https://www.google.co.uk/search", "q={searchTerms}"],
+ ["Yahoo1 Test", "https://search.yahoo.com/search", "p={searchTerms}"],
+ ["Yahoo2 Test", "https://uk.search.yahoo.com/search", "p={searchTerms}"],
+ ["AOL1 Test", "https://search.aol.com/aol/search", "q={searchTerms}"],
+ ["AOL2 Test", "https://search.aol.co.uk/aol/search", "q={searchTerms}"],
+ ["Yandex1 Test", "https://yandex.ru/search/", "text={searchTerms}"],
+ ["Yandex2 Test", "https://yandex.com/search/", "text={searchTerms}"],
+ ["Ask1 Test", "https://www.ask.com/web", "q={searchTerms}"],
+ ["Ask2 Test", "https://fr.ask.com/web", "q={searchTerms}"],
+ ["Bing Test", "https://www.bing.com/search", "q={searchTerms}"],
+ [
+ "Startpage Test",
+ "https://www.startpage.com/do/search",
+ "query={searchTerms}",
+ ],
+ ["DuckDuckGo Test", "https://duckduckgo.com/", "q={searchTerms}"],
+ ["Baidu Test", "https://www.baidu.com/s", "wd={searchTerms}"],
+];
+
+const SUBMISSION_NO = [
+ ["Other1 Test", "https://example.com", "q={searchTerms}"],
+ ["Other2 Test", "https://googlebutnotgoogle.com", "q={searchTerms}"],
+];
+
+add_task(async function setup() {
+ await SearchTestUtils.useTestEngines("data1");
+ await AddonTestUtils.promiseStartupManager();
+});
+
+async function addAndMakeDefault(name, search_url, search_url_get_params) {
+ await SearchTestUtils.installSearchExtension({
+ name,
+ search_url,
+ search_url_get_params,
+ });
+
+ let engine = Services.search.getEngineByName(name);
+ await Services.search.setDefault(
+ engine,
+ Ci.nsISearchService.CHANGE_REASON_UNKNOWN
+ );
+ return engine;
+}
+
+add_task(async function test_submission_url_matching() {
+ Assert.ok(!Services.search.isInitialized);
+ let engineInfo;
+ let engine;
+
+ for (let [name, searchURL, searchParams] of SUBMISSION_YES) {
+ engine = await addAndMakeDefault(name, searchURL, searchParams);
+ engineInfo = Services.search.getDefaultEngineInfo();
+ Assert.equal(
+ engineInfo.defaultSearchEngineData.submissionURL,
+ (searchURL + "?" + searchParams).replace("{searchTerms}", "")
+ );
+ await Services.search.removeEngine(engine);
+ }
+
+ for (let [name, searchURL, searchParams] of SUBMISSION_NO) {
+ engine = await addAndMakeDefault(name, searchURL, searchParams);
+ engineInfo = Services.search.getDefaultEngineInfo();
+ Assert.equal(engineInfo.defaultSearchEngineData.submissionURL, null);
+ await Services.search.removeEngine(engine);
+ }
+});
+
+add_task(async function test_submission_url_built_in() {
+ const engine = await Services.search.getEngineByName("engine1");
+ await Services.search.setDefault(
+ engine,
+ Ci.nsISearchService.CHANGE_REASON_UNKNOWN
+ );
+
+ const engineInfo = Services.search.getDefaultEngineInfo();
+ Assert.equal(
+ engineInfo.defaultSearchEngineData.submissionURL,
+ "https://1.example.com/search?q=",
+ "Should have given the submission url for a built-in engine."
+ );
+});