From 9974c788650711a5483abf0b4da27764e975ab2f Mon Sep 17 00:00:00 2001 From: Mythmon Date: Tue, 3 Jan 2017 09:41:51 -0800 Subject: [PATCH] Bug 1326225 - Fix un-imported fetch use in NormandyApi.jsm r=Gijs See https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Mochitest#How_do_I_test_issues_which_only_show_up_when_tests_are_run_across_domains.3F for info on how the test server was set up for testing that fetch was used correctly. r=Gijs MozReview-Commit-ID: CNH6SQ6gEGU --HG-- extra : rebase_source : a492de75e4189f10371427a4f6c342a672ea57cd --- .../shield-recipe-client/lib/NormandyApi.jsm | 1 + .../shield-recipe-client/test/.eslintrc.js | 1 + .../shield-recipe-client/test/browser.ini | 3 +++ .../test/browser_NormandyApi.js | 21 +++++++++++++++++++ .../shield-recipe-client/test/test_server.sjs | 8 +++++++ testing/profiles/prefs_general.js | 4 ++-- 6 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 browser/extensions/shield-recipe-client/test/browser_NormandyApi.js create mode 100644 browser/extensions/shield-recipe-client/test/test_server.sjs diff --git a/browser/extensions/shield-recipe-client/lib/NormandyApi.jsm b/browser/extensions/shield-recipe-client/lib/NormandyApi.jsm index 2bf97b2111af..1e5be3440e65 100644 --- a/browser/extensions/shield-recipe-client/lib/NormandyApi.jsm +++ b/browser/extensions/shield-recipe-client/lib/NormandyApi.jsm @@ -10,6 +10,7 @@ Cu.import("resource://gre/modules/Services.jsm"); Cu.import("resource://gre/modules/Task.jsm"); Cu.import("resource://gre/modules/CanonicalJSON.jsm"); Cu.import("resource://gre/modules/Log.jsm"); +Cu.importGlobalProperties(["fetch"]); /* globals fetch */ this.EXPORTED_SYMBOLS = ["NormandyApi"]; diff --git a/browser/extensions/shield-recipe-client/test/.eslintrc.js b/browser/extensions/shield-recipe-client/test/.eslintrc.js index 2901cac2e92a..0fef0552e2e8 100644 --- a/browser/extensions/shield-recipe-client/test/.eslintrc.js +++ b/browser/extensions/shield-recipe-client/test/.eslintrc.js @@ -8,6 +8,7 @@ module.exports = { is: false, isnot: false, ok: false, + SpecialPowers: false, }, rules: { "spaced-comment": 2, diff --git a/browser/extensions/shield-recipe-client/test/browser.ini b/browser/extensions/shield-recipe-client/test/browser.ini index 19031702a129..56ff2d9c0645 100644 --- a/browser/extensions/shield-recipe-client/test/browser.ini +++ b/browser/extensions/shield-recipe-client/test/browser.ini @@ -4,3 +4,6 @@ [browser_Storage.js] [browser_Heartbeat.js] skip-if = true # bug 1325409 +[browser_NormandyApi.js] + support-files = + test_server.sjs diff --git a/browser/extensions/shield-recipe-client/test/browser_NormandyApi.js b/browser/extensions/shield-recipe-client/test/browser_NormandyApi.js new file mode 100644 index 000000000000..15e18266c68b --- /dev/null +++ b/browser/extensions/shield-recipe-client/test/browser_NormandyApi.js @@ -0,0 +1,21 @@ +"use strict"; + +const {utils: Cu} = Components; +Cu.import("resource://shield-recipe-client/lib/NormandyApi.jsm", this); + +add_task(function* () { + // Point the add-on to the test server. + yield SpecialPowers.pushPrefEnv({ + set: [ + [ + "extensions.shield-recipe-client.api_url", + "http://mochi.test:8888/browser/browser/extensions/shield-recipe-client/test", + ] + ] + }) + + // Test that NormandyApi can fetch from the test server. + const response = yield NormandyApi.get("test_server.sjs"); + const data = yield response.json(); + Assert.deepEqual(data, {test: "data"}, "NormandyApi returned incorrect server data."); +}); diff --git a/browser/extensions/shield-recipe-client/test/test_server.sjs b/browser/extensions/shield-recipe-client/test/test_server.sjs new file mode 100644 index 000000000000..c9abf9094fcd --- /dev/null +++ b/browser/extensions/shield-recipe-client/test/test_server.sjs @@ -0,0 +1,8 @@ +function handleRequest(request, response) { + // Allow cross-origin, so you can XHR to it! + response.setHeader("Access-Control-Allow-Origin", "*", false); + // Avoid confusing cache behaviors + response.setHeader("Cache-Control", "no-cache", false); + response.setHeader("Content-Type", "application/json", false); + response.write(JSON.stringify({test: "data"})) +} diff --git a/testing/profiles/prefs_general.js b/testing/profiles/prefs_general.js index 1e30ae71e3a7..b267beb468ea 100644 --- a/testing/profiles/prefs_general.js +++ b/testing/profiles/prefs_general.js @@ -306,8 +306,8 @@ user_pref("browser.search.countryCode", "US"); user_pref("browser.search.geoSpecificDefaults", false); // Make sure self support doesn't hit the network. -user_pref("browser.selfsupport.url", "https://%(server)s/selfsupport-dummy/"); -user_pref("extensions.shield-recipe-client.api_url", "https://%(server)s/selfsupport-dummy/"); +user_pref("browser.selfsupport.url", "https://example.com/selfsupport-dummy/"); +user_pref("extensions.shield-recipe-client.api_url", "https://example.com/selfsupport-dummy/"); user_pref("media.eme.enabled", true);