summaryrefslogtreecommitdiffstats
path: root/toolkit/components/messaging-system/schemas/SpecialMessageActionSchemas/test/browser/browser_sma_set_prefs.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/messaging-system/schemas/SpecialMessageActionSchemas/test/browser/browser_sma_set_prefs.js')
-rw-r--r--toolkit/components/messaging-system/schemas/SpecialMessageActionSchemas/test/browser/browser_sma_set_prefs.js167
1 files changed, 167 insertions, 0 deletions
diff --git a/toolkit/components/messaging-system/schemas/SpecialMessageActionSchemas/test/browser/browser_sma_set_prefs.js b/toolkit/components/messaging-system/schemas/SpecialMessageActionSchemas/test/browser/browser_sma_set_prefs.js
new file mode 100644
index 0000000000..3d408192b6
--- /dev/null
+++ b/toolkit/components/messaging-system/schemas/SpecialMessageActionSchemas/test/browser/browser_sma_set_prefs.js
@@ -0,0 +1,167 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const HOMEPAGE_PREF = "browser.startup.homepage";
+const PRIVACY_SEGMENTATION_PREF = "browser.dataFeatureRecommendations.enabled";
+const MESSAGING_ACTION_PREF = "special-message-testpref";
+
+const PREFS_TO_CLEAR = [
+ HOMEPAGE_PREF,
+ PRIVACY_SEGMENTATION_PREF,
+ `messaging-system-action.${MESSAGING_ACTION_PREF}`,
+];
+
+add_setup(async function () {
+ registerCleanupFunction(async () => {
+ PREFS_TO_CLEAR.forEach(pref => Services.prefs.clearUserPref(pref));
+ });
+});
+
+add_task(async function test_set_privacy_segmentation_pref() {
+ const action = {
+ type: "SET_PREF",
+ data: {
+ pref: {
+ name: PRIVACY_SEGMENTATION_PREF,
+ value: true,
+ },
+ },
+ };
+
+ Assert.ok(
+ !Services.prefs.prefHasUserValue(PRIVACY_SEGMENTATION_PREF),
+ "Test setup ok"
+ );
+
+ await SMATestUtils.executeAndValidateAction(action);
+
+ Assert.ok(
+ Services.prefs.getBoolPref(PRIVACY_SEGMENTATION_PREF),
+ `${PRIVACY_SEGMENTATION_PREF} pref successfully updated`
+ );
+});
+
+add_task(async function test_clear_privacy_segmentation_pref() {
+ Services.prefs.setBoolPref(PRIVACY_SEGMENTATION_PREF, true);
+ Assert.ok(
+ Services.prefs.prefHasUserValue(PRIVACY_SEGMENTATION_PREF),
+ "Test setup ok"
+ );
+
+ const action = {
+ type: "SET_PREF",
+ data: {
+ pref: {
+ name: PRIVACY_SEGMENTATION_PREF,
+ },
+ },
+ };
+
+ await SMATestUtils.executeAndValidateAction(action);
+
+ Assert.ok(
+ !Services.prefs.prefHasUserValue(PRIVACY_SEGMENTATION_PREF),
+ `${PRIVACY_SEGMENTATION_PREF} pref successfully cleared`
+ );
+});
+
+add_task(async function test_set_homepage_pref() {
+ const action = {
+ type: "SET_PREF",
+ data: {
+ pref: {
+ name: HOMEPAGE_PREF,
+ value: "https://foo.example.com",
+ },
+ },
+ };
+
+ Assert.ok(!Services.prefs.prefHasUserValue(HOMEPAGE_PREF), "Test setup ok");
+
+ await SMATestUtils.executeAndValidateAction(action);
+
+ Assert.equal(
+ Services.prefs.getStringPref(HOMEPAGE_PREF),
+ "https://foo.example.com",
+ `${HOMEPAGE_PREF} pref successfully updated`
+ );
+});
+
+add_task(async function test_clear_homepage_pref() {
+ Services.prefs.setStringPref(HOMEPAGE_PREF, "https://www.example.com");
+ Assert.ok(Services.prefs.prefHasUserValue(HOMEPAGE_PREF), "Test setup ok");
+
+ const action = {
+ type: "SET_PREF",
+ data: {
+ pref: {
+ name: HOMEPAGE_PREF,
+ },
+ },
+ };
+
+ await SMATestUtils.executeAndValidateAction(action);
+
+ Assert.ok(
+ !Services.prefs.prefHasUserValue(HOMEPAGE_PREF),
+ `${HOMEPAGE_PREF} pref successfully updated`
+ );
+});
+
+// Set a pref not listed in "allowed prefs"
+add_task(async function test_set_messaging_system_pref() {
+ const action = {
+ type: "SET_PREF",
+ data: {
+ pref: {
+ name: MESSAGING_ACTION_PREF,
+ value: true,
+ },
+ },
+ };
+
+ await SMATestUtils.executeAndValidateAction(action);
+
+ Assert.equal(
+ Services.prefs.getBoolPref(
+ `messaging-system-action.${MESSAGING_ACTION_PREF}`
+ ),
+ true,
+ `messaging-system-action.${MESSAGING_ACTION_PREF} pref successfully updated to correct value`
+ );
+});
+
+// Clear a pref not listed in "allowed prefs" that was initially set by
+// the SET_PREF special messaging action
+add_task(async function test_clear_messaging_system_pref() {
+ Services.prefs.setBoolPref(
+ `messaging-system-action.${MESSAGING_ACTION_PREF}`,
+ true
+ );
+ Assert.ok(
+ Services.prefs.prefHasUserValue(
+ `messaging-system-action.${MESSAGING_ACTION_PREF}`
+ ),
+ "Test setup ok"
+ );
+
+ const action = {
+ type: "SET_PREF",
+ data: {
+ pref: {
+ name: MESSAGING_ACTION_PREF,
+ },
+ },
+ };
+
+ await SMATestUtils.executeAndValidateAction(action);
+
+ Assert.ok(
+ !Services.prefs.prefHasUserValue(
+ `messaging-system-action.${MESSAGING_ACTION_PREF}`
+ ),
+ `messaging-system-action.${MESSAGING_ACTION_PREF} pref successfully cleared`
+ );
+});