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 });