/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ /* * Test that various install failures are handled correctly. */ add_setup(async function () { useHttpServer(); await SearchService.init(); // This test purposely attempts to load an invalid engine. consoleAllowList.push("_onLoad: Failed to init engine!"); consoleAllowList.push("Invalid search plugin due to namespace not matching"); }); add_task(async function test_invalid_path_fails() { await Assert.rejects( SearchService.addOpenSearchEngine( "http://invalid/opensearch/generic1.xml", null ), error => { Assert.ok( error instanceof SearchEngineInstallError, "Should have raised an install error" ); Assert.equal( error.type, "download-failure", "Should have returned download failure" ); return true; }, "Should fail to install an engine with an invalid path" ); }); add_task(async function test_install_duplicate_fails() { let engine = await SearchService.addOpenSearchEngine( `${gHttpURL}/opensearch/simple.xml`, null ); Assert.equal(engine.name, "simple", "Should have installed the engine"); await Assert.rejects( SearchService.addOpenSearchEngine( `${gHttpURL}/opensearch/simple.xml`, null ), error => { Assert.ok( error instanceof SearchEngineInstallError, "Should have raised an install error" ); Assert.equal( error.type, "duplicate-title", "Should have returned duplicate failure" ); return true; }, "Should fail to install a duplicate engine" ); }); add_task(async function test_invalid_engine_from_dir() { await Assert.rejects( SearchService.addOpenSearchEngine( `${gHttpURL}/opensearch/invalid.xml`, null ), error => { Assert.ok( error instanceof SearchEngineInstallError, "Should have raised an install error" ); Assert.equal( error.type, "corrupted", "Should have returned corruption failure" ); return true; }, "Should fail to install an invalid engine" ); });