diff -r 000000000000 -r 6474c204b198 toolkit/mozapps/update/tests/marionette/update_test_status.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolkit/mozapps/update/tests/marionette/update_test_status.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,56 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +const TEST_URL = "http://localhost"; + +setPref("b2g.update.apply-idle-timeout", 0); +setPref("app.update.backgroundErrors", 0); +setPref("app.update.backgroundMaxErrors", 100); + +function forceCheckAndTestStatus(status, next) { + let mozSettings = window.navigator.mozSettings; + let forceSent = false; + + mozSettings.addObserver("gecko.updateStatus", function statusObserver(setting) { + if (!forceSent) { + return; + } + + mozSettings.removeObserver("gecko.updateStatus", statusObserver); + is(setting.settingValue, status, "gecko.updateStatus"); + next(); + }); + + sendContentEvent("force-update-check"); + forceSent = true; +} + +function testBadXml() { + setPref("app.update.url.override", TEST_URL + "/bad.xml"); + forceCheckAndTestStatus("check-error-http-200", testAccessDenied); +} + +function testAccessDenied() { + setPref("app.update.url.override", TEST_URL + "/cgi-bin/err.cgi?403"); + forceCheckAndTestStatus("check-error-http-403", testNoUpdateXml); +} + +function testNoUpdateXml() { + setPref("app.update.url.override", TEST_URL + "/none.html"); + forceCheckAndTestStatus("check-error-http-404", testInternalServerError); +} + +function testInternalServerError() { + setPref("app.update.url.override", TEST_URL + "/cgi-bin/err.cgi?500"); + forceCheckAndTestStatus("check-error-http-500", testBadHostStatus); +} + +function testBadHostStatus() { + setPref("app.update.url.override", "http://bad-host-doesnt-exist-sorry.com"); + forceCheckAndTestStatus("check-error-" + Cr.NS_ERROR_UNKNOWN_HOST, cleanUp); +} + +// Update test functions +function preUpdate() { + testBadXml(); +}