tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_remoteExperiments.js (1218B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 const { CFRMessageProvider } = ChromeUtils.importESModule(
      5  "resource:///modules/asrouter/CFRMessageProvider.sys.mjs"
      6 );
      7 
      8 add_task(async function test_multiMessageTreatment() {
      9  const { experimentValidator } = await makeValidators();
     10  // Use the entire list of messages as if it was a single treatment branch's
     11  // feature value.
     12  let messages = await CFRMessageProvider.getMessages();
     13  let featureValue = { template: "multi", messages };
     14  assertValidates(
     15    experimentValidator,
     16    featureValue,
     17    `Multi-message treatment validates as MessagingExperiment`
     18  );
     19  for (const message of messages) {
     20    assertValidates(
     21      experimentValidator,
     22      message,
     23      `Message ${message.id} validates as MessagingExperiment`
     24    );
     25  }
     26 
     27  // Add an invalid message to the list and make sure it fails validation.
     28  messages.push({
     29    id: "INVALID_MESSAGE",
     30    template: "cfr_doorhanger",
     31  });
     32  const result = experimentValidator.validate(featureValue);
     33  Assert.ok(
     34    !(result.valid && result.errors.length === 0),
     35    "Multi-message treatment with invalid message fails validation"
     36  );
     37 });