mirror of
https://github.com/zulip/zulip.git
synced 2025-10-23 04:52:12 +00:00
This removes the "service" field from the `test_bot` fixture, because it is a default bot. In the `/bots` API endpoint, only service bots can have their own service. This is a prep commit for #34524, this cleans up the test cases related to service bots so that it would keep things from getting confusing when adding test for the changes to that PR.
220 lines
6.8 KiB
JavaScript
220 lines
6.8 KiB
JavaScript
"use strict";
|
|
|
|
const assert = require("node:assert/strict");
|
|
|
|
const {zrequire} = require("./lib/namespace.cjs");
|
|
const {run_test} = require("./lib/test.cjs");
|
|
|
|
const bot_data = zrequire("bot_data");
|
|
|
|
const people = zrequire("people");
|
|
|
|
// Bot types and service bot types can be found
|
|
// in zerver/models/users.py - UserProfile Class or
|
|
// zever/openapi/zulip.yaml
|
|
|
|
const me = {
|
|
email: "me@zulip.com",
|
|
full_name: "Me Myself",
|
|
user_id: 2,
|
|
};
|
|
|
|
const fred = {
|
|
email: "fred@zulip.com",
|
|
full_name: "Fred Frederickson",
|
|
user_id: 3,
|
|
};
|
|
|
|
const bot_data_params = {
|
|
realm_bots: [
|
|
{
|
|
api_key: "1234567890qwertyuioop",
|
|
avatar_url: "",
|
|
bot_type: 1, // DEFAULT_BOT
|
|
default_all_public_streams: true,
|
|
default_events_register_stream: "register stream 42",
|
|
default_sending_stream: "sending stream 42",
|
|
email: "bot0@zulip.com",
|
|
full_name: "Bot 0",
|
|
is_active: true,
|
|
owner_id: 4,
|
|
user_id: 42,
|
|
services: [],
|
|
extra: "This field should be ignored",
|
|
},
|
|
{
|
|
api_key: "1234567890zxcvbnm",
|
|
avatar_url: "",
|
|
bot_type: 3, // OUTGOING_WEBHOOK_BOT
|
|
default_all_public_streams: true,
|
|
default_events_register_stream: "register stream 314",
|
|
default_sending_stream: "sending stream 314",
|
|
email: "outgoingwebhook@zulip.com",
|
|
full_name: "Outgoing webhook",
|
|
is_active: true,
|
|
owner_id: 5,
|
|
user_id: 314,
|
|
services: [{base_url: "http://foo.com", interface: 1, token: "basictoken12345"}],
|
|
extra: "This field should be ignored",
|
|
},
|
|
],
|
|
};
|
|
|
|
function test(label, f) {
|
|
run_test(label, ({override}) => {
|
|
people.add_active_user(me);
|
|
people.initialize_current_user(me.user_id);
|
|
bot_data.initialize(bot_data_params);
|
|
// Our startup logic should have added Bot 0 from page_params.
|
|
assert.equal(bot_data.get(42).full_name, "Bot 0");
|
|
assert.equal(bot_data.get(314).full_name, "Outgoing webhook");
|
|
f({override});
|
|
});
|
|
}
|
|
|
|
test("test_basics", () => {
|
|
people.add_active_user(fred);
|
|
const test_bot = {
|
|
api_key: "qwertyuioop1234567890",
|
|
avatar_url: "",
|
|
// Default bot
|
|
bot_type: 1,
|
|
default_all_public_streams: true,
|
|
default_events_register_stream: "register stream 43",
|
|
default_sending_stream: "sending stream 43",
|
|
email: "bot1@zulip.com",
|
|
full_name: "Bot 1",
|
|
is_active: true,
|
|
owner_id: 6,
|
|
user_id: 43,
|
|
services: [],
|
|
extra: "This field should be ignored",
|
|
};
|
|
const test_embedded_bot = {
|
|
api_key: "zxcvbnm1234567890",
|
|
avatar_url: "",
|
|
bot_type: 4, // EMBEDDED_BOT
|
|
default_all_public_streams: true,
|
|
default_events_register_stream: "register stream 143",
|
|
default_sending_stream: "sending stream 143",
|
|
email: "embedded-bot@zulip.com",
|
|
full_name: "Embedded bot 1",
|
|
is_active: true,
|
|
owner_id: 7,
|
|
user_id: 143,
|
|
services: [
|
|
{
|
|
config_data: {key: "12345678"},
|
|
service_name: "giphy",
|
|
},
|
|
],
|
|
extra: "This field should be ignored",
|
|
};
|
|
|
|
(function test_add() {
|
|
bot_data.add(test_bot);
|
|
const bot = bot_data.get(43);
|
|
assert.equal("qwertyuioop1234567890", bot.api_key);
|
|
assert.equal("", bot.avatar_url);
|
|
assert.equal(1, bot.bot_type);
|
|
assert.equal(true, bot.default_all_public_streams);
|
|
assert.equal("register stream 43", bot.default_events_register_stream);
|
|
assert.equal("sending stream 43", bot.default_sending_stream);
|
|
assert.equal("bot1@zulip.com", bot.email);
|
|
assert.equal("Bot 1", bot.full_name);
|
|
assert.equal(true, bot.is_active);
|
|
assert.equal(6, bot.owner_id);
|
|
assert.equal(43, bot.user_id);
|
|
assert.equal(undefined, bot.extra);
|
|
})();
|
|
|
|
(function test_update() {
|
|
bot_data.add(test_bot);
|
|
|
|
let bot = bot_data.get(43);
|
|
assert.equal("Bot 1", bot.full_name);
|
|
bot_data.update(43, {
|
|
...test_bot,
|
|
full_name: "New Bot 1",
|
|
});
|
|
bot = bot_data.get(43);
|
|
assert.equal("New Bot 1", bot.full_name);
|
|
|
|
const change_owner_event = {
|
|
owner_id: fred.user_id,
|
|
};
|
|
bot_data.update(43, {...test_bot, ...change_owner_event});
|
|
|
|
bot = bot_data.get(43);
|
|
assert.equal(bot.owner_id, fred.user_id);
|
|
|
|
bot_data.update(43, {...test_bot, is_active: false});
|
|
assert.ok(!bot_data.get(43).is_active);
|
|
|
|
bot_data.update(43, {...test_bot, is_active: true});
|
|
assert.ok(bot_data.get(43).is_active);
|
|
})();
|
|
|
|
(function test_embedded_bot_update() {
|
|
bot_data.add(test_embedded_bot);
|
|
const bot_id = 143;
|
|
const services = bot_data.get_services(bot_id);
|
|
assert.equal("12345678", services[0].config_data.key);
|
|
bot_data.update(bot_id, {
|
|
...test_embedded_bot,
|
|
services: [{config_data: {key: "87654321"}, service_name: "embedded bot service"}],
|
|
});
|
|
assert.equal("87654321", services[0].config_data.key);
|
|
assert.equal("embedded bot service", services[0].service_name);
|
|
})();
|
|
|
|
(function test_all_user_ids() {
|
|
const all_ids = bot_data.all_user_ids();
|
|
all_ids.sort();
|
|
assert.deepEqual(all_ids, [143, 314, 42, 43]);
|
|
})();
|
|
|
|
(function test_delete() {
|
|
let bot;
|
|
|
|
bot_data.add({...test_bot, is_active: true});
|
|
|
|
bot = bot_data.get(43);
|
|
assert.equal("Bot 1", bot.full_name);
|
|
assert.ok(bot.is_active);
|
|
bot_data.del(43);
|
|
bot = bot_data.get(43);
|
|
assert.equal(bot, undefined);
|
|
})();
|
|
|
|
(function test_get_all_bots_for_current_user() {
|
|
bot_data.add({...test_bot, user_id: 44, owner_id: me.user_id, is_active: true});
|
|
bot_data.add({
|
|
...test_bot,
|
|
user_id: 45,
|
|
email: "bot2@zulip.com",
|
|
owner_id: me.user_id,
|
|
is_active: true,
|
|
});
|
|
bot_data.add({
|
|
...test_bot,
|
|
user_id: 46,
|
|
email: "bot3@zulip.com",
|
|
owner_id: fred.user_id,
|
|
is_active: true,
|
|
});
|
|
|
|
const bots = bot_data.get_all_bots_for_current_user();
|
|
|
|
assert.equal(bots.length, 2);
|
|
assert.equal(bots[0].email, "bot1@zulip.com");
|
|
assert.equal(bots[1].email, "bot2@zulip.com");
|
|
})();
|
|
|
|
(function test_get_number_of_bots_owned_by_user() {
|
|
const bots_owned_by_user = bot_data.get_all_bots_owned_by_user(3);
|
|
|
|
assert.equal(bots_owned_by_user[0].email, "bot3@zulip.com");
|
|
})();
|
|
});
|