Commit graph

412 commits

Author SHA1 Message Date
Robert Hönig bda4b74c50 mention bot: Add fixture for invalid api key test.
This makes the mention bot tests no longer rely on an
internet connection to succeed.
2018-02-06 15:27:45 +01:00
Robert Hönig 4ed31eb6fd baremetrics bot: Add fixture for invalid api key test.
This makes the baremetrics bot tests no longer rely on an
internet connection to succeed.
2018-02-06 15:27:45 +01:00
AmAnAgr acf45ea4ef converter: Get test coverage to 100%
Fixes #122
2018-02-01 16:13:54 -05:00
Viraat Chandra d9fca54998 bots: Fix test failure for Baremetrics bot. 2018-01-24 11:19:44 +01:00
fredfishgames 3cbb16722d zulip_bots: Migrate tictactoe bot to new game_handler. 2018-01-22 11:30:31 -05:00
fredfishgames 3a438cafa9 zulip_bots: Migrate connect_four bot to new game_handler. 2018-01-22 11:30:31 -05:00
fredfishgames ec5be8fc7e zulip_bots: Consolidate game-playing bots. 2018-01-22 11:30:31 -05:00
Viraat Chandra 2f429fcb86 zulip_bots: Add test for create-plan command of Baremetrics bot. 2018-01-16 12:24:26 -05:00
Viraat Chandra 94f82dfe4c zulip_bots: Add feature create-plan to Baremetrics bot. 2018-01-16 12:24:26 -05:00
Viraat Chandra e32336eb6e Improve test coverage for Yoda bot. 2018-01-12 07:35:38 -05:00
Viraat Chandra fd97ffce77 Improve test coverage for Mention bot. 2018-01-12 07:35:38 -05:00
Viraat Chandra bffb8d0e16 Improve test coverage for Baremetrics bot. 2018-01-12 07:35:38 -05:00
rht da4b830571 bots: Init interrealm bridge bot. 2018-01-12 07:15:23 -05:00
Steve Howell 480c953b98 virtual_fs: Add test_sample_conversation(). 2018-01-10 16:54:05 -05:00
Steve Howell 5be72288db virtual_fs: Make sample_conversation() a list of tuples.
It's nice to see the requests and replies as separate strings
when you're reading the code.
2018-01-10 16:54:05 -05:00
Steve Howell f8d51fc9d1 virtual_fs: Remove help commands from the sample conversation. 2018-01-10 16:54:05 -05:00
Steve Howell 820e949faf virtual_fs: Remove fs_sample_conversation().
We already have "help" for specific commands, so the
fs_sample_conversation() feature was mostly redundant.
2018-01-10 16:54:05 -05:00
Steve Howell 4b9e3d655f virtuals_fs: Add test for sample_conversation. 2018-01-10 16:54:05 -05:00
Steve Howell 917bd82019 bot tests: Extract get_reply_dict() test helper. 2018-01-10 16:54:05 -05:00
Steve Howell 88f6ddefb2 virtual_fs: Fix bug with "rmdir" command.
In python3, if you removed a directory that files within it,
you would get an error saying "dictionary changed size
during iteration."

The fix is to list-ify the keys before iterating over them (and
popping keys from the dictionary).
2018-01-09 09:21:30 -05:00
Eeshan Garg e20b754498 zulip_bots: Use package_data instead of MANIFEST.in.
This commit removes generate_manifest.py and package data files
are now included using the package_data kwarg to setup().

This is because, in certain situations, MANIFEST.in is a bit
finicky. For instance installing a package using:

python setup.py install

doesn't include files specified in MANIFEST.in, while using

pip install ./zulip_bots

does. package_data doesn't pose this problem, ergo it's better
for us.
2018-01-08 18:28:50 -03:30
Xavier Cooney 1de704394a interactive bots: Create idonethis bot. 2018-01-08 10:46:52 +01:00
Eeshan Garg 3030c73060 packages: Release 0.4.0. 2018-01-06 18:28:35 -03:30
Robert Hönig c36b8d1199 packaging: Include bot .conf files in zulip_bots. 2018-01-06 16:58:50 -03:30
Robert Hönig a4facb4249 Rename followup.config to followup.conf. 2018-01-06 16:58:50 -03:30
Robert Hönig 78d7f9694e zulip_bots: Move six imports. 2018-01-06 16:39:52 +01:00
Robert Hönig 0893a5f61e zulip_bots setup.py: Install deps from the bots' requirements.txt files.
This makes it straightforward to add dependencies for a bot,
and works around https://github.com/pypa/pip/issues/4957.
2018-01-06 16:39:52 +01:00
Robert Hönig 56a9cbe5af Make bot provisioning script install dependencies globally.
Previously, a bot's dependencies were installed within the
bot's directoy, which is unconventional and doesn't work with tests.
2018-01-06 16:39:52 +01:00
Robert Hönig e48a958780 request_test_lib.py: Move from mock to unittest.mock.
This commit changes 'Mock.assert_called()' to 'assert Mock.called'.
This is needed because in unittest.mock, assert_called() is only
supported in Python >=3.6.
2018-01-06 16:39:52 +01:00
Robert Hönig b46a079804 zulip_bots: Move from mock to unittest.mock in most files. 2018-01-06 16:39:52 +01:00
Robert Hönig ae76aa8f72 bots: Add requirements not captured by pipreqs. 2018-01-06 16:39:52 +01:00
Robert Hönig fd51735bfc Add requirements.txt for each bot. 2018-01-06 16:39:52 +01:00
Robert Hönig f4ee3d4009 Fix mypy errors. 2018-01-04 17:19:02 +01:00
Robert Hönig eb02e08fb7 yoda bot: Just import the requests module.
This removes the unconventional check for the
existence of the requests module in the yoda
bot to bring it in line with other bots.
2018-01-04 10:34:16 -05:00
Robert Hönig f6f09202ac baremetrics bot: Quit on invalid API key. 2018-01-04 10:34:16 -05:00
Robert Hönig c86e62a06a link_shortener bot: Quit on invalid API key. 2018-01-04 10:34:16 -05:00
Robert Hönig bed2c6c9ea mention bot: Quit on invalid API key. 2018-01-04 10:34:16 -05:00
Robert Hönig 57342072dc salesforce bot: Quit on invalid API key. 2018-01-04 10:34:16 -05:00
Robert Hönig 8417dbf154 weather bot: Quit bot on invalid API key. 2018-01-04 10:34:16 -05:00
Robert Hönig 28120784ff google_translate bot: Add test for invalid api key. 2018-01-04 10:34:16 -05:00
Robert Hönig d11d31d795 google_translate bot: Simplify API key check. 2018-01-04 10:34:16 -05:00
Robert Hönig b19c0f6e29 giphy bot: Update 403 fixture. 2018-01-04 10:34:16 -05:00
Robert Hönig 5d4a352e2c giphy bot: Fix check for invalid API key.
The previous check didn't notice invalid API keys.
This commit also makes giphy quit on any connectivity
issues during initialization.
2018-01-04 10:34:16 -05:00
Robert Hönig ba530e2341 giphy bot: Use bot_handler.quit(). 2018-01-04 10:34:16 -05:00
YJDave 299d04080e doc: Remove markdown includes {!running-bot.md!} from bot docs. 2018-01-03 09:05:54 -05:00
Privisus 08bd395658 interactive bots: Create monkeytest.it bot. 2018-01-02 17:14:13 -03:30
neiljp (Neil Pilgrim) 1fd4dfc86e bot testing: Amend StubBotHandler.get_config_info to return {}.
This ensures the return type matches the annotated type, which
matches the return type of ExternalBotHandler.
2018-01-02 14:05:33 -05:00
neiljp (Neil Pilgrim) 9853d85fb7 bot testing: Improve checking of fixtures in mock_http_conversation.
This ensures required fields are present in the fixture dict/json,
improving testing & allowing file to pass mypy with strict-optional.
2018-01-02 14:05:33 -05:00
neiljp (Neil Pilgrim) 88ae9d04ee mypy: Amend import_module_from_source, to pass with strict-optional.
Including additional error-reporting.
2018-01-02 14:05:33 -05:00
neiljp (Neil Pilgrim) 486f1d2f48 mypy: Improve typing of zulip_bots/lib.py, to pass with strict-optional. 2018-01-02 14:05:33 -05:00
neiljp (Neil Pilgrim) 6489f78edd mypy: Improve test_dialogflow.py, to pass with strict-optional. 2018-01-02 14:05:33 -05:00
neiljp (Neil Pilgrim) 1928841256 mypy: Amend chess bot, to pass with strict-optional. 2018-01-02 14:05:33 -05:00
neiljp (Neil Pilgrim) 6cd09e7396 mypy: Amend youtube bot, to pass with strict-optional.
Including switch to Optional from Union[None, T] for consistency.
2018-01-02 14:05:33 -05:00
neiljp (Neil Pilgrim) b4bbd83335 mypy: Amend witai bot, to pass with strict-optional.
Including additional error-handling, associated with None-checks.
2018-01-02 14:05:33 -05:00
fredfishgames 08bfe9d8c7 interactive bots: Create Salesforce bot. 2018-01-02 14:00:41 -05:00
Viraat Chandra d4500a3b7a zulip_bots: Add test for get_mentions method of Mention bot. 2018-01-02 10:56:59 -05:00
Viraat Chandra 48e365195e zulip_bots: Add test for get_alert_id method of Mention bot. 2018-01-02 10:56:59 -05:00
Viraat Chandra 3d05ed53e5 Parse data field in mock http response fixture. 2018-01-02 10:56:59 -05:00
Viraat Chandra 4d3e255e6d zulip_bots: Add test for get_account_id method of Mention bot. 2018-01-02 10:56:59 -05:00
Viraat Chandra 67b3529140 zulip_bots: Cleaned up test code for Mention bot. 2018-01-02 10:56:59 -05:00
Viraat Chandra 606b7f8adf zulip_bots: Add better test for list-subscriptions command of Baremetrics bot. 2017-12-31 10:16:48 -05:00
Viraat Chandra e2a9a229a3 zulip_bots: Add better test for list-customers command of Baremetrics bot. 2017-12-31 10:16:48 -05:00
Viraat Chandra 777f6c55f8 zulip_bots: Add better test for list-plans command of Baremetrics bot. 2017-12-31 10:16:48 -05:00
Robert Hönig 9bf64c0c21 youtube bot: Replace sys.exit() with bot_handler.quit(). 2017-12-31 07:12:19 -05:00
Robert Hönig ff65666ac8 Add quit() function to ExternalBotHandler.
bot_handler.quit() should be used whenever a bot
wishes to terminate. This allows a flexible reaction
suited to the bot's environment: For external bots,
sys.exit() will be called, whereas for embedded bots,
different code can be executed.
2017-12-31 07:12:19 -05:00
Viraat Chandra 9e73ddd292 zulip_bots: Check API key on initialization for Weather bot. 2017-12-30 17:59:23 +01:00
Viraat Chandra 524804fd2c zulip_bots: Remove comments from config file in Mention Bot. 2017-12-30 17:51:10 +01:00
Viraat Chandra 5ccbe6e6bd zulip_bots: Reformat code for Mention Bot file mention.py. 2017-12-30 17:51:10 +01:00
Viraat Chandra adbda6d2f2 zulip_bots: Check Access Token on initialization for Mention bot. 2017-12-30 17:51:10 +01:00
Viraat Chandra 9ac0628452 zulip_bots: Add link to get API Key in Link Shortener Bot Documentation. 2017-12-30 17:41:31 +01:00
Viraat Chandra 6a089f2217 zulip_bots: Fixed failing tests for Link Shortener Bot.
This uses a custom test_bot_responds_to_empty_message()
implementation for the link_shortener bot, because it requires
mocking config info.
2017-12-30 17:41:31 +01:00
Viraat Chandra db0e88a1b9 zulip_bots: Check API key on initialization for link_shortener bot. 2017-12-30 17:41:31 +01:00
Shivam Gera 79b32f6c05 Update google_translate.py 2017-12-30 16:04:29 +01:00
Viraat Chandra 8e800d545b zulip_bots: Check API key on initialization for Baremetrics bot. 2017-12-29 23:33:10 +01:00
Marco Burstein f719964487 bots: Create Jira Bot.
Users can get an issue from Jira Bot using it's key, and get a response
like the following:

    Issue BOTS-13: Create Jira Bot
     - Type: Task
     - Creator: skunkmb
     - Project: Bots
     - Priority: Medium
     - Status: To Do

Users can create or edit an issue with Jira Bot with its
 - summary,
 - project,
 - type,
 - description,
 - assignee,
 - priority,
 - labels, and
 - due date
2017-12-29 11:21:18 -05:00
Viraat Chandra d8c6cb7c0a interactive bots: Create Baremetrics bot. 2017-12-29 11:50:33 +01:00
Privisus b80a0cb297 interactive bots: Create Merels bot. 2017-12-29 10:48:52 +01:00
Viraat Chandra a2557ccbe6 interactive bots: Create Mention bot. 2017-12-28 16:33:00 -05:00
Shivam Gera 6121002b35 Update giphy.py 2017-12-28 16:22:20 -05:00
Robert Hönig c3348750d9 zulip_bots: Supply bots with 'full_content' of message.
This adds the 'full_message' field to the message dict
passed to bots.

Fixes #138.
2017-12-26 08:17:26 -05:00
Robert Hönig 79627002d6 zulip_bots: Add test for run_message_handler_for_bot(). 2017-12-26 08:17:26 -05:00
Robert Hönig 464b2612cc zulip_bots: Make FakeClient accept arbitrary arguments. 2017-12-26 08:17:26 -05:00
sColin16 b9905e5fc8 Game Adapter Class: Allow superusers to moderate bots. 2017-12-25 09:43:53 -05:00
sColin16 2c8b369d14 interactive bots: Extracted GameAdapter Class. 2017-12-25 09:43:53 -05:00
sColin16 35829218b7 interactive bots: Create connect four bot. 2017-12-23 16:02:50 -03:30
neiljp (Neil Pilgrim) 7d493d64c5 mypy: Remove type ignore in generate_manifest.py and simplify.
mypy 0.560 incorporates PR python/typeshed#1748, allowing extended
type-checking of cmd and log components of distutils such as this.
2017-12-21 18:43:42 -05:00
fredfishgames 7acf2c396b Update dialogflow bot to show user friendly messages 2017-12-19 16:34:13 -05:00
Nikhil Kumar Mishra d3916b945d github_detail: Limit bot to 5 requests per message.
Fixes #172 .
2017-12-19 14:41:39 -05:00
Jerry Zhang ce8979df7a interactive bots: Improve documentation for tictactoe bot. 2017-12-18 10:38:13 -05:00
Marco Burstein 878691a745 bots: Create Wit.ai Bot.
Wit.ai Bot communicates with the Wit.ai API. It can be configured with
any Wit.ai token and allows for setting up a custom handler function to
handle Wit.ai responses.
2017-12-18 10:32:05 -05:00
Robert Hönig b306324bfa zulip_bots: Make BotTestCase the only helper library.
Renames StubBotTestCase to BotTestCase and removes
legacy code for supporting both names.
2017-12-14 05:56:55 -05:00
Robert Hönig a475077da9 zulip_bots: Use utf-8 when reading fixtures.
This prevents issues with Python using platform
specific encodings, such as CP1252 on Windows.
2017-12-14 05:56:55 -05:00
neiljp (Neil Pilgrim) ced3a97b3f TicTacToe: Extract sanitized_move from TicTacToeGame as coords_from_command. 2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) c6e9beb2a1 TicTacToe: Rename & simplify some functions.
Rename:
* win_conditions -> contains_winning_move
* check_validity -> is_valid_move
* sanitize_move -> sanitized_move
2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) a72764d7b8 TicTacToe: Improve encapsulation of board data in TicTacToeGame. 2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) aadf639e5e TicTacToe: Remove python2 compatibility imports 2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) cff3e30734 TicTacToe: Coalesce & refactor response messages. 2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) a7f7994302 TicTacToe: Use game objects instead of calling TicTacToeGame with self. 2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) b1dba0bd30 TicTacToe: Move tictactoe() text from game-logic to handle_message.
Also remove early debugging logic.
2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim) 6d4b205595 TicTacToe: Use simple comparison instead of overly-complex first_time(). 2017-12-12 17:11:29 -06:00