2020-08-01 03:43:15 +02:00
|
|
|
"use strict";
|
|
|
|
|
2020-11-30 23:46:45 +01:00
|
|
|
const {strict: assert} = require("assert");
|
|
|
|
|
2023-02-22 23:04:10 +01:00
|
|
|
const {$t} = require("./lib/i18n");
|
|
|
|
const {mock_esm, zrequire} = require("./lib/namespace");
|
|
|
|
const {run_test} = require("./lib/test");
|
|
|
|
const blueslip = require("./lib/zblueslip");
|
|
|
|
const $ = require("./lib/zjquery");
|
|
|
|
const {page_params} = require("./lib/zpage_params");
|
2017-06-16 14:41:10 +02:00
|
|
|
|
2018-04-16 18:58:27 +02:00
|
|
|
const noop = () => {};
|
2017-06-16 14:41:10 +02:00
|
|
|
|
2023-02-22 23:04:10 +01:00
|
|
|
const realm_icon = mock_esm("../src/realm_icon");
|
2021-02-28 00:39:51 +01:00
|
|
|
|
2023-02-22 23:04:10 +01:00
|
|
|
const channel = mock_esm("../src/channel");
|
2021-02-28 01:03:46 +01:00
|
|
|
|
2023-02-22 23:04:10 +01:00
|
|
|
mock_esm("../src/csrf", {csrf_token: "token-stub"});
|
|
|
|
mock_esm("../src/list_widget", {
|
2021-03-07 13:57:14 +01:00
|
|
|
create: () => ({init: noop}),
|
|
|
|
});
|
2023-02-22 23:04:10 +01:00
|
|
|
mock_esm("../src/loading", {
|
2021-03-07 13:57:14 +01:00
|
|
|
make_indicator: noop,
|
|
|
|
destroy_indicator: noop,
|
|
|
|
});
|
2020-04-15 04:29:15 +02:00
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
const settings_config = zrequire("settings_config");
|
|
|
|
const settings_bots = zrequire("settings_bots");
|
2021-04-04 15:15:18 +02:00
|
|
|
const stream_settings_data = zrequire("stream_settings_data");
|
2021-02-24 22:31:50 +01:00
|
|
|
const settings_account = zrequire("settings_account");
|
2021-02-10 04:53:22 +01:00
|
|
|
const settings_org = zrequire("settings_org");
|
|
|
|
const dropdown_list_widget = zrequire("dropdown_list_widget");
|
2020-07-15 01:29:15 +02:00
|
|
|
|
2021-03-14 14:08:11 +01:00
|
|
|
function test(label, f) {
|
2022-07-10 01:06:33 +02:00
|
|
|
run_test(label, (helpers) => {
|
2021-06-04 19:27:45 +02:00
|
|
|
$("#realm-icon-upload-widget .upload-spinner-background").css = () => {};
|
2021-03-25 22:35:45 +01:00
|
|
|
page_params.is_admin = false;
|
|
|
|
page_params.realm_domains = [
|
|
|
|
{domain: "example.com", allow_subdomains: true},
|
|
|
|
{domain: "example.org", allow_subdomains: false},
|
|
|
|
];
|
|
|
|
page_params.realm_authentication_methods = {};
|
2021-03-14 14:08:11 +01:00
|
|
|
settings_org.reset();
|
2022-07-10 01:06:33 +02:00
|
|
|
f(helpers);
|
2021-03-14 14:08:11 +01:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
test("unloaded", () => {
|
2018-08-01 21:17:03 +02:00
|
|
|
// This test mostly gets us line coverage, and makes
|
|
|
|
// sure things don't explode before set_up is called.
|
|
|
|
|
|
|
|
settings_org.reset();
|
2021-07-20 14:51:48 +02:00
|
|
|
settings_org.populate_realm_domains_label();
|
2018-08-01 21:17:03 +02:00
|
|
|
settings_org.populate_auth_methods();
|
2017-06-16 14:41:10 +02:00
|
|
|
});
|
|
|
|
|
2018-04-16 18:58:27 +02:00
|
|
|
function createSaveButtons(subsection) {
|
2022-01-25 11:36:19 +01:00
|
|
|
const $stub_save_button_header = $(`#org-${CSS.escape(subsection)}`);
|
|
|
|
const $save_button_controls = $(".save-button-controls");
|
2022-12-07 12:16:37 +01:00
|
|
|
const $stub_save_button = $(".save-discard-widget-button.save-button");
|
2022-12-07 13:17:29 +01:00
|
|
|
const $stub_discard_button = $(".save-discard-widget-button.discard-button");
|
2022-01-25 11:36:19 +01:00
|
|
|
const $stub_save_button_text = $(".save-discard-widget-button-text");
|
|
|
|
$stub_save_button_header.set_find_results(
|
2020-07-15 00:34:28 +02:00
|
|
|
".subsection-failed-status p",
|
2022-03-17 00:31:13 +01:00
|
|
|
$("<failed-status-stub>"),
|
2018-04-30 15:27:35 +02:00
|
|
|
);
|
2022-01-25 11:36:19 +01:00
|
|
|
$stub_save_button.closest = () => $stub_save_button_header;
|
|
|
|
$save_button_controls.set_find_results(".save-button", $stub_save_button);
|
|
|
|
$stub_save_button.set_find_results(".save-discard-widget-button-text", $stub_save_button_text);
|
|
|
|
$stub_save_button_header.set_find_results(".save-button-controls", $save_button_controls);
|
|
|
|
$stub_save_button_header.set_find_results(
|
2021-06-03 18:15:17 +02:00
|
|
|
".subsection-changes-discard button",
|
2022-12-07 13:17:29 +01:00
|
|
|
$stub_discard_button,
|
2019-03-07 15:18:10 +01:00
|
|
|
);
|
2022-01-25 11:36:19 +01:00
|
|
|
$save_button_controls.set_find_results(".discard-button", $stub_discard_button);
|
2020-07-16 23:29:01 +02:00
|
|
|
const props = {};
|
2018-03-29 02:02:01 +02:00
|
|
|
props.hidden = false;
|
2022-01-25 11:36:19 +01:00
|
|
|
$save_button_controls.fadeIn = () => {
|
2018-05-07 03:30:13 +02:00
|
|
|
props.hidden = false;
|
2018-04-30 15:01:55 +02:00
|
|
|
};
|
2022-01-25 11:36:19 +01:00
|
|
|
$save_button_controls.fadeOut = () => {
|
2018-04-30 15:01:55 +02:00
|
|
|
props.hidden = true;
|
2018-03-29 02:02:01 +02:00
|
|
|
};
|
2022-09-15 13:22:47 +02:00
|
|
|
|
|
|
|
$save_button_controls.closest = () => $stub_save_button_header;
|
|
|
|
$stub_save_button_header.set_find_results(".time-limit-setting", []);
|
|
|
|
$stub_save_button_header.set_find_results(".subsection-changes-save button", $stub_save_button);
|
|
|
|
|
2018-03-29 02:02:01 +02:00
|
|
|
return {
|
2020-07-20 22:18:43 +02:00
|
|
|
props,
|
2022-01-25 11:36:19 +01:00
|
|
|
$save_button: $stub_save_button,
|
|
|
|
$discard_button: $stub_discard_button,
|
|
|
|
$save_button_header: $stub_save_button_header,
|
|
|
|
$save_button_controls,
|
|
|
|
$save_button_text: $stub_save_button_text,
|
2018-03-29 02:02:01 +02:00
|
|
|
};
|
|
|
|
}
|
2018-04-16 18:58:27 +02:00
|
|
|
|
2021-03-14 14:08:11 +01:00
|
|
|
function test_submit_settings_form(override, submit_form) {
|
2019-05-05 15:49:37 +02:00
|
|
|
Object.assign(page_params, {
|
2020-04-01 08:30:41 +02:00
|
|
|
realm_bot_creation_policy: settings_bots.bot_creation_policy_values.restricted.code,
|
2021-05-17 19:32:35 +02:00
|
|
|
realm_add_custom_emoji_policy: settings_config.common_policy_values.by_admins_only.code,
|
2019-05-05 15:49:37 +02:00
|
|
|
realm_waiting_period_threshold: 1,
|
|
|
|
realm_default_language: '"es"',
|
2021-04-28 20:39:24 +02:00
|
|
|
realm_invite_to_stream_policy: settings_config.common_policy_values.by_admins_only.code,
|
2021-03-27 05:48:37 +01:00
|
|
|
realm_create_private_stream_policy: settings_config.common_policy_values.by_members.code,
|
|
|
|
realm_create_public_stream_policy: settings_config.common_policy_values.by_members.code,
|
2021-05-23 21:40:20 +02:00
|
|
|
realm_invite_to_realm_policy: settings_config.common_policy_values.by_members.code,
|
2019-05-05 15:49:37 +02:00
|
|
|
});
|
|
|
|
|
2021-03-14 14:08:11 +01:00
|
|
|
override(global, "setTimeout", (func) => func());
|
2018-04-16 18:58:27 +02:00
|
|
|
const ev = {
|
2017-06-16 14:41:10 +02:00
|
|
|
preventDefault: noop,
|
|
|
|
stopPropagation: noop,
|
|
|
|
};
|
|
|
|
|
2018-04-16 18:58:27 +02:00
|
|
|
let patched;
|
|
|
|
let data;
|
|
|
|
let success_callback;
|
2021-03-14 14:08:11 +01:00
|
|
|
override(channel, "patch", (req) => {
|
2017-06-16 14:41:10 +02:00
|
|
|
patched = true;
|
2020-07-15 01:29:15 +02:00
|
|
|
assert.equal(req.url, "/json/realm");
|
2018-04-16 18:58:27 +02:00
|
|
|
data = req.data;
|
2017-06-16 14:41:10 +02:00
|
|
|
success_callback = req.success;
|
2021-03-14 14:08:11 +01:00
|
|
|
});
|
2017-06-16 14:41:10 +02:00
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
let subsection = "other-permissions";
|
2022-12-07 12:16:37 +01:00
|
|
|
ev.currentTarget = ".save-discard-widget-button.save-button";
|
2019-03-06 17:24:14 +01:00
|
|
|
let stubs = createSaveButtons(subsection);
|
2022-01-25 11:36:19 +01:00
|
|
|
let $save_button = stubs.$save_button;
|
2022-12-07 12:16:37 +01:00
|
|
|
let $save_button_header = stubs.$save_button_header;
|
|
|
|
$save_button_header.attr("id", `org-${subsection}`);
|
2020-01-23 07:01:34 +01:00
|
|
|
|
2019-05-07 19:06:05 +02:00
|
|
|
$("#id_realm_waiting_period_threshold").val(10);
|
2019-05-05 15:13:52 +02:00
|
|
|
|
2022-01-25 11:36:19 +01:00
|
|
|
const $invite_to_stream_policy_elem = $("#id_realm_invite_to_stream_policy");
|
|
|
|
$invite_to_stream_policy_elem.val("1");
|
|
|
|
$invite_to_stream_policy_elem.attr("id", "id_realm_invite_to_stream_policy");
|
|
|
|
$invite_to_stream_policy_elem.data = () => "number";
|
|
|
|
|
|
|
|
const $create_public_stream_policy_elem = $("#id_realm_create_public_stream_policy");
|
|
|
|
$create_public_stream_policy_elem.val("2");
|
|
|
|
$create_public_stream_policy_elem.attr("id", "id_realm_create_public_stream_policy");
|
|
|
|
$create_public_stream_policy_elem.data = () => "number";
|
|
|
|
|
|
|
|
const $create_private_stream_policy_elem = $("#id_realm_create_private_stream_policy");
|
|
|
|
$create_private_stream_policy_elem.val("2");
|
|
|
|
$create_private_stream_policy_elem.attr("id", "id_realm_create_private_stream_policy");
|
|
|
|
$create_private_stream_policy_elem.data = () => "number";
|
|
|
|
|
|
|
|
const $add_custom_emoji_policy_elem = $("#id_realm_add_custom_emoji_policy");
|
|
|
|
$add_custom_emoji_policy_elem.val("1");
|
|
|
|
$add_custom_emoji_policy_elem.attr("id", "id_realm_add_custom_emoji_policy");
|
|
|
|
$add_custom_emoji_policy_elem.data = () => "number";
|
|
|
|
|
|
|
|
const $bot_creation_policy_elem = $("#id_realm_bot_creation_policy");
|
|
|
|
$bot_creation_policy_elem.val("1");
|
|
|
|
$bot_creation_policy_elem.attr("id", "id_realm_bot_creation_policy");
|
|
|
|
$bot_creation_policy_elem.data = () => "number";
|
|
|
|
|
|
|
|
const $invite_to_realm_policy_elem = $("#id_realm_invite_to_realm_policy");
|
|
|
|
$invite_to_realm_policy_elem.val("2");
|
|
|
|
$invite_to_realm_policy_elem.attr("id", "id_realm_invite_to_realm_policy");
|
|
|
|
$invite_to_realm_policy_elem.data = () => "number";
|
|
|
|
|
|
|
|
let $subsection_elem = $(`#org-${CSS.escape(subsection)}`);
|
|
|
|
$subsection_elem.set_find_results(".prop-element", [
|
|
|
|
$bot_creation_policy_elem,
|
|
|
|
$add_custom_emoji_policy_elem,
|
|
|
|
$create_public_stream_policy_elem,
|
|
|
|
$create_private_stream_policy_elem,
|
2022-04-09 23:44:38 +02:00
|
|
|
$invite_to_realm_policy_elem,
|
2022-01-25 11:36:19 +01:00
|
|
|
$invite_to_stream_policy_elem,
|
2019-03-06 17:24:14 +01:00
|
|
|
]);
|
2018-03-14 23:45:42 +01:00
|
|
|
|
2018-06-16 13:21:59 +02:00
|
|
|
patched = false;
|
2017-06-16 14:41:10 +02:00
|
|
|
submit_form(ev);
|
2021-06-10 08:32:54 +02:00
|
|
|
assert.ok(patched);
|
2017-06-16 14:41:10 +02:00
|
|
|
|
2018-04-16 18:58:27 +02:00
|
|
|
let expected_value = {
|
2021-04-07 22:00:40 +02:00
|
|
|
bot_creation_policy: 1,
|
2022-04-09 23:44:38 +02:00
|
|
|
invite_to_realm_policy: 2,
|
2021-04-07 22:00:40 +02:00
|
|
|
invite_to_stream_policy: 1,
|
2021-05-04 19:02:24 +02:00
|
|
|
add_custom_emoji_policy: 1,
|
2021-03-27 05:48:37 +01:00
|
|
|
create_public_stream_policy: 2,
|
|
|
|
create_private_stream_policy: 2,
|
2017-06-16 14:41:10 +02:00
|
|
|
};
|
2018-04-16 18:58:27 +02:00
|
|
|
assert.deepEqual(data, expected_value);
|
2017-06-16 14:41:10 +02:00
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
subsection = "user-defaults";
|
2022-12-07 12:16:37 +01:00
|
|
|
ev.currentTarget = ".save-discard-widget-button.save-button";
|
2019-03-06 17:24:14 +01:00
|
|
|
stubs = createSaveButtons(subsection);
|
2022-01-25 11:36:19 +01:00
|
|
|
$save_button = stubs.$save_button;
|
2022-12-07 12:16:37 +01:00
|
|
|
$save_button_header = stubs.$save_button_header;
|
|
|
|
$save_button_header.attr("id", `org-${subsection}`);
|
2019-03-06 17:24:14 +01:00
|
|
|
|
2022-01-25 11:36:19 +01:00
|
|
|
const $realm_default_language_elem = $("#id_realm_default_language");
|
|
|
|
$realm_default_language_elem.val("en");
|
|
|
|
$realm_default_language_elem.attr("id", "id_realm_default_language");
|
|
|
|
$realm_default_language_elem.data = () => "string";
|
2017-06-16 14:41:10 +02:00
|
|
|
|
2022-01-25 11:36:19 +01:00
|
|
|
$subsection_elem = $(`#org-${CSS.escape(subsection)}`);
|
|
|
|
$subsection_elem.set_find_results(".prop-element", [$realm_default_language_elem]);
|
2018-04-16 18:58:27 +02:00
|
|
|
|
|
|
|
submit_form(ev);
|
2021-06-10 08:32:54 +02:00
|
|
|
assert.ok(patched);
|
2018-04-16 18:58:27 +02:00
|
|
|
|
|
|
|
expected_value = {
|
2021-04-07 22:00:40 +02:00
|
|
|
default_language: "en",
|
2017-06-16 14:41:10 +02:00
|
|
|
};
|
2018-04-16 18:58:27 +02:00
|
|
|
assert.deepEqual(data, expected_value);
|
|
|
|
|
|
|
|
// Testing only once for since callback is same for all cases
|
|
|
|
success_callback();
|
|
|
|
assert.equal(stubs.props.hidden, true);
|
2022-01-25 11:36:19 +01:00
|
|
|
assert.equal($save_button.attr("data-status"), "saved");
|
|
|
|
assert.equal(stubs.$save_button_text.text(), "translated: Saved");
|
2017-08-18 01:23:55 +02:00
|
|
|
}
|
|
|
|
|
2018-03-29 02:02:01 +02:00
|
|
|
function test_change_save_button_state() {
|
2022-12-07 12:16:37 +01:00
|
|
|
const {
|
|
|
|
$save_button_controls,
|
|
|
|
$save_button_text,
|
|
|
|
$save_button,
|
|
|
|
$save_button_header,
|
|
|
|
$discard_button,
|
|
|
|
props,
|
|
|
|
} = createSaveButtons("msg-editing");
|
|
|
|
$save_button_header.attr("id", "org-msg-editing");
|
2019-03-10 09:00:30 +01:00
|
|
|
|
|
|
|
{
|
2022-01-25 11:36:19 +01:00
|
|
|
settings_org.change_save_button_state($save_button_controls, "unsaved");
|
|
|
|
assert.equal($save_button_text.text(), "translated: Save changes");
|
2019-03-10 09:00:30 +01:00
|
|
|
assert.equal(props.hidden, false);
|
2022-01-25 11:36:19 +01:00
|
|
|
assert.equal($save_button.attr("data-status"), "unsaved");
|
|
|
|
assert.equal($discard_button.visible(), true);
|
2019-03-10 09:00:30 +01:00
|
|
|
}
|
|
|
|
{
|
2022-01-25 11:36:19 +01:00
|
|
|
settings_org.change_save_button_state($save_button_controls, "saved");
|
|
|
|
assert.equal($save_button_text.text(), "translated: Save changes");
|
2019-03-10 09:00:30 +01:00
|
|
|
assert.equal(props.hidden, true);
|
2022-01-25 11:36:19 +01:00
|
|
|
assert.equal($save_button.attr("data-status"), "");
|
2019-03-10 09:00:30 +01:00
|
|
|
}
|
|
|
|
{
|
2022-01-25 11:36:19 +01:00
|
|
|
settings_org.change_save_button_state($save_button_controls, "saving");
|
|
|
|
assert.equal($save_button_text.text(), "translated: Saving");
|
|
|
|
assert.equal($save_button.attr("data-status"), "saving");
|
|
|
|
assert.equal($save_button.hasClass("saving"), true);
|
|
|
|
assert.equal($discard_button.visible(), false);
|
2019-03-10 09:00:30 +01:00
|
|
|
}
|
|
|
|
{
|
2022-01-25 11:36:19 +01:00
|
|
|
settings_org.change_save_button_state($save_button_controls, "discarded");
|
2019-03-10 09:00:30 +01:00
|
|
|
assert.equal(props.hidden, true);
|
|
|
|
}
|
|
|
|
{
|
2022-01-25 11:36:19 +01:00
|
|
|
settings_org.change_save_button_state($save_button_controls, "succeeded");
|
2019-03-10 09:00:30 +01:00
|
|
|
assert.equal(props.hidden, true);
|
2022-01-25 11:36:19 +01:00
|
|
|
assert.equal($save_button.attr("data-status"), "saved");
|
|
|
|
assert.equal($save_button_text.text(), "translated: Saved");
|
2019-03-10 09:00:30 +01:00
|
|
|
}
|
|
|
|
{
|
2022-01-25 11:36:19 +01:00
|
|
|
settings_org.change_save_button_state($save_button_controls, "failed");
|
2019-03-10 09:00:30 +01:00
|
|
|
assert.equal(props.hidden, false);
|
2022-01-25 11:36:19 +01:00
|
|
|
assert.equal($save_button.attr("data-status"), "failed");
|
|
|
|
assert.equal($save_button_text.text(), "translated: Save changes");
|
2019-03-10 09:00:30 +01:00
|
|
|
}
|
2018-03-29 02:02:01 +02:00
|
|
|
}
|
|
|
|
|
2021-03-14 14:08:11 +01:00
|
|
|
function test_upload_realm_icon(override, upload_realm_logo_or_icon) {
|
2020-07-15 00:34:28 +02:00
|
|
|
const file_input = [{files: ["image1.png", "image2.png"]}];
|
2017-06-16 14:41:10 +02:00
|
|
|
|
2019-11-02 00:06:25 +01:00
|
|
|
let posted;
|
2021-03-14 14:08:11 +01:00
|
|
|
override(channel, "post", (req) => {
|
2017-06-16 14:41:10 +02:00
|
|
|
posted = true;
|
2020-07-15 01:29:15 +02:00
|
|
|
assert.equal(req.url, "/json/realm/icon");
|
2022-08-18 03:01:28 +02:00
|
|
|
assert.equal(req.data.get("csrfmiddlewaretoken"), "token-stub");
|
|
|
|
assert.equal(req.data.get("file-0"), "image1.png");
|
|
|
|
assert.equal(req.data.get("file-1"), "image2.png");
|
2021-03-14 14:08:11 +01:00
|
|
|
});
|
2017-06-16 14:41:10 +02:00
|
|
|
|
2020-06-11 01:04:12 +02:00
|
|
|
upload_realm_logo_or_icon(file_input, null, true);
|
2021-06-10 08:32:54 +02:00
|
|
|
assert.ok(posted);
|
2017-06-16 14:41:10 +02:00
|
|
|
}
|
|
|
|
|
2018-03-14 23:50:17 +01:00
|
|
|
function test_extract_property_name() {
|
2020-07-15 01:29:15 +02:00
|
|
|
$("#id_realm_allow_message_editing").attr("id", "id_realm_allow_message_editing");
|
2018-03-14 23:50:17 +01:00
|
|
|
assert.equal(
|
2020-07-15 01:29:15 +02:00
|
|
|
settings_org.extract_property_name($("#id_realm_allow_message_editing")),
|
|
|
|
"realm_allow_message_editing",
|
2018-03-14 23:50:17 +01:00
|
|
|
);
|
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
$("#id_realm_message_content_edit_limit_minutes_label").attr(
|
2020-07-15 00:34:28 +02:00
|
|
|
"id",
|
|
|
|
"id_realm_message_content_edit_limit_minutes_label",
|
|
|
|
);
|
2018-03-14 23:50:17 +01:00
|
|
|
assert.equal(
|
2020-07-15 01:29:15 +02:00
|
|
|
settings_org.extract_property_name($("#id_realm_message_content_edit_limit_minutes_label")),
|
|
|
|
"realm_message_content_edit_limit_minutes_label",
|
2018-03-14 23:50:17 +01:00
|
|
|
);
|
|
|
|
|
2020-07-15 00:34:28 +02:00
|
|
|
$("#id-realm-allow-message-deleting").attr("id", "id-realm-allow-message-deleting");
|
2018-03-14 23:50:17 +01:00
|
|
|
assert.equal(
|
2020-07-15 01:29:15 +02:00
|
|
|
settings_org.extract_property_name($("#id-realm-allow-message-deleting")),
|
|
|
|
"realm_allow_message_deleting",
|
2018-03-14 23:50:17 +01:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2018-04-16 18:58:27 +02:00
|
|
|
function test_sync_realm_settings() {
|
2018-06-16 13:21:59 +02:00
|
|
|
{
|
2018-06-16 17:25:27 +02:00
|
|
|
/* Test invalid settings property sync */
|
2022-01-25 11:36:19 +01:00
|
|
|
const $property_elem = $("#id_realm_invalid_settings_property");
|
|
|
|
$property_elem.attr("id", "id_realm_invalid_settings_property");
|
|
|
|
$property_elem.length = 1;
|
2018-06-16 17:25:27 +02:00
|
|
|
|
2023-04-24 15:57:45 +02:00
|
|
|
blueslip.expect("error", "Element refers to unknown property");
|
2020-07-15 01:29:15 +02:00
|
|
|
settings_org.sync_realm_settings("invalid_settings_property");
|
2018-06-16 17:25:27 +02:00
|
|
|
}
|
|
|
|
|
2021-05-24 09:12:53 +02:00
|
|
|
function test_common_policy(property_name) {
|
2022-01-25 11:36:19 +01:00
|
|
|
const $property_elem = $(`#id_realm_${CSS.escape(property_name)}`);
|
|
|
|
$property_elem.length = 1;
|
|
|
|
$property_elem.attr("id", `id_realm_${CSS.escape(property_name)}`);
|
2021-05-24 09:12:53 +02:00
|
|
|
|
|
|
|
/* Each policy is initialized to 'by_members' and then all the values are tested
|
|
|
|
in the following order - by_admins_only, by_moderators_only, by_full_members,
|
|
|
|
by_members. */
|
|
|
|
|
|
|
|
page_params[`realm_${property_name}`] =
|
|
|
|
settings_config.common_policy_values.by_members.code;
|
2022-01-25 11:36:19 +01:00
|
|
|
$property_elem.val(settings_config.common_policy_values.by_members.code);
|
2021-05-24 09:12:53 +02:00
|
|
|
|
2023-03-02 01:58:25 +01:00
|
|
|
for (const policy_value of Object.values(settings_config.common_policy_values)) {
|
2021-05-24 09:12:53 +02:00
|
|
|
page_params[`realm_${property_name}`] = policy_value.code;
|
|
|
|
settings_org.sync_realm_settings(property_name);
|
2022-01-25 11:36:19 +01:00
|
|
|
assert.equal($property_elem.val(), policy_value.code);
|
2021-05-24 09:12:53 +02:00
|
|
|
}
|
2019-05-07 19:06:05 +02:00
|
|
|
}
|
|
|
|
|
2021-03-27 05:48:37 +01:00
|
|
|
test_common_policy("create_private_stream_policy");
|
|
|
|
test_common_policy("create_public_stream_policy");
|
2021-05-24 09:12:53 +02:00
|
|
|
test_common_policy("invite_to_stream_policy");
|
2021-05-23 21:40:20 +02:00
|
|
|
test_common_policy("invite_to_realm_policy");
|
2021-04-21 21:43:27 +02:00
|
|
|
|
2018-06-16 17:25:27 +02:00
|
|
|
{
|
|
|
|
/* Test message content edit limit minutes sync */
|
2022-01-25 11:36:19 +01:00
|
|
|
const $property_elem = $("#id_realm_message_content_edit_limit_minutes");
|
2022-09-02 13:07:11 +02:00
|
|
|
const $property_dropdown_elem = $("#id_realm_message_content_edit_limit_seconds");
|
2022-01-25 11:36:19 +01:00
|
|
|
$property_elem.length = 1;
|
2022-09-02 13:07:11 +02:00
|
|
|
$property_dropdown_elem.length = 1;
|
2022-01-25 11:36:19 +01:00
|
|
|
$property_elem.attr("id", "id_realm_message_content_edit_limit_minutes");
|
2022-09-02 13:07:11 +02:00
|
|
|
$property_dropdown_elem.attr("id", "id_realm_message_content_edit_limit_seconds");
|
2018-06-16 17:25:27 +02:00
|
|
|
|
2021-03-27 05:48:37 +01:00
|
|
|
page_params.realm_create_public_stream_policy = 1;
|
2018-06-16 17:25:27 +02:00
|
|
|
page_params.realm_message_content_edit_limit_seconds = 120;
|
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
settings_org.sync_realm_settings("message_content_edit_limit_seconds");
|
2020-02-12 11:49:02 +01:00
|
|
|
assert.equal($("#id_realm_message_content_edit_limit_minutes").val(), "2");
|
2018-06-16 17:25:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
/* Test message content edit limit dropdown value sync */
|
|
|
|
page_params.realm_message_content_edit_limit_seconds = 120;
|
2022-04-12 09:56:58 +02:00
|
|
|
settings_org.sync_realm_settings("message_content_edit_limit_seconds");
|
2022-09-01 14:19:14 +02:00
|
|
|
assert.equal($("#id_realm_message_content_edit_limit_seconds").val(), "120");
|
2018-06-16 17:25:27 +02:00
|
|
|
|
|
|
|
page_params.realm_message_content_edit_limit_seconds = 130;
|
2022-04-12 09:56:58 +02:00
|
|
|
settings_org.sync_realm_settings("message_content_edit_limit_seconds");
|
2022-08-19 16:14:15 +02:00
|
|
|
assert.equal($("#id_realm_message_content_edit_limit_seconds").val(), "custom_period");
|
2018-06-16 17:25:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
/* Test organization joining restrictions settings sync */
|
2022-01-25 11:36:19 +01:00
|
|
|
const $property_elem = $("#id_realm_org_join_restrictions");
|
|
|
|
$property_elem.length = 1;
|
|
|
|
$property_elem.attr("id", "id_realm_org_join_restrictions");
|
2018-06-16 17:25:27 +02:00
|
|
|
|
2018-07-27 23:26:29 +02:00
|
|
|
page_params.realm_emails_restricted_to_domains = true;
|
2018-06-16 17:25:27 +02:00
|
|
|
page_params.realm_disallow_disposable_email_addresses = false;
|
2020-07-15 01:29:15 +02:00
|
|
|
settings_org.sync_realm_settings("emails_restricted_to_domains");
|
2018-06-16 17:25:27 +02:00
|
|
|
assert.equal($("#id_realm_org_join_restrictions").val(), "only_selected_domain");
|
|
|
|
|
2018-07-27 23:26:29 +02:00
|
|
|
page_params.realm_emails_restricted_to_domains = false;
|
2018-06-16 17:25:27 +02:00
|
|
|
|
|
|
|
page_params.realm_disallow_disposable_email_addresses = true;
|
2020-07-15 01:29:15 +02:00
|
|
|
settings_org.sync_realm_settings("emails_restricted_to_domains");
|
2018-06-16 17:25:27 +02:00
|
|
|
assert.equal($("#id_realm_org_join_restrictions").val(), "no_disposable_email");
|
|
|
|
|
|
|
|
page_params.realm_disallow_disposable_email_addresses = false;
|
2020-07-15 01:29:15 +02:00
|
|
|
settings_org.sync_realm_settings("emails_restricted_to_domains");
|
2018-06-16 17:25:27 +02:00
|
|
|
assert.equal($("#id_realm_org_join_restrictions").val(), "no_restriction");
|
|
|
|
}
|
2018-04-16 18:58:27 +02:00
|
|
|
}
|
|
|
|
|
2018-04-28 15:35:14 +02:00
|
|
|
function test_parse_time_limit() {
|
2022-01-25 11:36:19 +01:00
|
|
|
const $elem = $("#id_realm_message_content_edit_limit_minutes");
|
2018-04-28 15:35:14 +02:00
|
|
|
const test_function = (value, expected_value = value) => {
|
2022-01-25 11:36:19 +01:00
|
|
|
$elem.val(value);
|
|
|
|
page_params.realm_message_content_edit_limit_seconds = settings_org.parse_time_limit($elem);
|
2020-07-15 00:34:28 +02:00
|
|
|
assert.equal(
|
|
|
|
settings_org.get_realm_time_limits_in_minutes(
|
|
|
|
"realm_message_content_edit_limit_seconds",
|
|
|
|
),
|
2020-07-28 17:00:59 +02:00
|
|
|
expected_value,
|
2020-07-15 00:34:28 +02:00
|
|
|
);
|
2018-04-28 15:35:14 +02:00
|
|
|
};
|
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
test_function("0.01", "0");
|
|
|
|
test_function("0.1");
|
|
|
|
test_function("0.122", "0.1");
|
|
|
|
test_function("0.155", "0.2");
|
|
|
|
test_function("0.150", "0.1");
|
|
|
|
test_function("0.5");
|
|
|
|
test_function("1");
|
|
|
|
test_function("1.1");
|
|
|
|
test_function("10.5");
|
|
|
|
test_function("50.3");
|
|
|
|
test_function("100");
|
|
|
|
test_function("100.1");
|
|
|
|
test_function("127.79", "127.8");
|
|
|
|
test_function("201.1");
|
|
|
|
test_function("501.15", "501.1");
|
|
|
|
test_function("501.34", "501.3");
|
2018-04-28 15:35:14 +02:00
|
|
|
}
|
|
|
|
|
2018-06-16 17:25:27 +02:00
|
|
|
function test_discard_changes_button(discard_changes) {
|
|
|
|
const ev = {
|
|
|
|
preventDefault: noop,
|
|
|
|
stopPropagation: noop,
|
2022-12-07 13:17:29 +01:00
|
|
|
target: ".save-discard-widget-button.discard-button",
|
2018-06-16 17:25:27 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
page_params.realm_allow_edit_history = true;
|
2021-05-26 12:21:37 +02:00
|
|
|
page_params.realm_edit_topic_policy =
|
|
|
|
settings_config.common_message_policy_values.by_everyone.code;
|
2018-06-16 17:25:27 +02:00
|
|
|
page_params.realm_allow_message_editing = true;
|
|
|
|
page_params.realm_message_content_edit_limit_seconds = 3600;
|
2021-06-08 13:45:14 +02:00
|
|
|
page_params.realm_delete_own_message_policy =
|
2021-06-23 12:53:38 +02:00
|
|
|
settings_config.common_message_policy_values.by_everyone.code;
|
2018-06-16 17:25:27 +02:00
|
|
|
page_params.realm_message_content_delete_limit_seconds = 120;
|
|
|
|
|
2022-01-25 11:36:19 +01:00
|
|
|
const $allow_edit_history = $("#id_realm_allow_edit_history").prop("checked", false);
|
|
|
|
const $edit_topic_policy = $("#id_realm_edit_topic_policy").val(
|
2021-05-26 12:21:37 +02:00
|
|
|
settings_config.common_message_policy_values.by_admins_only.code,
|
2020-07-15 00:34:28 +02:00
|
|
|
);
|
2022-08-19 16:14:15 +02:00
|
|
|
const $msg_edit_limit_setting = $("#id_realm_message_content_edit_limit_seconds").val(
|
|
|
|
"custom_period",
|
|
|
|
);
|
2022-01-25 11:36:19 +01:00
|
|
|
const $message_content_edit_limit_minutes = $(
|
2020-07-15 00:34:28 +02:00
|
|
|
"#id_realm_message_content_edit_limit_minutes",
|
|
|
|
).val(130);
|
2022-08-19 16:47:26 +02:00
|
|
|
const $msg_delete_limit_setting = $("#id_realm_message_content_delete_limit_seconds").val(
|
|
|
|
"custom_period",
|
|
|
|
);
|
2022-01-25 11:36:19 +01:00
|
|
|
const $message_content_delete_limit_minutes = $(
|
2020-07-15 00:34:28 +02:00
|
|
|
"#id_realm_message_content_delete_limit_minutes",
|
|
|
|
).val(130);
|
2020-07-15 01:29:15 +02:00
|
|
|
|
2022-01-25 11:36:19 +01:00
|
|
|
$allow_edit_history.attr("id", "id_realm_allow_edit_history");
|
2022-08-19 16:14:15 +02:00
|
|
|
$msg_edit_limit_setting.attr("id", "id_realm_message_content_edit_limit_seconds");
|
2022-08-19 16:47:26 +02:00
|
|
|
$msg_delete_limit_setting.attr("id", "id_realm_message_content_delete_limit_seconds");
|
2022-01-25 11:36:19 +01:00
|
|
|
$edit_topic_policy.attr("id", "id_realm_edit_topic_policy");
|
|
|
|
$message_content_edit_limit_minutes.attr("id", "id_realm_message_content_edit_limit_minutes");
|
|
|
|
$message_content_delete_limit_minutes.attr(
|
2020-07-15 00:34:28 +02:00
|
|
|
"id",
|
|
|
|
"id_realm_message_content_delete_limit_minutes",
|
|
|
|
);
|
2020-07-15 01:29:15 +02:00
|
|
|
|
2022-11-03 13:18:42 +01:00
|
|
|
const $discard_button_parent = $(".settings-subsection-parent");
|
2022-01-25 11:36:19 +01:00
|
|
|
$discard_button_parent.find = () => [
|
|
|
|
$allow_edit_history,
|
|
|
|
$msg_edit_limit_setting,
|
|
|
|
$msg_delete_limit_setting,
|
|
|
|
$edit_topic_policy,
|
2018-06-16 17:25:27 +02:00
|
|
|
];
|
|
|
|
|
2022-07-10 01:06:33 +02:00
|
|
|
const {$discard_button, props} = createSaveButtons("msg-editing");
|
|
|
|
$discard_button.closest = (selector) => $(selector);
|
2018-06-16 17:25:27 +02:00
|
|
|
|
|
|
|
discard_changes(ev);
|
|
|
|
|
2022-01-25 11:36:19 +01:00
|
|
|
assert.equal($allow_edit_history.prop("checked"), true);
|
2021-05-26 12:21:37 +02:00
|
|
|
assert.equal(
|
2022-01-25 11:36:19 +01:00
|
|
|
$edit_topic_policy.val(),
|
2021-05-26 12:21:37 +02:00
|
|
|
settings_config.common_message_policy_values.by_everyone.code,
|
|
|
|
);
|
2022-09-01 14:19:14 +02:00
|
|
|
assert.equal($msg_edit_limit_setting.val(), "3600");
|
2022-01-25 11:36:19 +01:00
|
|
|
assert.equal($message_content_edit_limit_minutes.val(), "60");
|
2022-09-01 14:19:14 +02:00
|
|
|
assert.equal($msg_delete_limit_setting.val(), "120");
|
2022-01-25 11:36:19 +01:00
|
|
|
assert.equal($message_content_delete_limit_minutes.val(), "2");
|
2022-07-10 01:06:33 +02:00
|
|
|
assert.ok(props.hidden);
|
2018-06-16 17:25:27 +02:00
|
|
|
}
|
|
|
|
|
2021-07-20 14:51:48 +02:00
|
|
|
test("set_up", ({override, override_rewire}) => {
|
2019-05-09 09:54:38 +02:00
|
|
|
page_params.realm_available_video_chat_providers = {
|
|
|
|
jitsi_meet: {
|
|
|
|
id: 1,
|
|
|
|
name: "Jitsi Meet",
|
|
|
|
},
|
|
|
|
zoom: {
|
|
|
|
id: 3,
|
|
|
|
name: "Zoom",
|
|
|
|
},
|
2020-04-27 22:41:31 +02:00
|
|
|
big_blue_button: {
|
|
|
|
id: 4,
|
2021-07-06 00:23:51 +02:00
|
|
|
name: "BigBlueButton",
|
2020-04-27 22:41:31 +02:00
|
|
|
},
|
2019-05-09 09:54:38 +02:00
|
|
|
};
|
2017-06-16 14:41:10 +02:00
|
|
|
|
2020-06-11 01:04:12 +02:00
|
|
|
let upload_realm_logo_or_icon;
|
2021-02-23 14:37:26 +01:00
|
|
|
realm_icon.build_realm_icon_widget = (f) => {
|
2020-06-11 01:04:12 +02:00
|
|
|
upload_realm_logo_or_icon = f;
|
2017-06-16 14:41:10 +02:00
|
|
|
};
|
|
|
|
|
2022-01-08 10:27:06 +01:00
|
|
|
override_rewire(dropdown_list_widget, "DropdownListWidget", () => ({
|
2022-04-28 00:12:57 +02:00
|
|
|
setup: noop,
|
2020-07-02 01:41:40 +02:00
|
|
|
render: noop,
|
|
|
|
update: noop,
|
2021-02-28 21:33:50 +01:00
|
|
|
}));
|
2020-07-15 00:34:28 +02:00
|
|
|
$("#id_realm_message_content_edit_limit_minutes").set_parent(
|
2022-09-08 12:19:16 +02:00
|
|
|
$.create("<stub edit limit custom input parent>"),
|
2020-07-15 00:34:28 +02:00
|
|
|
);
|
2022-12-22 19:14:23 +01:00
|
|
|
$("#id_realm_move_messages_within_stream_limit_minutes").set_parent(
|
|
|
|
$.create("<stub move within stream custom input parent>"),
|
|
|
|
);
|
2023-01-30 12:15:36 +01:00
|
|
|
$("#id_realm_move_messages_between_streams_limit_minutes").set_parent(
|
|
|
|
$.create("<stub move between streams custom input parent>"),
|
|
|
|
);
|
2020-07-15 00:34:28 +02:00
|
|
|
$("#id_realm_message_content_delete_limit_minutes").set_parent(
|
2022-09-08 12:19:16 +02:00
|
|
|
$.create("<stub delete limit custom input parent>"),
|
2020-07-15 00:34:28 +02:00
|
|
|
);
|
2022-09-08 12:19:16 +02:00
|
|
|
const $stub_message_content_edit_limit_parent = $.create(
|
|
|
|
"<stub message_content_edit_limit parent",
|
|
|
|
);
|
|
|
|
$("#id_realm_message_content_edit_limit_seconds").set_parent(
|
|
|
|
$stub_message_content_edit_limit_parent,
|
|
|
|
);
|
|
|
|
|
2022-12-22 19:14:23 +01:00
|
|
|
const $stub_move_within_stream_limit_parent = $.create("<stub move_within_stream_limit parent");
|
|
|
|
$("#id_realm_move_messages_within_stream_limit_seconds").set_parent(
|
|
|
|
$stub_move_within_stream_limit_parent,
|
|
|
|
);
|
|
|
|
|
2023-01-30 12:15:36 +01:00
|
|
|
const $stub_move_between_streams_limit_parent = $.create(
|
|
|
|
"<stub move_between_streams_limit parent",
|
|
|
|
);
|
|
|
|
$("#id_realm_move_messages_between_streams_limit_seconds").set_parent(
|
|
|
|
$stub_move_between_streams_limit_parent,
|
|
|
|
);
|
|
|
|
|
2022-09-08 12:19:16 +02:00
|
|
|
const $stub_message_content_delete_limit_parent = $.create(
|
|
|
|
"<stub message_content_delete_limit parent",
|
|
|
|
);
|
|
|
|
$("#id_realm_message_content_delete_limit_seconds").set_parent(
|
|
|
|
$stub_message_content_delete_limit_parent,
|
|
|
|
);
|
|
|
|
|
|
|
|
const $custom_edit_limit_input = $("#id_realm_message_content_edit_limit_minutes");
|
|
|
|
$stub_message_content_edit_limit_parent.set_find_results(
|
2023-01-16 10:46:45 +01:00
|
|
|
".time-limit-custom-input",
|
2022-09-08 12:19:16 +02:00
|
|
|
$custom_edit_limit_input,
|
|
|
|
);
|
|
|
|
$custom_edit_limit_input.attr("id", "id_realm_message_content_edit_limit_minutes");
|
|
|
|
|
2022-12-22 19:14:23 +01:00
|
|
|
const $custom_move_within_stream_limit_input = $(
|
|
|
|
"#id_realm_move_messages_within_stream_limit_minutes",
|
|
|
|
);
|
|
|
|
$stub_move_within_stream_limit_parent.set_find_results(
|
|
|
|
".time-limit-custom-input",
|
|
|
|
$custom_move_within_stream_limit_input,
|
|
|
|
);
|
|
|
|
$custom_move_within_stream_limit_input.attr(
|
|
|
|
"id",
|
|
|
|
"id_realm_move_messages_within_stream_limit_minutes",
|
|
|
|
);
|
|
|
|
|
2023-01-30 12:15:36 +01:00
|
|
|
const $custom_move_between_streams_limit_input = $(
|
|
|
|
"#id_realm_move_messages_between_streams_limit_minutes",
|
|
|
|
);
|
|
|
|
$stub_move_between_streams_limit_parent.set_find_results(
|
|
|
|
".time-limit-custom-input",
|
|
|
|
$custom_move_between_streams_limit_input,
|
|
|
|
);
|
|
|
|
$custom_move_between_streams_limit_input.attr(
|
|
|
|
"id",
|
|
|
|
"id_realm_move_messages_between_streams_limit_minutes",
|
|
|
|
);
|
|
|
|
|
2022-09-08 12:19:16 +02:00
|
|
|
const $custom_delete_limit_input = $("#id_realm_message_content_delete_limit_minutes");
|
|
|
|
$stub_message_content_delete_limit_parent.set_find_results(
|
2023-01-16 10:46:45 +01:00
|
|
|
".time-limit-custom-input",
|
2022-09-08 12:19:16 +02:00
|
|
|
$custom_delete_limit_input,
|
|
|
|
);
|
|
|
|
$custom_delete_limit_input.attr("id", "id_realm_message_content_delete_limit_minutes");
|
|
|
|
|
2022-11-04 11:11:33 +01:00
|
|
|
const $stub_realm_message_retention_parent = $.create(
|
|
|
|
"<stub message retention setting parent>",
|
2022-11-04 11:11:33 +01:00
|
|
|
);
|
2022-11-04 11:11:33 +01:00
|
|
|
const $realm_message_retention_custom_input = $("#id_realm_message_retention_custom_input");
|
|
|
|
$("#id_realm_message_retention_days").set_parent($stub_realm_message_retention_parent);
|
|
|
|
$realm_message_retention_custom_input.set_parent($stub_realm_message_retention_parent);
|
|
|
|
$stub_realm_message_retention_parent.set_find_results(
|
|
|
|
".message-retention-setting-custom-input",
|
|
|
|
$realm_message_retention_custom_input,
|
|
|
|
);
|
|
|
|
$realm_message_retention_custom_input.attr("id", "id_realm_message_retention_custom_input");
|
|
|
|
|
2022-12-12 18:21:08 +01:00
|
|
|
const $stub_realm_waiting_period_threshold_parent = $.create(
|
|
|
|
"<stub waiting period threshold setting parent>",
|
|
|
|
);
|
|
|
|
const $realm_waiting_period_threshold_custom_input = $(
|
|
|
|
"#id_realm_waiting_period_threshold_custom_input",
|
|
|
|
);
|
|
|
|
$("#id_realm_waiting_period_threshold").set_parent($stub_realm_waiting_period_threshold_parent);
|
|
|
|
$realm_waiting_period_threshold_custom_input.set_parent(
|
|
|
|
$stub_realm_waiting_period_threshold_parent,
|
|
|
|
);
|
|
|
|
$stub_realm_waiting_period_threshold_parent.set_find_results(
|
2023-01-16 10:46:45 +01:00
|
|
|
".time-limit-custom-input",
|
2022-12-12 18:21:08 +01:00
|
|
|
$realm_waiting_period_threshold_custom_input,
|
|
|
|
);
|
|
|
|
$realm_waiting_period_threshold_custom_input.attr(
|
|
|
|
"id",
|
|
|
|
"id_realm_waiting_period_threshold_custom_input",
|
|
|
|
);
|
|
|
|
|
2020-07-15 00:34:28 +02:00
|
|
|
$("#message_content_in_email_notifications_label").set_parent(
|
|
|
|
$.create("<stub in-content setting checkbox>"),
|
|
|
|
);
|
2020-07-15 01:29:15 +02:00
|
|
|
$("#enable_digest_emails_label").set_parent($.create("<stub digest setting checkbox>"));
|
|
|
|
$("#id_realm_digest_weekday").set_parent($.create("<stub digest weekday setting dropdown>"));
|
|
|
|
$("#allowed_domains_label").set_parent($.create("<stub-allowed-domain-label-parent>"));
|
2022-01-25 11:36:19 +01:00
|
|
|
const $waiting_period_parent_elem = $.create("waiting-period-parent-stub");
|
|
|
|
$("#id_realm_waiting_period_threshold").set_parent($waiting_period_parent_elem);
|
2021-11-19 10:29:39 +01:00
|
|
|
$("#id_realm_create_web_public_stream_policy").set_parent(
|
|
|
|
$.create("<stub-create-web-public-stream-policy-parent>"),
|
|
|
|
);
|
2018-08-18 12:31:21 +02:00
|
|
|
|
2017-06-16 14:41:10 +02:00
|
|
|
// TEST set_up() here, but this mostly just allows us to
|
|
|
|
// get access to the click handlers.
|
2022-07-10 01:06:33 +02:00
|
|
|
override(page_params, "is_owner", true);
|
2017-06-16 14:41:10 +02:00
|
|
|
settings_org.set_up();
|
|
|
|
|
2020-07-21 00:23:06 +02:00
|
|
|
test_submit_settings_form(
|
2021-03-14 14:08:11 +01:00
|
|
|
override,
|
2021-09-29 11:46:12 +02:00
|
|
|
$(".admin-realm-form").get_on_handler(
|
2020-07-21 00:23:06 +02:00
|
|
|
"click",
|
2021-06-03 18:15:17 +02:00
|
|
|
".subsection-header .subsection-changes-save button",
|
2020-07-21 00:23:06 +02:00
|
|
|
),
|
|
|
|
);
|
2021-03-14 14:08:11 +01:00
|
|
|
test_upload_realm_icon(override, upload_realm_logo_or_icon);
|
2018-03-14 23:50:17 +01:00
|
|
|
test_extract_property_name();
|
2018-03-29 02:02:01 +02:00
|
|
|
test_change_save_button_state();
|
2018-04-16 18:58:27 +02:00
|
|
|
test_sync_realm_settings();
|
2018-04-28 15:35:14 +02:00
|
|
|
test_parse_time_limit();
|
2020-07-21 00:23:06 +02:00
|
|
|
test_discard_changes_button(
|
2021-09-29 11:46:12 +02:00
|
|
|
$(".admin-realm-form").get_on_handler(
|
2020-07-21 00:23:06 +02:00
|
|
|
"click",
|
2021-06-03 18:15:17 +02:00
|
|
|
".subsection-header .subsection-changes-discard button",
|
2020-07-21 00:23:06 +02:00
|
|
|
),
|
|
|
|
);
|
2018-05-15 12:40:07 +02:00
|
|
|
});
|
2017-06-16 14:41:10 +02:00
|
|
|
|
2021-03-14 14:08:11 +01:00
|
|
|
test("test get_organization_settings_options", () => {
|
2020-01-23 07:01:34 +01:00
|
|
|
const sorted_option_values = settings_org.get_organization_settings_options();
|
2021-04-28 20:39:24 +02:00
|
|
|
const sorted_common_policy_values = sorted_option_values.common_policy_values;
|
|
|
|
const expected_common_policy_values = [
|
2020-01-23 07:01:34 +01:00
|
|
|
{
|
2020-07-15 01:29:15 +02:00
|
|
|
key: "by_admins_only",
|
2020-01-23 07:01:34 +01:00
|
|
|
order: 1,
|
|
|
|
code: 2,
|
2021-04-13 06:51:54 +02:00
|
|
|
description: $t({defaultMessage: "Admins"}),
|
2020-01-23 07:01:34 +01:00
|
|
|
},
|
|
|
|
{
|
2021-04-21 21:43:27 +02:00
|
|
|
key: "by_moderators_only",
|
2020-01-23 07:01:34 +01:00
|
|
|
order: 2,
|
2021-04-21 21:43:27 +02:00
|
|
|
code: 4,
|
|
|
|
description: $t({defaultMessage: "Admins and moderators"}),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "by_full_members",
|
|
|
|
order: 3,
|
2020-01-23 07:01:34 +01:00
|
|
|
code: 3,
|
2021-08-23 14:58:02 +02:00
|
|
|
description: $t({defaultMessage: "Admins, moderators and full members"}),
|
2020-01-23 07:01:34 +01:00
|
|
|
},
|
|
|
|
{
|
2020-07-15 01:29:15 +02:00
|
|
|
key: "by_members",
|
2021-04-21 21:43:27 +02:00
|
|
|
order: 4,
|
2020-01-23 07:01:34 +01:00
|
|
|
code: 1,
|
2021-08-23 14:58:02 +02:00
|
|
|
description: $t({defaultMessage: "Admins, moderators and members"}),
|
2020-01-23 07:01:34 +01:00
|
|
|
},
|
|
|
|
];
|
2021-04-28 20:39:24 +02:00
|
|
|
assert.deepEqual(sorted_common_policy_values, expected_common_policy_values);
|
2020-01-23 07:01:34 +01:00
|
|
|
});
|
|
|
|
|
2021-03-14 14:08:11 +01:00
|
|
|
test("test get_sorted_options_list", () => {
|
2020-01-23 07:01:34 +01:00
|
|
|
const option_values_1 = {
|
|
|
|
by_admins_only: {
|
|
|
|
order: 3,
|
|
|
|
code: 2,
|
2021-04-13 06:51:54 +02:00
|
|
|
description: $t({defaultMessage: "Admins"}),
|
2020-01-23 07:01:34 +01:00
|
|
|
},
|
|
|
|
by_members: {
|
|
|
|
order: 2,
|
|
|
|
code: 1,
|
2021-08-23 14:58:02 +02:00
|
|
|
description: $t({defaultMessage: "Admins, moderators and members"}),
|
2020-01-23 07:01:34 +01:00
|
|
|
},
|
|
|
|
by_full_members: {
|
|
|
|
order: 1,
|
|
|
|
code: 3,
|
2021-08-23 14:58:02 +02:00
|
|
|
description: $t({defaultMessage: "Admins, moderators and full members"}),
|
2020-01-23 07:01:34 +01:00
|
|
|
},
|
|
|
|
};
|
|
|
|
let expected_option_values = [
|
|
|
|
{
|
2020-07-15 01:29:15 +02:00
|
|
|
key: "by_full_members",
|
2020-01-23 07:01:34 +01:00
|
|
|
order: 1,
|
|
|
|
code: 3,
|
2021-08-23 14:58:02 +02:00
|
|
|
description: $t({defaultMessage: "Admins, moderators and full members"}),
|
2020-01-23 07:01:34 +01:00
|
|
|
},
|
|
|
|
{
|
2020-07-15 01:29:15 +02:00
|
|
|
key: "by_members",
|
2020-01-23 07:01:34 +01:00
|
|
|
order: 2,
|
|
|
|
code: 1,
|
2021-08-23 14:58:02 +02:00
|
|
|
description: $t({defaultMessage: "Admins, moderators and members"}),
|
2020-01-23 07:01:34 +01:00
|
|
|
},
|
|
|
|
{
|
2020-07-15 01:29:15 +02:00
|
|
|
key: "by_admins_only",
|
2020-01-23 07:01:34 +01:00
|
|
|
order: 3,
|
|
|
|
code: 2,
|
2021-04-13 06:51:54 +02:00
|
|
|
description: $t({defaultMessage: "Admins"}),
|
2020-01-23 07:01:34 +01:00
|
|
|
},
|
|
|
|
];
|
|
|
|
assert.deepEqual(settings_org.get_sorted_options_list(option_values_1), expected_option_values);
|
|
|
|
|
|
|
|
const option_values_2 = {
|
|
|
|
by_admins_only: {
|
|
|
|
code: 1,
|
2021-04-13 06:51:54 +02:00
|
|
|
description: $t({defaultMessage: "Admins"}),
|
2020-01-23 07:01:34 +01:00
|
|
|
},
|
|
|
|
by_members: {
|
|
|
|
code: 2,
|
2021-08-23 14:58:02 +02:00
|
|
|
description: $t({defaultMessage: "Admins, moderators and members"}),
|
2020-01-23 07:01:34 +01:00
|
|
|
},
|
|
|
|
by_full_members: {
|
|
|
|
code: 3,
|
2021-08-23 14:58:02 +02:00
|
|
|
description: $t({defaultMessage: "Admins, moderators and full members"}),
|
2020-01-23 07:01:34 +01:00
|
|
|
},
|
|
|
|
};
|
|
|
|
expected_option_values = [
|
|
|
|
{
|
2020-07-15 01:29:15 +02:00
|
|
|
key: "by_admins_only",
|
2020-01-23 07:01:34 +01:00
|
|
|
code: 1,
|
2021-04-13 06:51:54 +02:00
|
|
|
description: $t({defaultMessage: "Admins"}),
|
2020-01-23 07:01:34 +01:00
|
|
|
},
|
|
|
|
{
|
2020-07-15 01:29:15 +02:00
|
|
|
key: "by_full_members",
|
2020-01-23 07:01:34 +01:00
|
|
|
code: 3,
|
2021-08-23 14:58:02 +02:00
|
|
|
description: $t({defaultMessage: "Admins, moderators and full members"}),
|
2020-01-23 07:01:34 +01:00
|
|
|
},
|
|
|
|
{
|
2020-07-15 01:29:15 +02:00
|
|
|
key: "by_members",
|
2020-01-23 07:01:34 +01:00
|
|
|
code: 2,
|
2021-08-23 14:58:02 +02:00
|
|
|
description: $t({defaultMessage: "Admins, moderators and members"}),
|
2020-01-23 07:01:34 +01:00
|
|
|
},
|
|
|
|
];
|
|
|
|
assert.deepEqual(settings_org.get_sorted_options_list(option_values_2), expected_option_values);
|
|
|
|
});
|
|
|
|
|
2023-04-13 15:54:29 +02:00
|
|
|
test("misc", ({override_rewire, mock_template}) => {
|
2018-02-02 16:54:26 +01:00
|
|
|
page_params.is_admin = false;
|
2023-01-14 21:31:46 +01:00
|
|
|
$("#user-avatar-upload-widget").length = 1;
|
|
|
|
$("#user_details_section").length = 1;
|
2017-06-16 14:41:10 +02:00
|
|
|
|
2022-01-25 11:36:19 +01:00
|
|
|
const $stub_notification_disable_parent = $.create("<stub notification_disable parent");
|
|
|
|
$stub_notification_disable_parent.set_find_results(
|
2022-01-19 15:16:07 +01:00
|
|
|
".dropdown_list_reset_button",
|
2020-07-15 00:34:28 +02:00
|
|
|
$.create("<disable link>"),
|
|
|
|
);
|
2018-04-03 22:25:18 +02:00
|
|
|
|
2018-03-02 21:26:59 +01:00
|
|
|
page_params.realm_name_changes_disabled = false;
|
2019-05-03 08:09:03 +02:00
|
|
|
page_params.server_name_changes_disabled = false;
|
2018-03-02 21:44:14 +01:00
|
|
|
settings_account.update_name_change_display();
|
2021-06-10 08:32:54 +02:00
|
|
|
assert.ok(!$("#full_name").prop("disabled"));
|
2023-01-25 18:50:46 +01:00
|
|
|
assert.ok(!$("#full_name_input_container").hasClass("disabled_setting_tooltip"));
|
2017-06-16 14:41:10 +02:00
|
|
|
|
2018-03-02 21:26:59 +01:00
|
|
|
page_params.realm_name_changes_disabled = true;
|
2019-05-03 08:09:03 +02:00
|
|
|
page_params.server_name_changes_disabled = false;
|
|
|
|
settings_account.update_name_change_display();
|
2021-06-10 08:32:54 +02:00
|
|
|
assert.ok($("#full_name").prop("disabled"));
|
2023-01-25 18:50:46 +01:00
|
|
|
assert.ok($("#full_name_input_container").hasClass("disabled_setting_tooltip"));
|
2019-05-03 08:09:03 +02:00
|
|
|
|
|
|
|
page_params.realm_name_changes_disabled = true;
|
|
|
|
page_params.server_name_changes_disabled = true;
|
|
|
|
settings_account.update_name_change_display();
|
2021-06-10 08:32:54 +02:00
|
|
|
assert.ok($("#full_name").prop("disabled"));
|
2023-01-25 18:50:46 +01:00
|
|
|
assert.ok($("#full_name_input_container").hasClass("disabled_setting_tooltip"));
|
2019-05-03 08:09:03 +02:00
|
|
|
|
|
|
|
page_params.realm_name_changes_disabled = false;
|
|
|
|
page_params.server_name_changes_disabled = true;
|
2018-03-02 21:44:14 +01:00
|
|
|
settings_account.update_name_change_display();
|
2021-06-10 08:32:54 +02:00
|
|
|
assert.ok($("#full_name").prop("disabled"));
|
2023-01-25 18:50:46 +01:00
|
|
|
assert.ok($("#full_name_input_container").hasClass("disabled_setting_tooltip"));
|
2017-06-16 14:41:10 +02:00
|
|
|
|
2018-03-02 21:26:59 +01:00
|
|
|
page_params.realm_email_changes_disabled = false;
|
2018-03-02 21:44:14 +01:00
|
|
|
settings_account.update_email_change_display();
|
2022-12-14 13:45:08 +01:00
|
|
|
assert.ok(!$("#change_email_button").prop("disabled"));
|
2018-01-04 13:02:17 +01:00
|
|
|
|
2018-03-02 21:26:59 +01:00
|
|
|
page_params.realm_email_changes_disabled = true;
|
2018-03-02 21:44:14 +01:00
|
|
|
settings_account.update_email_change_display();
|
2022-12-14 13:45:08 +01:00
|
|
|
assert.ok($("#change_email_button").prop("disabled"));
|
2017-06-16 14:41:10 +02:00
|
|
|
|
2019-04-23 04:51:04 +02:00
|
|
|
page_params.realm_avatar_changes_disabled = false;
|
2019-04-29 08:41:00 +02:00
|
|
|
page_params.server_avatar_changes_disabled = false;
|
2019-04-23 04:51:04 +02:00
|
|
|
settings_account.update_avatar_change_display();
|
2023-01-03 17:21:08 +01:00
|
|
|
assert.ok(!$("#user-avatar-upload-widget .image_upload_button").hasClass("hide"));
|
2019-04-23 04:51:04 +02:00
|
|
|
page_params.realm_avatar_changes_disabled = true;
|
2019-04-29 08:41:00 +02:00
|
|
|
page_params.server_avatar_changes_disabled = false;
|
|
|
|
settings_account.update_avatar_change_display();
|
2023-01-03 17:21:08 +01:00
|
|
|
assert.ok($("#user-avatar-upload-widget .image_upload_button").hasClass("hide"));
|
2019-04-29 08:41:00 +02:00
|
|
|
page_params.realm_avatar_changes_disabled = false;
|
|
|
|
page_params.server_avatar_changes_disabled = true;
|
|
|
|
settings_account.update_avatar_change_display();
|
2023-01-03 17:21:08 +01:00
|
|
|
assert.ok($("#user-avatar-upload-widget .image_upload_button").hasClass("hide"));
|
2019-04-29 08:41:00 +02:00
|
|
|
page_params.realm_avatar_changes_disabled = true;
|
|
|
|
page_params.server_avatar_changes_disabled = true;
|
2019-04-23 04:51:04 +02:00
|
|
|
settings_account.update_avatar_change_display();
|
2023-01-03 17:21:08 +01:00
|
|
|
assert.ok($("#user-avatar-upload-widget .image_upload_button").hasClass("hide"));
|
2019-04-23 04:51:04 +02:00
|
|
|
|
2018-03-02 21:44:14 +01:00
|
|
|
// If organization admin, these UI elements are never disabled.
|
2018-02-02 16:54:26 +01:00
|
|
|
page_params.is_admin = true;
|
2018-03-02 21:44:14 +01:00
|
|
|
settings_account.update_name_change_display();
|
2021-06-10 08:32:54 +02:00
|
|
|
assert.ok(!$("#full_name").prop("disabled"));
|
2023-01-25 18:50:46 +01:00
|
|
|
assert.ok(!$("#full_name_input_container").hasClass("disabled_setting_tooltip"));
|
2018-02-02 16:54:26 +01:00
|
|
|
|
2018-03-02 21:44:14 +01:00
|
|
|
settings_account.update_email_change_display();
|
2022-12-14 13:45:08 +01:00
|
|
|
assert.ok(!$("#change_email_button").prop("disabled"));
|
2018-02-02 16:54:26 +01:00
|
|
|
|
2023-01-03 17:21:08 +01:00
|
|
|
settings_account.update_avatar_change_display();
|
|
|
|
assert.ok(!$("#user-avatar-upload-widget .image_upload_button").hasClass("hide"));
|
|
|
|
|
2022-01-08 10:27:06 +01:00
|
|
|
override_rewire(stream_settings_data, "get_streams_for_settings_page", () => [
|
2023-04-26 17:48:20 +02:00
|
|
|
{name: "some_stream", stream_id: 75, invite_only: true, color: "red"},
|
|
|
|
{name: "some_stream", stream_id: 42, color: "blue"},
|
2021-02-28 00:53:59 +01:00
|
|
|
]);
|
2020-04-15 04:29:15 +02:00
|
|
|
|
2020-05-12 20:44:05 +02:00
|
|
|
// Set stubs for dropdown_list_widget:
|
2020-07-15 00:34:28 +02:00
|
|
|
const widget_settings = [
|
|
|
|
"realm_notifications_stream_id",
|
|
|
|
"realm_signup_notifications_stream_id",
|
|
|
|
"realm_default_code_block_language",
|
|
|
|
];
|
2022-01-25 11:36:19 +01:00
|
|
|
const $dropdown_list_parent = $.create("<list parent>");
|
|
|
|
$dropdown_list_parent.set_find_results(
|
2022-01-19 15:16:07 +01:00
|
|
|
".dropdown_list_reset_button",
|
2020-07-15 00:34:28 +02:00
|
|
|
$.create("<disable button>"),
|
|
|
|
);
|
2021-01-22 22:29:08 +01:00
|
|
|
for (const name of widget_settings) {
|
2022-01-25 11:36:19 +01:00
|
|
|
const $elem = $.create(`#${CSS.escape(name)}_widget #${CSS.escape(name)}_name`);
|
|
|
|
$elem.closest = () => $dropdown_list_parent;
|
2021-01-22 22:29:08 +01:00
|
|
|
}
|
2020-04-15 04:29:15 +02:00
|
|
|
|
2020-05-19 00:16:34 +02:00
|
|
|
// We do not define any settings we need in page_params yet, but we don't need to for this test.
|
2020-07-15 00:34:28 +02:00
|
|
|
blueslip.expect(
|
|
|
|
"warn",
|
|
|
|
"dropdown-list-widget: Called without a default value; using null value",
|
|
|
|
3,
|
|
|
|
);
|
2020-04-10 09:38:55 +02:00
|
|
|
settings_org.init_dropdown_widgets();
|
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
let setting_name = "realm_notifications_stream_id";
|
2022-01-25 11:36:19 +01:00
|
|
|
let $elem = $(`#${CSS.escape(setting_name)}_widget #${CSS.escape(setting_name)}_name`);
|
|
|
|
$elem.closest = () => $stub_notification_disable_parent;
|
2023-04-13 15:54:29 +02:00
|
|
|
let selected_stream_id = 42;
|
|
|
|
mock_template("inline_decorated_stream_name.hbs", true, (data, html) => {
|
|
|
|
assert.equal(data.stream.stream_id, selected_stream_id);
|
|
|
|
return html;
|
|
|
|
});
|
|
|
|
|
2020-04-10 09:38:55 +02:00
|
|
|
settings_org.notifications_stream_widget.render(42);
|
2023-04-13 15:54:29 +02:00
|
|
|
assert.ok($elem.html().indexOf("some_stream") > 0);
|
|
|
|
assert.ok($elem.html().indexOf("zulip-icon-hashtag") > 0);
|
2022-01-25 11:36:19 +01:00
|
|
|
assert.ok(!$elem.hasClass("text-warning"));
|
2017-06-16 14:41:10 +02:00
|
|
|
|
2020-04-10 09:38:55 +02:00
|
|
|
settings_org.notifications_stream_widget.render(undefined);
|
2022-01-25 11:36:19 +01:00
|
|
|
assert.equal($elem.text(), "translated: Disabled");
|
|
|
|
assert.ok($elem.hasClass("text-warning"));
|
2017-10-20 16:55:04 +02:00
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
setting_name = "realm_signup_notifications_stream_id";
|
2022-01-25 11:36:19 +01:00
|
|
|
$elem = $(`#${CSS.escape(setting_name)}_widget #${CSS.escape(setting_name)}_name`);
|
|
|
|
$elem.closest = () => $stub_notification_disable_parent;
|
2023-04-13 15:54:29 +02:00
|
|
|
selected_stream_id = 75;
|
2020-04-10 09:38:55 +02:00
|
|
|
settings_org.signup_notifications_stream_widget.render(75);
|
2023-04-13 15:54:29 +02:00
|
|
|
assert.ok($elem.html().indexOf("some_stream") > 0);
|
|
|
|
assert.ok($elem.html().indexOf("zulip-icon-lock") > 0);
|
2022-01-25 11:36:19 +01:00
|
|
|
assert.ok(!$elem.hasClass("text-warning"));
|
2017-10-20 16:55:04 +02:00
|
|
|
|
2020-04-10 09:38:55 +02:00
|
|
|
settings_org.signup_notifications_stream_widget.render(undefined);
|
2022-01-25 11:36:19 +01:00
|
|
|
assert.equal($elem.text(), "translated: Disabled");
|
|
|
|
assert.ok($elem.hasClass("text-warning"));
|
2018-05-15 12:40:07 +02:00
|
|
|
});
|