|
8 | 8 | from typing import Any, Dict
|
9 | 9 | from unittest import mock
|
10 | 10 |
|
| 11 | +from zulip_bots.finder import metadata |
11 | 12 | from zulip_bots.lib import BotHandler
|
12 | 13 | from zulip_botserver import server
|
13 | 14 | from zulip_botserver.input_parameters import parse_args
|
@@ -273,6 +274,37 @@ def test_load_lib_modules(self) -> None:
|
273 | 274 | ).as_posix()
|
274 | 275 | module = server.load_lib_modules([path])[path]
|
275 | 276 |
|
| 277 | + @mock.patch("zulip_botserver.server.app") |
| 278 | + @mock.patch("sys.argv", ["zulip-botserver", "--config-file", "/foo/bar/baz.conf"]) |
| 279 | + def test_load_from_registry(self, mock_app: mock.Mock) -> None: |
| 280 | + packaged_bot_module = mock.MagicMock(__version__="1.0.0", __file__="asd") |
| 281 | + packaged_bot_entrypoint = metadata.EntryPoint( |
| 282 | + "packaged_bot", "module_name", "zulip_bots.registry" |
| 283 | + ) |
| 284 | + bots_config = { |
| 285 | + "packaged_bot": { |
| 286 | + |
| 287 | + "key": "value", |
| 288 | + "site": "http://localhost", |
| 289 | + "token": "abcd1234", |
| 290 | + } |
| 291 | + } |
| 292 | + |
| 293 | + with mock.patch( |
| 294 | + "zulip_botserver.server.read_config_file", return_value=bots_config |
| 295 | + ), mock.patch("zulip_botserver.server.lib.ExternalBotHandler", new=mock.Mock()), mock.patch( |
| 296 | + "zulip_bots.finder.metadata.EntryPoint.load", |
| 297 | + return_value=packaged_bot_module, |
| 298 | + ), mock.patch( |
| 299 | + "zulip_bots.finder.metadata.entry_points", |
| 300 | + return_value=(packaged_bot_entrypoint,), |
| 301 | + ): |
| 302 | + server.main() |
| 303 | + |
| 304 | + mock_app.config.__setitem__.assert_any_call( |
| 305 | + "BOTS_LIB_MODULES", {"packaged_bot": packaged_bot_module} |
| 306 | + ) |
| 307 | + |
276 | 308 |
|
277 | 309 | if __name__ == "__main__":
|
278 | 310 | unittest.main()
|
0 commit comments