Commit 118c11c2 authored by Andrei Oprea's avatar Andrei Oprea
Browse files

Bug 1708652 - Add checks to remote defaults helper to ensure proper init r=k88hudson

parent e3c10d26
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ http://creativecommons.org/publicdomain/zero/1.0/ */
const { ExperimentFakes } = ChromeUtils.import(
  "resource://testing-common/NimbusTestUtils.jsm"
);
const { NimbusFeatures, ExperimentFeature } = ChromeUtils.import(
const { NimbusFeatures, ExperimentFeature, ExperimentAPI } = ChromeUtils.import(
  "resource://nimbus/ExperimentAPI.jsm"
);

@@ -294,6 +294,7 @@ add_task(async function not_major_upgrade() {
});

add_task(async function remote_disabled() {
  await ExperimentAPI.ready();
  await ExperimentFakes.remoteDefaultsHelper({
    feature: NimbusFeatures.upgradeDialog,
    configuration: { enabled: false, variables: {} },
+3 −0
Original line number Diff line number Diff line
@@ -73,6 +73,9 @@ const ExperimentFakes = {
    store = ExperimentManager.store,
    configuration,
  }) {
    if (!store._isReady) {
      throw new Error("Store not ready, need to `await ExperimentAPI.ready()`");
    }
    store.updateRemoteConfigs(feature.featureId, configuration);

    return feature.ready();
+28 −0
Original line number Diff line number Diff line
@@ -434,3 +434,31 @@ add_task(async function test_prevent_double_exposure_isEnabled() {

  sandbox.restore();
});

add_task(async function test_set_remote_before_ready() {
  let sandbox = sinon.createSandbox();
  const manager = ExperimentFakes.manager();
  sandbox.stub(ExperimentAPI, "_store").get(() => manager.store);
  const feature = new ExperimentFeature("foo", FAKE_FEATURE_MANIFEST);

  Assert.throws(
    () =>
      ExperimentFakes.remoteDefaultsHelper({
        feature,
        store: manager.store,
        configuration: { variables: { test: true } },
      }),
    /Store not ready/,
    "Throws if used before init finishes"
  );

  await manager.onStartup();

  await ExperimentFakes.remoteDefaultsHelper({
    feature,
    store: manager.store,
    configuration: { variables: { test: true } },
  });

  Assert.ok(feature.getValue().test, "Successfully set");
});