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.js78
1 files changed, 78 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..affda64adc
--- /dev/null
+++ b/toolkit/components/search/tests/xpcshell/test_sendSubmissionURL.js
@@ -0,0 +1,78 @@
+/* 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 = new Map([
+ ["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 = new Map([
+ ["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, searchURL) {
+ await Services.search.addEngineWithDetails(name, {
+ method: "GET",
+ template: searchURL,
+ });
+ let engine = Services.search.getEngineByName(name);
+ await Services.search.setDefault(engine);
+ return engine;
+}
+
+add_task(async function test_submission_url_matching() {
+ Assert.ok(!Services.search.isInitialized);
+ let engineInfo;
+ let engine;
+
+ for (let [name, searchURL] of SUBMISSION_YES) {
+ engine = await addAndMakeDefault(name, searchURL);
+ engineInfo = await Services.search.getDefaultEngineInfo();
+ Assert.equal(
+ engineInfo.defaultSearchEngineData.submissionURL,
+ searchURL.replace("{searchTerms}", "")
+ );
+ await Services.search.removeEngine(engine);
+ }
+
+ for (let [name, searchURL] of SUBMISSION_NO) {
+ engine = await addAndMakeDefault(name, searchURL);
+ engineInfo = await 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);
+
+ const engineInfo = await 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."
+ );
+});