summaryrefslogtreecommitdiffstats
path: root/toolkit/mozapps/webextensions/test/xpcshell/test_ProductAddonChecker.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/mozapps/webextensions/test/xpcshell/test_ProductAddonChecker.js')
-rw-r--r--toolkit/mozapps/webextensions/test/xpcshell/test_ProductAddonChecker.js244
1 files changed, 0 insertions, 244 deletions
diff --git a/toolkit/mozapps/webextensions/test/xpcshell/test_ProductAddonChecker.js b/toolkit/mozapps/webextensions/test/xpcshell/test_ProductAddonChecker.js
deleted file mode 100644
index 6c562db65..000000000
--- a/toolkit/mozapps/webextensions/test/xpcshell/test_ProductAddonChecker.js
+++ /dev/null
@@ -1,244 +0,0 @@
-"use strict";
-
-Components.utils.import("resource://gre/modules/addons/ProductAddonChecker.jsm");
-Components.utils.import("resource://testing-common/httpd.js");
-Components.utils.import("resource://gre/modules/osfile.jsm");
-
-const LocalFile = new Components.Constructor("@mozilla.org/file/local;1", AM_Ci.nsIFile, "initWithPath");
-
-var testserver = new HttpServer();
-testserver.registerDirectory("/data/", do_get_file("data/productaddons"));
-testserver.start();
-var root = testserver.identity.primaryScheme + "://" +
- testserver.identity.primaryHost + ":" +
- testserver.identity.primaryPort + "/data/"
-
-/**
- * Compares binary data of 2 arrays and returns true if they are the same
- *
- * @param arr1 The first array to compare
- * @param arr2 The second array to compare
-*/
-function compareBinaryData(arr1, arr2) {
- do_check_eq(arr1.length, arr2.length);
- for (let i = 0; i < arr1.length; i++) {
- if (arr1[i] != arr2[i]) {
- do_print("Data differs at index " + i +
- ", arr1: " + arr1[i] + ", arr2: " + arr2[i]);
- return false;
- }
- }
- return true;
-}
-
-/**
- * Reads a file's data and returns it
- *
- * @param file The file to read the data from
- * @return array of bytes for the data in the file.
-*/
-function getBinaryFileData(file) {
- let fileStream = AM_Cc["@mozilla.org/network/file-input-stream;1"].
- createInstance(AM_Ci.nsIFileInputStream);
- // Open as RD_ONLY with default permissions.
- fileStream.init(file, FileUtils.MODE_RDONLY, FileUtils.PERMS_FILE, 0);
-
- let stream = AM_Cc["@mozilla.org/binaryinputstream;1"].
- createInstance(AM_Ci.nsIBinaryInputStream);
- stream.setInputStream(fileStream);
- let bytes = stream.readByteArray(stream.available());
- fileStream.close();
- return bytes;
-}
-
-/**
- * Compares binary data of 2 files and returns true if they are the same
- *
- * @param file1 The first file to compare
- * @param file2 The second file to compare
-*/
-function compareFiles(file1, file2) {
- return compareBinaryData(getBinaryFileData(file1), getBinaryFileData(file2));
-}
-
-add_task(function* test_404() {
- let res = yield ProductAddonChecker.getProductAddonList(root + "404.xml");
- do_check_true(res.usedFallback);
-});
-
-add_task(function* test_not_xml() {
- let res = yield ProductAddonChecker.getProductAddonList(root + "bad.txt");
- do_check_true(res.usedFallback);
-});
-
-add_task(function* test_invalid_xml() {
- let res = yield ProductAddonChecker.getProductAddonList(root + "bad.xml");
- do_check_true(res.usedFallback);
-});
-
-add_task(function* test_wrong_xml() {
- let res = yield ProductAddonChecker.getProductAddonList(root + "bad2.xml");
- do_check_true(res.usedFallback);
-});
-
-add_task(function* test_missing() {
- let addons = yield ProductAddonChecker.getProductAddonList(root + "missing.xml");
- do_check_eq(addons, null);
-});
-
-add_task(function* test_empty() {
- let res = yield ProductAddonChecker.getProductAddonList(root + "empty.xml");
- do_check_true(Array.isArray(res.gmpAddons));
- do_check_eq(res.gmpAddons.length, 0);
-});
-
-add_task(function* test_good_xml() {
- let res = yield ProductAddonChecker.getProductAddonList(root + "good.xml");
- do_check_true(Array.isArray(res.gmpAddons));
-
- // There are three valid entries in the XML
- do_check_eq(res.gmpAddons.length, 5);
-
- let addon = res.gmpAddons[0];
- do_check_eq(addon.id, "test1");
- do_check_eq(addon.URL, "http://example.com/test1.xpi");
- do_check_eq(addon.hashFunction, undefined);
- do_check_eq(addon.hashValue, undefined);
- do_check_eq(addon.version, undefined);
- do_check_eq(addon.size, undefined);
-
- addon = res.gmpAddons[1];
- do_check_eq(addon.id, "test2");
- do_check_eq(addon.URL, "http://example.com/test2.xpi");
- do_check_eq(addon.hashFunction, "md5");
- do_check_eq(addon.hashValue, "djhfgsjdhf");
- do_check_eq(addon.version, undefined);
- do_check_eq(addon.size, undefined);
-
- addon = res.gmpAddons[2];
- do_check_eq(addon.id, "test3");
- do_check_eq(addon.URL, "http://example.com/test3.xpi");
- do_check_eq(addon.hashFunction, undefined);
- do_check_eq(addon.hashValue, undefined);
- do_check_eq(addon.version, "1.0");
- do_check_eq(addon.size, 45);
-
- addon = res.gmpAddons[3];
- do_check_eq(addon.id, "test4");
- do_check_eq(addon.URL, undefined);
- do_check_eq(addon.hashFunction, undefined);
- do_check_eq(addon.hashValue, undefined);
- do_check_eq(addon.version, undefined);
- do_check_eq(addon.size, undefined);
-
- addon = res.gmpAddons[4];
- do_check_eq(addon.id, undefined);
- do_check_eq(addon.URL, "http://example.com/test5.xpi");
- do_check_eq(addon.hashFunction, undefined);
- do_check_eq(addon.hashValue, undefined);
- do_check_eq(addon.version, undefined);
- do_check_eq(addon.size, undefined);
-});
-
-add_task(function* test_download_nourl() {
- try {
- let path = yield ProductAddonChecker.downloadAddon({});
-
- yield OS.File.remove(path);
- do_throw("Should not have downloaded a file with a missing url");
- }
- catch (e) {
- do_check_true(true, "Should have thrown when downloading a file with a missing url.");
- }
-});
-
-add_task(function* test_download_missing() {
- try {
- let path = yield ProductAddonChecker.downloadAddon({
- URL: root + "nofile.xpi",
- });
-
- yield OS.File.remove(path);
- do_throw("Should not have downloaded a missing file");
- }
- catch (e) {
- do_check_true(true, "Should have thrown when downloading a missing file.");
- }
-});
-
-add_task(function* test_download_noverify() {
- let path = yield ProductAddonChecker.downloadAddon({
- URL: root + "unsigned.xpi",
- });
-
- let stat = yield OS.File.stat(path);
- do_check_false(stat.isDir);
- do_check_eq(stat.size, 452)
-
- do_check_true(compareFiles(do_get_file("data/productaddons/unsigned.xpi"), new LocalFile(path)));
-
- yield OS.File.remove(path);
-});
-
-add_task(function* test_download_badsize() {
- try {
- let path = yield ProductAddonChecker.downloadAddon({
- URL: root + "unsigned.xpi",
- size: 400,
- });
-
- yield OS.File.remove(path);
- do_throw("Should not have downloaded a file with a bad size");
- }
- catch (e) {
- do_check_true(true, "Should have thrown when downloading a file with a bad size.");
- }
-});
-
-add_task(function* test_download_badhashfn() {
- try {
- let path = yield ProductAddonChecker.downloadAddon({
- URL: root + "unsigned.xpi",
- hashFunction: "sha2567",
- hashValue: "9b9abf7ddfc1a6d7ffc7e0247481dcc202363e4445ad3494fb22036f1698c7f3",
- });
-
- yield OS.File.remove(path);
- do_throw("Should not have downloaded a file with a bad hash function");
- }
- catch (e) {
- do_check_true(true, "Should have thrown when downloading a file with a bad hash function.");
- }
-});
-
-add_task(function* test_download_badhash() {
- try {
- let path = yield ProductAddonChecker.downloadAddon({
- URL: root + "unsigned.xpi",
- hashFunction: "sha256",
- hashValue: "8b9abf7ddfc1a6d7ffc7e0247481dcc202363e4445ad3494fb22036f1698c7f3",
- });
-
- yield OS.File.remove(path);
- do_throw("Should not have downloaded a file with a bad hash");
- }
- catch (e) {
- do_check_true(true, "Should have thrown when downloading a file with a bad hash.");
- }
-});
-
-add_task(function* test_download_works() {
- let path = yield ProductAddonChecker.downloadAddon({
- URL: root + "unsigned.xpi",
- size: 452,
- hashFunction: "sha256",
- hashValue: "9b9abf7ddfc1a6d7ffc7e0247481dcc202363e4445ad3494fb22036f1698c7f3",
- });
-
- let stat = yield OS.File.stat(path);
- do_check_false(stat.isDir);
-
- do_check_true(compareFiles(do_get_file("data/productaddons/unsigned.xpi"), new LocalFile(path)));
-
- yield OS.File.remove(path);
-});