diff options
Diffstat (limited to 'toolkit/components/search/tests/xpcshell/test_hasEngineWithURL.js')
-rw-r--r-- | toolkit/components/search/tests/xpcshell/test_hasEngineWithURL.js | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/toolkit/components/search/tests/xpcshell/test_hasEngineWithURL.js b/toolkit/components/search/tests/xpcshell/test_hasEngineWithURL.js new file mode 100644 index 000000000..e48b1673c --- /dev/null +++ b/toolkit/components/search/tests/xpcshell/test_hasEngineWithURL.js @@ -0,0 +1,135 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +/** + * Tests the hasEngineWithURL() method of the nsIBrowserSearchService. + */ +function run_test() { + do_print("Setting up test"); + + updateAppInfo(); + useHttpServer(); + + do_print("Test starting"); + run_next_test(); +} + + +// Return a discreet, cloned copy of an (engine) object. +function getEngineClone(engine) { + return JSON.parse(JSON.stringify(engine)); +} + +// Check whether and engine does or doesn't exist. +function checkEngineState(exists, engine) { + do_check_eq(exists, Services.search.hasEngineWithURL(engine.method, + engine.formURL, + engine.queryParams)); +} + +// Add a search engine for testing. +function addEngineWithParams(engine) { + Services.search.addEngineWithDetails(engine.name, null, null, null, + engine.method, engine.formURL); + + let addedEngine = Services.search.getEngineByName(engine.name); + for (let param of engine.queryParams) { + addedEngine.addParam(param.name, param.value, null); + } +} + +// Main test. +add_task(function* test_hasEngineWithURL() { + // Avoid deprecated synchronous initialization. + yield asyncInit(); + + // Setup various Engine definitions for method tests. + let UNSORTED_ENGINE = { + name: "mySearch Engine", + method: "GET", + formURL: "https://totallyNotRealSearchEngine.com/", + queryParams: [ + { name: "DDs", value: "38s" }, + { name: "DCs", value: "39s" }, + { name: "DDs", value: "39s" }, + { name: "DDs", value: "38s" }, + { name: "DDs", value: "37s" }, + { name: "DDs", value: "38s" }, + { name: "DEs", value: "38s" }, + { name: "DCs", value: "38s" }, + { name: "DEs", value: "37s" }, + ], + }; + + // Same as UNSORTED_ENGINE, but sorted. + let SORTED_ENGINE = { + name: "mySearch Engine", + method: "GET", + formURL: "https://totallyNotRealSearchEngine.com/", + queryParams: [ + { name: "DCs", value: "38s" }, + { name: "DCs", value: "39s" }, + { name: "DDs", value: "37s" }, + { name: "DDs", value: "38s" }, + { name: "DDs", value: "38s" }, + { name: "DDs", value: "38s" }, + { name: "DDs", value: "39s" }, + { name: "DEs", value: "37s" }, + { name: "DEs", value: "38s" }, + ], + }; + + // Unique variations of the SORTED_ENGINE. + let SORTED_ENGINE_METHOD_CHANGE = getEngineClone(SORTED_ENGINE); + SORTED_ENGINE_METHOD_CHANGE.method = "PoST"; + + let SORTED_ENGINE_FORMURL_CHANGE = getEngineClone(SORTED_ENGINE); + SORTED_ENGINE_FORMURL_CHANGE.formURL = "http://www.ahighrpowr.com/" + + let SORTED_ENGINE_QUERYPARM_CHANGE = getEngineClone(SORTED_ENGINE); + SORTED_ENGINE_QUERYPARM_CHANGE.queryParams = []; + + let SORTED_ENGINE_NAME_CHANGE = getEngineClone(SORTED_ENGINE); + SORTED_ENGINE_NAME_CHANGE.name += " 2"; + + + // First ensure neither the unsorted engine, nor the same engine + // with a pre-sorted list of query parms matches. + checkEngineState(false, UNSORTED_ENGINE); + do_print("The unsorted version of the test engine does not exist."); + checkEngineState(false, SORTED_ENGINE); + do_print("The sorted version of the test engine does not exist."); + + // Ensure variations of the engine definition do not match. + checkEngineState(false, SORTED_ENGINE_METHOD_CHANGE); + checkEngineState(false, SORTED_ENGINE_FORMURL_CHANGE); + checkEngineState(false, SORTED_ENGINE_QUERYPARM_CHANGE); + do_print("There are no modified versions of the sorted test engine."); + + // Note that this method doesn't check name variations. + checkEngineState(false, SORTED_ENGINE_NAME_CHANGE); + do_print("There is no NAME modified version of the sorted test engine."); + + + // Add the unsorted engine and it's queryParams. + addEngineWithParams(UNSORTED_ENGINE); + do_print("The unsorted engine has been added."); + + + // Then, ensure we find a match for the unsorted engine, and for the + // same engine with a pre-sorted list of query parms. + checkEngineState(true, UNSORTED_ENGINE); + do_print("The unsorted version of the test engine now exists."); + checkEngineState(true, SORTED_ENGINE); + do_print("The sorted version of the same test engine also now exists."); + + // Ensure variations of the engine definition still do not match. + checkEngineState(false, SORTED_ENGINE_METHOD_CHANGE); + checkEngineState(false, SORTED_ENGINE_FORMURL_CHANGE); + checkEngineState(false, SORTED_ENGINE_QUERYPARM_CHANGE); + do_print("There are still no modified versions of the sorted test engine."); + + // Note that this method still doesn't check name variations. + checkEngineState(true, SORTED_ENGINE_NAME_CHANGE); + do_print("There IS now a NAME modified version of the sorted test engine."); +}); |