Files
UXP-Fixed/toolkit/components/search/tests/xpcshell/test_hasEngineWithURL.js
T
2018-02-02 04:16:08 -05:00

136 lines
4.7 KiB
JavaScript

/* 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.");
});