toolkit/mozapps/extensions/test/browser/browser_hotfix.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* Any copyright is dedicated to the Public Domain.
     2  * http://creativecommons.org/publicdomain/zero/1.0/
     3  */
     5 const PREF_EM_HOTFIX_ID                = "extensions.hotfix.id";
     6 const PREF_EM_HOTFIX_LASTVERSION       = "extensions.hotfix.lastVersion";
     7 const PREF_EM_HOTFIX_URL               = "extensions.hotfix.url";
     8 const PREF_EM_HOTFIX_CERTS             = "extensions.hotfix.certs.";
     9 const PREF_EM_CERT_CHECKATTRIBUTES     = "extensions.hotfix.cert.checkAttributes";
    11 const PREF_INSTALL_REQUIREBUILTINCERTS = "extensions.install.requireBuiltInCerts";
    12 const PREF_UPDATE_REQUIREBUILTINCERTS  = "extensions.update.requireBuiltInCerts";
    14 const PREF_APP_UPDATE_ENABLED          = "app.update.enabled";
    15 const PREF_APP_UPDATE_URL              = "app.update.url";
    17 const HOTFIX_ID = "hotfix@tests.mozilla.org";
    19 var gNextTest;
    21 var SuccessfulInstallListener = {
    22   onDownloadCancelled: function(aInstall) {
    23     ok(false, "Should not have seen the download cancelled");
    24     is(aInstall.addon.id, HOTFIX_ID, "Should have seen the right add-on");
    26     AddonManager.removeInstallListener(this);
    27     gNextTest();
    28   },
    30   onInstallEnded: function(aInstall) {
    31     ok(true, "Should have seen the install complete");
    32     is(aInstall.addon.id, HOTFIX_ID, "Should have installed the right add-on");
    34     AddonManager.removeInstallListener(this);
    35     aInstall.addon.uninstall();
    36     Services.prefs.clearUserPref(PREF_EM_HOTFIX_LASTVERSION);
    37     gNextTest();
    38   }
    39 }
    41 var FailedInstallListener = {
    42   onDownloadCancelled: function(aInstall) {
    43     ok(true, "Should have seen the download cancelled");
    44     is(aInstall.addon.id, HOTFIX_ID, "Should have seen the right add-on");
    46     AddonManager.removeInstallListener(this);
    47     gNextTest();
    48   },
    50   onInstallEnded: function(aInstall) {
    51     ok(false, "Should not have seen the install complete");
    52     is(aInstall.addon.id, HOTFIX_ID, "Should have installed the right add-on");
    54     AddonManager.removeInstallListener(this);
    55     aInstall.addon.uninstall();
    56     Services.prefs.clearUserPref(PREF_EM_HOTFIX_LASTVERSION);
    57     gNextTest();
    58   }
    59 }
    61 function test() {
    62   waitForExplicitFinish();
    64   var oldAusUrl = Services.prefs.getDefaultBranch(null).getCharPref(PREF_APP_UPDATE_URL);
    65   Services.prefs.getDefaultBranch(null).setCharPref(PREF_APP_UPDATE_URL, TESTROOT + "ausdummy.xml");
    66   Services.prefs.setBoolPref(PREF_APP_UPDATE_ENABLED, true);
    67   Services.prefs.setBoolPref(PREF_INSTALL_REQUIREBUILTINCERTS, false);
    68   Services.prefs.setBoolPref(PREF_UPDATE_REQUIREBUILTINCERTS, false);
    69   Services.prefs.setCharPref(PREF_EM_HOTFIX_ID, HOTFIX_ID);
    70   var oldURL = Services.prefs.getCharPref(PREF_EM_HOTFIX_URL);
    71   Services.prefs.setCharPref(PREF_EM_HOTFIX_URL, TESTROOT + "signed_hotfix.rdf");
    73   registerCleanupFunction(function() {
    74     Services.prefs.setBoolPref(PREF_APP_UPDATE_ENABLED, false);
    75     Services.prefs.getDefaultBranch(null).setCharPref(PREF_APP_UPDATE_URL, oldAusUrl);
    76     Services.prefs.clearUserPref(PREF_EM_HOTFIX_ID);
    77     Services.prefs.setCharPref(PREF_EM_HOTFIX_URL, oldURL);
    78     Services.prefs.clearUserPref(PREF_INSTALL_REQUIREBUILTINCERTS);
    79     Services.prefs.clearUserPref(PREF_UPDATE_REQUIREBUILTINCERTS);
    81     Services.prefs.clearUserPref(PREF_EM_CERT_CHECKATTRIBUTES);
    82     var prefs = Services.prefs.getChildList(PREF_EM_HOTFIX_CERTS);
    83     prefs.forEach(Services.prefs.clearUserPref);
    84   });
    86   run_next_test();
    87 }
    89 function end_test() {
    90   finish();
    91 }
    93 add_test(function check_no_cert_checks() {
    94   Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, false);
    95   AddonManager.addInstallListener(SuccessfulInstallListener);
    97   gNextTest = run_next_test;
    99   AddonManagerPrivate.backgroundUpdateCheck();
   100 });
   102 add_test(function check_wrong_cert_fingerprint() {
   103   Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, true);
   104   Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint", "foo");
   106   AddonManager.addInstallListener(FailedInstallListener);
   108   gNextTest = function() {
   109     Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint");
   111     run_next_test();
   112   };
   114   AddonManagerPrivate.backgroundUpdateCheck();
   115 });
   117 add_test(function check_right_cert_fingerprint() {
   118   Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, true);
   119   Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint", "3E:B9:4E:07:12:FE:3C:01:41:46:13:46:FC:84:52:1A:8C:BE:1D:A2");
   121   AddonManager.addInstallListener(SuccessfulInstallListener);
   123   gNextTest = function() {
   124     Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint");
   126     run_next_test();
   127   };
   129   AddonManagerPrivate.backgroundUpdateCheck();
   130 });
   132 add_test(function check_multi_cert_fingerprint_1() {
   133   Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, true);
   134   Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint", "3E:B9:4E:07:12:FE:3C:01:41:46:13:46:FC:84:52:1A:8C:BE:1D:A2");
   135   Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "2.sha1Fingerprint", "foo");
   137   AddonManager.addInstallListener(SuccessfulInstallListener);
   139   gNextTest = function() {
   140     Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint");
   141     Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "2.sha1Fingerprint");
   143     run_next_test();
   144   };
   146   AddonManagerPrivate.backgroundUpdateCheck();
   147 });
   149 add_test(function check_multi_cert_fingerprint_2() {
   150   Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, true);
   151   Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint", "foo");
   152   Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "2.sha1Fingerprint", "3E:B9:4E:07:12:FE:3C:01:41:46:13:46:FC:84:52:1A:8C:BE:1D:A2");
   154   AddonManager.addInstallListener(SuccessfulInstallListener);
   156   gNextTest = function() {
   157     Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint");
   158     Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "2.sha1Fingerprint");
   160     run_next_test();
   161   };
   163   AddonManagerPrivate.backgroundUpdateCheck();
   164 });
   166 add_test(function check_no_cert_no_checks() {
   167   Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, false);
   168   Services.prefs.setCharPref(PREF_EM_HOTFIX_URL, TESTROOT + "unsigned_hotfix.rdf");
   170   AddonManager.addInstallListener(SuccessfulInstallListener);
   172   gNextTest = run_next_test;
   174   AddonManagerPrivate.backgroundUpdateCheck();
   175 });
   177 add_test(function check_no_cert_cert_fingerprint_check() {
   178   Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, true);
   179   Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint", "3E:B9:4E:07:12:FE:3C:01:41:46:13:46:FC:84:52:1A:8C:BE:1D:A2");
   181   AddonManager.addInstallListener(FailedInstallListener);
   183   gNextTest = function() {
   184     Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint");
   186     run_next_test();
   187   };
   189   AddonManagerPrivate.backgroundUpdateCheck();
   190 });

mercurial