2016-12-07 18:38:59 +01:00
|
|
|
set_global("page_params", {
|
|
|
|
realm_uri: "https://chat.example.com",
|
2018-05-07 03:30:13 +02:00
|
|
|
realm_embedded_bots: [
|
|
|
|
{name: "converter", config: {}},
|
2018-12-18 19:34:45 +01:00
|
|
|
{name: "giphy", config: {key: "12345678"}},
|
|
|
|
{name: "foobot", config: {bar: "baz", qux: "quux"}},
|
2018-05-07 03:30:13 +02:00
|
|
|
],
|
2018-06-01 11:27:02 +02:00
|
|
|
realm_bots: [{api_key: 'QadL788EkiottHmukyhHgePUFHREiu8b',
|
|
|
|
email: 'error-bot@zulip.org',
|
|
|
|
full_name: 'Error bot',
|
2020-02-08 01:27:04 +01:00
|
|
|
user_id: 1,
|
|
|
|
services: []},
|
2018-06-01 11:27:02 +02:00
|
|
|
],
|
2016-12-07 18:38:59 +01:00
|
|
|
});
|
|
|
|
|
2017-06-20 00:32:20 +02:00
|
|
|
set_global("avatar", {});
|
|
|
|
|
|
|
|
set_global('$', global.make_zjquery());
|
2018-03-29 22:11:32 +02:00
|
|
|
set_global('i18n', global.stub_i18n);
|
2017-06-20 00:32:20 +02:00
|
|
|
|
2017-11-08 18:50:24 +01:00
|
|
|
zrequire('bot_data');
|
|
|
|
zrequire('settings_bots');
|
2018-06-01 11:27:02 +02:00
|
|
|
zrequire('people');
|
2016-12-07 18:38:59 +01:00
|
|
|
|
2018-06-27 09:35:30 +02:00
|
|
|
set_global('ClipboardJS', function (sel) {
|
|
|
|
assert.equal(sel, '#copy_zuliprc');
|
|
|
|
});
|
|
|
|
|
2018-06-01 11:27:02 +02:00
|
|
|
bot_data.initialize();
|
|
|
|
|
2018-05-15 12:40:07 +02:00
|
|
|
run_test('generate_zuliprc_uri', () => {
|
2019-11-02 00:06:25 +01:00
|
|
|
const uri = settings_bots.generate_zuliprc_uri(1);
|
|
|
|
const expected = "data:application/octet-stream;charset=utf-8," + encodeURIComponent(
|
2016-12-07 18:38:59 +01:00
|
|
|
"[api]\nemail=error-bot@zulip.org\n" +
|
|
|
|
"key=QadL788EkiottHmukyhHgePUFHREiu8b\n" +
|
|
|
|
"site=https://chat.example.com\n"
|
|
|
|
);
|
|
|
|
|
|
|
|
assert.equal(uri, expected);
|
2018-05-15 12:40:07 +02:00
|
|
|
});
|
2016-12-07 18:38:59 +01:00
|
|
|
|
2018-05-15 12:40:07 +02:00
|
|
|
run_test('generate_zuliprc_content', () => {
|
2020-02-01 00:04:23 +01:00
|
|
|
const bot_user = bot_data.get(1);
|
|
|
|
const content = settings_bots.generate_zuliprc_content(bot_user);
|
|
|
|
const expected = "[api]\nemail=error-bot@zulip.org\n" +
|
|
|
|
"key=QadL788EkiottHmukyhHgePUFHREiu8b\n" +
|
2016-12-07 18:38:59 +01:00
|
|
|
"site=https://chat.example.com\n";
|
|
|
|
|
|
|
|
assert.equal(content, expected);
|
2018-05-15 12:40:07 +02:00
|
|
|
});
|
2017-05-30 16:12:02 +02:00
|
|
|
|
2018-05-29 10:18:06 +02:00
|
|
|
run_test('generate_botserverrc_content', () => {
|
2019-11-02 00:06:25 +01:00
|
|
|
const user = {
|
2017-05-30 16:12:02 +02:00
|
|
|
email: "vabstest-bot@zulip.com",
|
|
|
|
api_key: "nSlA0mUm7G42LP85lMv7syqFTzDE2q34",
|
|
|
|
};
|
2019-11-02 00:06:25 +01:00
|
|
|
const service = {
|
2018-05-30 11:09:35 +02:00
|
|
|
token: "abcd1234",
|
|
|
|
};
|
2019-11-02 00:06:25 +01:00
|
|
|
const content = settings_bots.generate_botserverrc_content(user.email,
|
|
|
|
user.api_key,
|
|
|
|
service.token);
|
|
|
|
const expected = "[]\nemail=vabstest-bot@zulip.com\n" +
|
2017-05-30 16:12:02 +02:00
|
|
|
"key=nSlA0mUm7G42LP85lMv7syqFTzDE2q34\n" +
|
2018-05-30 11:09:35 +02:00
|
|
|
"site=https://chat.example.com\n" +
|
|
|
|
"token=abcd1234\n";
|
2017-05-30 16:12:02 +02:00
|
|
|
|
|
|
|
assert.equal(content, expected);
|
2018-05-15 12:40:07 +02:00
|
|
|
});
|
2017-06-20 00:32:20 +02:00
|
|
|
|
2017-06-24 22:38:27 +02:00
|
|
|
function test_create_bot_type_input_box_toggle(f) {
|
2019-11-02 00:06:25 +01:00
|
|
|
const create_payload_url = $('#create_payload_url');
|
|
|
|
const payload_url_inputbox = $('#payload_url_inputbox');
|
|
|
|
const config_inputbox = $('#config_inputbox');
|
|
|
|
const EMBEDDED_BOT_TYPE = '4';
|
|
|
|
const OUTGOING_WEBHOOK_BOT_TYPE = '3';
|
|
|
|
const GENERIC_BOT_TYPE = '1';
|
2017-06-24 22:38:27 +02:00
|
|
|
|
2017-07-15 18:23:44 +02:00
|
|
|
$('#create_bot_type :selected').val(EMBEDDED_BOT_TYPE);
|
2020-02-12 01:35:16 +01:00
|
|
|
f();
|
2017-07-15 18:23:44 +02:00
|
|
|
assert(!create_payload_url.hasClass('required'));
|
|
|
|
assert(!payload_url_inputbox.visible());
|
|
|
|
assert($('#select_service_name').hasClass('required'));
|
|
|
|
assert($('#service_name_list').visible());
|
2018-01-07 19:24:14 +01:00
|
|
|
assert(config_inputbox.visible());
|
2017-07-15 18:23:44 +02:00
|
|
|
|
2017-06-24 22:38:27 +02:00
|
|
|
$('#create_bot_type :selected').val(OUTGOING_WEBHOOK_BOT_TYPE);
|
2020-02-12 01:35:16 +01:00
|
|
|
f();
|
2017-06-24 22:38:27 +02:00
|
|
|
assert(create_payload_url.hasClass('required'));
|
|
|
|
assert(payload_url_inputbox.visible());
|
2018-01-07 19:24:14 +01:00
|
|
|
assert(!config_inputbox.visible());
|
2017-06-24 22:38:27 +02:00
|
|
|
|
|
|
|
$('#create_bot_type :selected').val(GENERIC_BOT_TYPE);
|
2020-02-12 01:35:16 +01:00
|
|
|
f();
|
2018-06-06 18:19:09 +02:00
|
|
|
assert(!create_payload_url.hasClass('required'));
|
2017-06-24 22:38:27 +02:00
|
|
|
assert(!payload_url_inputbox.visible());
|
2018-01-07 19:24:14 +01:00
|
|
|
assert(!config_inputbox.visible());
|
2017-06-24 22:38:27 +02:00
|
|
|
}
|
2017-06-20 00:32:20 +02:00
|
|
|
|
2018-06-12 20:58:57 +02:00
|
|
|
function set_up() {
|
|
|
|
set_global('$', global.make_zjquery());
|
|
|
|
|
2017-06-20 00:32:20 +02:00
|
|
|
// bunch of stubs
|
|
|
|
|
2018-06-12 20:51:31 +02:00
|
|
|
$.validator = { addMethod: () => {} };
|
2017-06-20 00:32:20 +02:00
|
|
|
|
2018-06-12 20:51:31 +02:00
|
|
|
$("#create_bot_form").validate = () => {};
|
2017-06-20 00:32:20 +02:00
|
|
|
|
2018-06-12 20:51:31 +02:00
|
|
|
$('#create_bot_type').on = (action, f) => {
|
2017-06-24 22:38:27 +02:00
|
|
|
if (action === 'change') {
|
|
|
|
test_create_bot_type_input_box_toggle(f);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2018-06-12 20:51:31 +02:00
|
|
|
$('#config_inputbox').children = () => {
|
2019-11-02 00:06:25 +01:00
|
|
|
const mock_children = {
|
2018-06-12 20:51:31 +02:00
|
|
|
hide: () => {
|
2018-01-07 19:24:14 +01:00
|
|
|
return;
|
|
|
|
},
|
|
|
|
};
|
|
|
|
return mock_children;
|
|
|
|
};
|
2018-06-12 20:51:31 +02:00
|
|
|
avatar.build_bot_create_widget = () => {};
|
|
|
|
avatar.build_bot_edit_widget = () => {};
|
2017-06-20 00:32:20 +02:00
|
|
|
|
|
|
|
settings_bots.set_up();
|
2018-06-12 20:58:57 +02:00
|
|
|
}
|
2017-06-20 00:32:20 +02:00
|
|
|
|
2018-06-12 20:58:57 +02:00
|
|
|
run_test('set_up', () => {
|
|
|
|
set_up();
|
|
|
|
});
|
2018-06-12 21:42:43 +02:00
|
|
|
|
|
|
|
run_test('test tab clicks', () => {
|
|
|
|
set_up();
|
|
|
|
|
|
|
|
function click_on_tab(tab_elem) {
|
2019-11-02 00:06:25 +01:00
|
|
|
const e = {
|
2018-06-12 21:42:43 +02:00
|
|
|
preventDefault: () => {},
|
|
|
|
stopPropagation: () => {},
|
|
|
|
};
|
|
|
|
tab_elem.click(e);
|
|
|
|
}
|
|
|
|
|
|
|
|
const tabs = {
|
|
|
|
add: $('#bots_lists_navbar .add-a-new-bot-tab'),
|
|
|
|
active: $('#bots_lists_navbar .active-bots-tab'),
|
|
|
|
inactive: $('#bots_lists_navbar .inactive-bots-tab'),
|
|
|
|
};
|
|
|
|
|
|
|
|
$('#bots_lists_navbar .active').removeClass = (cls) => {
|
|
|
|
assert.equal(cls, 'active');
|
2020-02-06 02:23:02 +01:00
|
|
|
for (const tab of Object.values(tabs)) {
|
2018-06-12 21:42:43 +02:00
|
|
|
tab.removeClass('active');
|
2020-02-06 02:23:02 +01:00
|
|
|
}
|
2018-06-12 21:42:43 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
const forms = {
|
|
|
|
add: $('#add-a-new-bot-form'),
|
|
|
|
active: $('#active_bots_list'),
|
|
|
|
inactive: $('#inactive_bots_list'),
|
|
|
|
};
|
|
|
|
|
|
|
|
(function () {
|
|
|
|
click_on_tab(tabs.add);
|
|
|
|
assert(tabs.add.hasClass('active'));
|
|
|
|
assert(!tabs.active.hasClass('active'));
|
|
|
|
assert(!tabs.inactive.hasClass('active'));
|
|
|
|
|
|
|
|
assert(forms.add.visible());
|
|
|
|
assert(!forms.active.visible());
|
|
|
|
assert(!forms.inactive.visible());
|
|
|
|
}());
|
|
|
|
|
|
|
|
(function () {
|
|
|
|
click_on_tab(tabs.active);
|
|
|
|
assert(!tabs.add.hasClass('active'));
|
|
|
|
assert(tabs.active.hasClass('active'));
|
|
|
|
assert(!tabs.inactive.hasClass('active'));
|
|
|
|
|
|
|
|
assert(!forms.add.visible());
|
|
|
|
assert(forms.active.visible());
|
|
|
|
assert(!forms.inactive.visible());
|
|
|
|
}());
|
|
|
|
|
|
|
|
(function () {
|
|
|
|
click_on_tab(tabs.inactive);
|
|
|
|
assert(!tabs.add.hasClass('active'));
|
|
|
|
assert(!tabs.active.hasClass('active'));
|
|
|
|
assert(tabs.inactive.hasClass('active'));
|
|
|
|
|
|
|
|
assert(!forms.add.visible());
|
|
|
|
assert(!forms.active.visible());
|
|
|
|
assert(forms.inactive.visible());
|
|
|
|
}());
|
|
|
|
});
|
2018-06-13 16:59:15 +02:00
|
|
|
|
|
|
|
run_test('can_create_new_bots', () => {
|
|
|
|
page_params.is_admin = true;
|
|
|
|
assert(settings_bots.can_create_new_bots());
|
|
|
|
|
|
|
|
page_params.is_admin = false;
|
|
|
|
page_params.realm_bot_creation_policy = 1;
|
|
|
|
assert(settings_bots.can_create_new_bots());
|
|
|
|
|
|
|
|
page_params.realm_bot_creation_policy = 3;
|
|
|
|
assert(!settings_bots.can_create_new_bots());
|
|
|
|
});
|