Bug 1447903: Part 9a - Refactor test_AddonRepository*.js to be less insane. r?aswan
MozReview-Commit-ID: 9hPZDy1HOfj
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/addons/test_AddonRepository_1/install.rdf
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-
- <Description about="urn:mozilla:install-manifest">
- <em:id>test_AddonRepository_1@tests.mozilla.org</em:id>
- <em:version>1.1</em:version>
-
- <em:targetApplication>
- <Description>
- <em:id>xpcshell@tests.mozilla.org</em:id>
- <em:minVersion>1</em:minVersion>
- <em:maxVersion>1</em:maxVersion>
- </Description>
- </em:targetApplication>
-
- <!-- Front End MetaData -->
- <em:name>XPI Add-on 1</em:name>
- <em:description>XPI Add-on 1 - Description</em:description>
- <em:creator>XPI Add-on 1 - Creator</em:creator>
- <em:developer>XPI Add-on 1 - First Developer</em:developer>
- <em:developer>XPI Add-on 1 - Second Developer</em:developer>
- <em:translator>XPI Add-on 1 - First Translator</em:translator>
- <em:translator>XPI Add-on 1 - Second Translator</em:translator>
- <em:contributor>XPI Add-on 1 - First Contributor</em:contributor>
- <em:contributor>XPI Add-on 1 - Second Contributor</em:contributor>
- <em:homepageURL>http://example.com/xpi/1/homepage.html</em:homepageURL>
- <em:optionsURL>http://example.com/xpi/1/options.html</em:optionsURL>
- <em:aboutURL>http://example.com/xpi/1/about.html</em:aboutURL>
- <em:iconURL>http://example.com/xpi/1/icon.png</em:iconURL>
- </Description>
-</RDF>
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/addons/test_AddonRepository_2/install.rdf
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-
- <Description about="urn:mozilla:install-manifest">
- <em:id>test_AddonRepository_2@tests.mozilla.org</em:id>
- <em:type>4</em:type>
- <em:internalName>test2/1.0</em:internalName>
- <em:version>1.2</em:version>
-
- <em:targetApplication>
- <Description>
- <em:id>xpcshell@tests.mozilla.org</em:id>
- <em:minVersion>1</em:minVersion>
- <em:maxVersion>1</em:maxVersion>
- </Description>
- </em:targetApplication>
-
- <!-- Front End MetaData -->
- <em:name>XPI Add-on 2</em:name>
- </Description>
-</RDF>
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/addons/test_AddonRepository_3/icon.png
+++ /dev/null
@@ -1,1 +0,0 @@
-Fake icon image
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/addons/test_AddonRepository_3/install.rdf
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-
- <Description about="urn:mozilla:install-manifest">
- <em:id>test_AddonRepository_3@tests.mozilla.org</em:id>
- <em:type>4</em:type>
- <em:internalName>test3/1.0</em:internalName>
- <em:version>1.3</em:version>
-
- <em:targetApplication>
- <Description>
- <em:id>xpcshell@tests.mozilla.org</em:id>
- <em:minVersion>1</em:minVersion>
- <em:maxVersion>1</em:maxVersion>
- </Description>
- </em:targetApplication>
-
- <!-- Front End MetaData -->
- <em:name>XPI Add-on 3</em:name>
- </Description>
-</RDF>
deleted file mode 100644
--- a/toolkit/mozapps/extensions/test/addons/test_AddonRepository_3/preview.png
+++ /dev/null
@@ -1,1 +0,0 @@
-Fake preview image
--- a/toolkit/mozapps/extensions/test/xpcshell/test_AddonRepository.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_AddonRepository.js
@@ -1,27 +1,75 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
// Tests AddonRepository.jsm
ChromeUtils.import("resource://gre/modules/addons/AddonRepository.jsm");
-ChromeUtils.import("resource://testing-common/httpd.js");
-var gServer = new HttpServer();
-gServer.start(-1);
+var gServer = AddonTestUtils.createHttpServer();
const PREF_GETADDONS_BROWSEADDONS = "extensions.getAddons.browseAddons";
const PREF_GETADDONS_BROWSESEARCHRESULTS = "extensions.getAddons.search.browseURL";
const PORT = gServer.identity.primaryPort;
const BASE_URL = "http://localhost:" + PORT;
const DEFAULT_URL = "about:blank";
+const ADDONS = [
+ {
+ id: "test_AddonRepository_1@tests.mozilla.org",
+ version: "1.1",
+
+ name: "XPI Add-on 1",
+ description: "XPI Add-on 1 - Description",
+ creator: "XPI Add-on 1 - Creator",
+ developer: ["XPI Add-on 1 - First Developer",
+ "XPI Add-on 1 - Second Developer"],
+ translator: ["XPI Add-on 1 - First Translator",
+ "XPI Add-on 1 - Second Translator"],
+ contributor: ["XPI Add-on 1 - First Contributor",
+ "XPI Add-on 1 - Second Contributor"],
+ homepageURL: "http://example.com/xpi/1/homepage.html",
+ optionsURL: "http://example.com/xpi/1/options.html",
+ aboutURL: "http://example.com/xpi/1/about.html",
+ iconURL: "http://example.com/xpi/1/icon.png",
+
+ targetApplications: [{
+ id: "xpcshell@tests.mozilla.org",
+ minVersion: "1",
+ maxVersion: "1"}],
+ },
+ {
+ id: "test_AddonRepository_2@tests.mozilla.org",
+ type: 4,
+ internalName: "test2/1.0",
+ version: "1.2",
+ name: "XPI Add-on 2",
+
+ targetApplications: [{
+ id: "xpcshell@tests.mozilla.org",
+ minVersion: "1",
+ maxVersion: "1"}],
+ },
+ {
+ id: "test_AddonRepository_3@tests.mozilla.org",
+ type: "4",
+ internalName: "test3/1.0",
+ version: "1.3",
+ name: "XPI Add-on 3",
+
+ targetApplications: [{
+ id: "xpcshell@tests.mozilla.org",
+ minVersion: "1",
+ maxVersion: "1"}],
+ },
+];
+
gPort = PORT;
// Path to source URI of installing add-on
const INSTALL_URL2 = "/addons/test_AddonRepository_2.xpi";
// Path to source URI of non-active add-on (state = STATE_AVAILABLE)
const INSTALL_URL3 = "/addons/test_AddonRepository_3.xpi";
// Properties of an individual add-on that should be checked
@@ -104,78 +152,55 @@ function check_results(aActualAddons, aE
if (aActualAddon.name == "FAIL")
do_throw(aActualAddon.id + " - " + aActualAddon.description);
if (aActualAddon.name != "PASS")
do_throw(aActualAddon.id + " - invalid add-on name " + aActualAddon.name);
});
}
-function run_test() {
+add_task(async function setup() {
// Setup for test
- do_test_pending();
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9");
- startupManager();
+ let xpis = ADDONS.map(addon => createTempXPIFile(addon));
+
+ // Register other add-on XPI files
+ gServer.registerFile(INSTALL_URL2, xpis[1]);
+ gServer.registerFile(INSTALL_URL3, xpis[2]);
+
+ // Register files used to test search failure
+ mapUrlToFile(GET_TEST.failedURL,
+ do_get_file("data/test_AddonRepository_fail.json"),
+ gServer);
+
+ // Register files used to test search success
+ mapUrlToFile(GET_TEST.successfulURL,
+ do_get_file("data/test_AddonRepository_getAddonsByIDs.json"),
+ gServer);
+
+ await promiseStartupManager();
// Install an add-on so can check that it isn't returned in the results
- installAllFiles([do_get_addon("test_AddonRepository_1")], function addon_1_install_callback() {
- restartManager();
-
- // Register other add-on XPI files
- gServer.registerFile(INSTALL_URL2,
- do_get_addon("test_AddonRepository_2"));
- gServer.registerFile(INSTALL_URL3,
- do_get_addon("test_AddonRepository_3"));
-
- // Register files used to test search failure
- mapUrlToFile(GET_TEST.failedURL,
- do_get_file("data/test_AddonRepository_fail.json"),
- gServer);
-
- // Register files used to test search success
- mapUrlToFile(GET_TEST.successfulURL,
- do_get_file("data/test_AddonRepository_getAddonsByIDs.json"),
- gServer);
+ await promiseInstallFile(xpis[0]);
+ await promiseRestartManager();
- // Create an active AddonInstall so can check that it isn't returned in the results
- AddonManager.getInstallForURL(BASE_URL + INSTALL_URL2, function addon_2_get(aInstall) {
- try {
- aInstall.install();
- } catch (e) {
- info("Failed to install add-on " + aInstall.sourceURI.spec);
- do_report_unexpected_exception(e);
- }
-
- // Create a non-active AddonInstall so can check that it is returned in the results
- AddonManager.getInstallForURL(BASE_URL + INSTALL_URL3,
- run_test_1, "application/x-xpinstall");
- }, "application/x-xpinstall");
- });
-}
+ // Create an active AddonInstall so can check that it isn't returned in the results
+ let install = await AddonManager.getInstallForURL(BASE_URL + INSTALL_URL2,
+ undefined,
+ "application/x-xpinstall");
+ install.install();
-function end_test() {
- let testDir = gProfD.clone();
- testDir.append("extensions");
- testDir.append("staged");
- gServer.stop(function() {
- function loop() {
- if (!testDir.exists()) {
- info("Staged directory has been cleaned up");
- do_test_finished();
- }
- info("Waiting 1 second until cleanup is complete");
- do_timeout(1000, loop);
- }
- loop();
- });
-}
+ // Create a non-active AddonInstall so can check that it is returned in the results
+ await AddonManager.getInstallForURL(BASE_URL + INSTALL_URL3,
+ undefined, "application/x-xpinstall");
+});
// Tests homepageURL and getSearchURL()
-function run_test_1() {
+add_task(async function test_1() {
function check_urls(aPreference, aGetURL, aTests) {
aTests.forEach(function(aTest) {
Services.prefs.setCharPref(aPreference, aTest.preferenceValue);
Assert.equal(aGetURL(aTest), aTest.expectedURL);
});
}
var urlTests = [{
@@ -223,33 +248,24 @@ function run_test_1() {
// Preference is not defined by default
Assert.equal(Services.prefs.getPrefType(aTest.preference),
Services.prefs.PREF_INVALID);
Assert.equal(aTest.getURL(), DEFAULT_URL);
}
check_urls(aTest.preference, aTest.getURL, aTest.urlTests);
});
-
- run_test_getAddonsByID_fails();
-}
+});
// Tests failure of AddonRepository.getAddonsByIDs()
-function run_test_getAddonsByID_fails() {
+add_task(async function test_getAddonsByID_fails() {
Services.prefs.setCharPref(GET_TEST.preference, GET_TEST.preferenceValue);
- AddonRepository.getAddonsByIDs(GET_TEST.failedIDs).then(result => {
- do_throw("getAddonsByIDs should not have succeeded");
- end_test();
- }).catch(err => {
- run_test_getAddonsByID_succeeds();
- });
-}
+
+ await Assert.rejects(
+ AddonRepository.getAddonsByIDs(GET_TEST.failedIDs));
+});
// Tests success of AddonRepository.getAddonsByIDs()
-function run_test_getAddonsByID_succeeds() {
- AddonRepository.getAddonsByIDs(GET_TEST.successfulIDs).then(result => {
- check_results(result, GET_RESULTS);
- end_test();
- }).catch(err => {
- do_throw(err);
- end_test();
- });
-}
+add_task(async function test_getAddonsByID_succeeds() {
+ let result = await AddonRepository.getAddonsByIDs(GET_TEST.successfulIDs);
+
+ check_results(result, GET_RESULTS);
+});
--- a/toolkit/mozapps/extensions/test/xpcshell/test_AddonRepository_cache.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_AddonRepository_cache.js
@@ -14,21 +14,77 @@ const BASE_URL = "http://example.com";
const PREF_GETADDONS_CACHE_ENABLED = "extensions.getAddons.cache.enabled";
const PREF_GETADDONS_CACHE_TYPES = "extensions.getAddons.cache.types";
const GETADDONS_RESULTS = BASE_URL + "/data/test_AddonRepository_cache.json";
const COMPAT_RESULTS = BASE_URL + "/data/test_AddonRepository_cache_compat.json";
const EMPTY_RESULT = BASE_URL + "/data/test_AddonRepository_empty.json";
const FAILED_RESULT = BASE_URL + "/data/test_AddonRepository_fail.json";
const FILE_DATABASE = "addons.json";
-const ADDON_NAMES = ["test_AddonRepository_1",
- "test_AddonRepository_2",
- "test_AddonRepository_3"];
-const ADDON_IDS = ADDON_NAMES.map(aName => aName + "@tests.mozilla.org");
-const ADDON_FILES = ADDON_NAMES.map(do_get_addon);
+
+const ADDONS = [
+ {
+ "install.rdf": {
+ id: "test_AddonRepository_1@tests.mozilla.org",
+ version: "1.1",
+
+ name: "XPI Add-on 1",
+ description: "XPI Add-on 1 - Description",
+ creator: "XPI Add-on 1 - Creator",
+ developer: ["XPI Add-on 1 - First Developer",
+ "XPI Add-on 1 - Second Developer"],
+ translator: ["XPI Add-on 1 - First Translator",
+ "XPI Add-on 1 - Second Translator"],
+ contributor: ["XPI Add-on 1 - First Contributor",
+ "XPI Add-on 1 - Second Contributor"],
+ homepageURL: "http://example.com/xpi/1/homepage.html",
+ optionsURL: "http://example.com/xpi/1/options.html",
+ aboutURL: "http://example.com/xpi/1/about.html",
+ iconURL: "http://example.com/xpi/1/icon.png",
+
+ targetApplications: [{
+ id: "xpcshell@tests.mozilla.org",
+ minVersion: "1",
+ maxVersion: "1"}],
+ },
+ },
+ {
+ "install.rdf": {
+ id: "test_AddonRepository_2@tests.mozilla.org",
+ type: 4,
+ internalName: "test2/1.0",
+ version: "1.2",
+ name: "XPI Add-on 2",
+
+ targetApplications: [{
+ id: "xpcshell@tests.mozilla.org",
+ minVersion: "1",
+ maxVersion: "1"}],
+ },
+ },
+ {
+ "install.rdf": {
+ id: "test_AddonRepository_3@tests.mozilla.org",
+ type: "4",
+ internalName: "test3/1.0",
+ version: "1.3",
+ name: "XPI Add-on 3",
+
+ targetApplications: [{
+ id: "xpcshell@tests.mozilla.org",
+ minVersion: "1",
+ maxVersion: "1"}],
+ },
+ "icon.png": "",
+ "preview.png": "",
+ },
+];
+
+const ADDON_IDS = ADDONS.map(addon => addon["install.rdf"].id);
+const ADDON_FILES = ADDONS.map(addon => AddonTestUtils.createTempXPIFile(addon));
const PREF_ADDON0_CACHE_ENABLED = "extensions." + ADDON_IDS[0] + ".getAddons.cache.enabled";
const PREF_ADDON1_CACHE_ENABLED = "extensions." + ADDON_IDS[1] + ".getAddons.cache.enabled";
// Properties of an individual add-on that should be checked
// Note: size and updateDate are checked separately
const ADDON_PROPERTIES = ["id", "type", "name", "version", "creator",
"developers", "translators", "contributors",