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
Xavier Cooney
1de704394a
interactive bots: Create idonethis bot.
2018-01-08 10:46:52 +01:00
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
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
neiljp (Neil Pilgrim)
d10601b554
TicTacToe: Refactor new-game handling into existing section.
...
Also extend storage-update section; all related storage.put calls
are now together.
2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim)
33e8517b87
TicTacToe: Decouple TicTacToeGame.tictactoe() string from move result.
...
This allows the storage update to be refactored into one block before
sending the result text.
2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim)
5843801d13
TicTacToe: Simplify superfluous initial command logic.
2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim)
969b984b80
TicTacToe tests: Extend tests to end of game lose condition & quit.
2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim)
62d781a53e
TicTacToe tests: Extend tests to end of game draw condition & quit.
2017-12-12 17:11:29 -06:00
neiljp (Neil Pilgrim)
d686a3b337
bots (minor): Simplify test_link_shortener.py further.
...
* Rename test names to be more descriptive.
* Inline messages/response test.
2017-12-12 13:57:55 -06:00
Marco Burstein
e9aa94f81c
mypy: Add annotations for Link Shortener Bot.
...
Based on work started by @skunkmb.
2017-12-12 13:57:55 -06:00
Steve Howell
f69d71c3b1
bots: Remove unneeded __future__ imports.
2017-12-12 07:32:14 -06:00
Steve Howell
fd069dff82
lint: Require python3 shebangs.
...
This commit was originally from @fredfishgames, but it
needed a big rebase due to use letting it sit too long.
Also, we decided not to have shebangs at the top of test
files.
2017-12-12 07:14:16 -06:00
neiljp (Neil Pilgrim)
28687f18ca
mypy: Add --disallow-any=generics & extend typing accordingly.
...
Also reset typing of ExternalBotHandler to Any after discussion.
2017-12-11 20:14:00 -06:00
fredfishgames
424a4bb631
add _ to googletranslate and googlesearch
2017-12-11 13:15:43 -06:00
fredfishgames
657c6d7b9c
interactive bots: Create DialogFlow bot.
2017-12-11 13:15:43 -06:00
Sivagiri Visakan
277b384379
bots: Add 100% test coverage to define bot.
2017-12-11 12:49:43 -06:00
Sivagiri Visakan
d663dd2f49
bots: Make wikipedia bot return an error message.
...
Previously the Wikipedia bot was replying with `null` in case of an error.
A change has been made to return an error message if an error occurs.
2017-12-11 12:49:43 -06:00
Steve Howell
fe3b995590
Fix KeyboardInterrupt handler in terminal.py.
...
The exception name was wrong before.
2017-12-11 11:07:28 -06:00
Marco Burstein
3c66894aff
incrementor: Clean up type annotation/conversion.
...
This adds mypy annotations, and we also make the type
conversions in `handle_message` be a little more clear.
(@showell helped clean up this commit a bit)
2017-12-11 10:59:40 -06:00
Steve Howell
b4ff5230a9
mypy: Fix StateHandler annotations.
...
`get` and `put` deal with arbitrary JSON-serializable types,
so `Text` was an innacurate annotation.
2017-12-11 10:35:03 -06:00
Steve Howell
7bc79a8911
Extract StubBotTestCase.make_request_message().
...
This de-duplicates some code and also makes it a bit
easier in the future to override how we create messages.
2017-12-11 09:39:48 -06:00
Steve Howell
5686d603ef
minor: Clean up test_lib imports.
2017-12-11 09:34:11 -06:00
Steve Howell
971b48cbfc
Decouple mock_request_exception from StubBotTestCase.
...
Tests that need mock_request_exception can just import it
directly now.
2017-12-11 09:26:36 -06:00
Steve Howell
1dbb73a1c8
Extract test_file_utils.py.
...
This isolates all the code that depends on our current
directory structure, and it de-clutters test_lib.py a bit.
2017-12-11 09:23:24 -06:00
Steve Howell
5034220829
bots: Extract request_test_lib.py.
...
The new module mocks out calls to the requests library, which
is used by many of our bots that use third party services.
Mocking of requests.py is mostly orthogonal to our other
testing concerns.
2017-12-11 09:05:06 -06:00
Steve Howell
fb8ee29bc1
zulip_bots/test_lib.py: Remove unneeded imports/shebang.
2017-12-11 08:26:50 -06:00
Steve Howell
b4705c2343
bot tests: Remove BotTestCase.
...
All of the functionality of BotTestCase was either directly
moved to StubBotTestCase or replaced by similar functions,
and all bots have been ported to StubBotTestCase.
2017-12-11 08:26:50 -06:00
sColin16
6109bd198a
interactive bots: Improve wikipedia bot.
2017-12-11 08:05:09 -06:00
sColin16
1221c7107f
test_lib.py: Add mock_request_exception.
2017-12-11 08:05:09 -06:00
Steve Howell
0a05a28e34
test_virtual_fs.py: Use StubBotTestCase.
...
We use verify_dialog() now, and we also have a different
default email.
2017-12-11 08:00:02 -06:00
Steve Howell
a7f6c0f142
Add display_recipient to StubBotTestCase.verify_dialog.
2017-12-11 07:57:36 -06:00
Marco Burstein
3c794b384b
mypy: Add annotations for Yoda Bot.
2017-12-11 07:33:16 -06:00
Marco Burstein
8f64405bae
mypy: Add annotations for Wikipedia Bot.
2017-12-11 07:26:43 -06:00
Marco Burstein
0467f83314
mypy: Add annotations for xkcd Bot.
2017-12-11 07:26:43 -06:00
neiljp (Neil Pilgrim)
e01ecc9fde
test_virtual_fs.py: Remove unneeded imports and shebang.
2017-12-11 07:16:54 -06:00
neiljp (Neil Pilgrim)
060211a131
bots: Simplify test_yoda.py.
2017-12-10 18:16:40 -08:00
neiljp (Neil Pilgrim)
20cb236fdd
bots: Simplify test_weather.py.
2017-12-10 18:16:27 -08:00
neiljp (Neil Pilgrim)
84d92337be
bots: Simplify test_googletranslate.py.
...
Also add sender_full_name parameter in StubBotTestCase.verify_reply().
2017-12-10 16:26:03 -08:00
neiljp (Neil Pilgrim)
c8824cb2e5
bots: Simplify test_link_shortener.py.
2017-12-10 14:04:00 -08:00
Steve Howell
f8cefc5352
minor: Fix imports in test_xkcd.py.
...
We no longer need the `future` imports and we can
use `StubBotTestCase` now.
2017-12-10 09:25:12 -06:00
Marco Burstein
700ce6a673
bots: Create Chess Bot.
...
Chess Bot is a bot that allows you to play chess against either another
user or the computer. Use `start with other user` or
`start as <color> with computer` to start a game.
In order to play against a computer, `chess.conf` must be set with the
key `stockfish_location` set to the location of the Stockfish program on
this computer.
Use `bot_handler.storage` to preserve game state across messages.
(@showell also did minor work here to have the test use verify_dialog()
and have the bot respond to empty messages)
2017-12-10 09:14:32 -06:00
Steve Howell
2fa677a3e0
bot tests: Extract StubBotTestCase._get_handlers().
...
This is mostly a pure refactoring, but it also ensures
that `initialize` is called in a consistent way by most
of our test helpers. (This didn't cause problems before,
since some bots don't require initialization.)
2017-12-10 06:35:51 -08:00
Steve Howell
01f8366bea
Improve test_bot_responds_to_empty_message().
...
This fixes the TODO of inlining get_response(), and it
makes a slightly tighter assertion about the response.
2017-12-10 06:20:19 -08:00
Nikhil Mishra
81b207795f
followup bot: Fix help response and configure streams.
...
From @showell:
We had a PR here with lots going on, and the commits weren't
very well organized, and then there were some tricky merge
conflicts from another PR. So I just squashed them all into
one commit.
What this does:
* allow you to configure your followup stream
* provide help in followup stream
* add more testing to followup stream
* add get_response() helper for tests
Fixes #173
Fixes #174
2017-12-10 05:23:35 -08:00
Kai Chen
1cdb0bffe6
mypy: Add annotations for encrypt.
2017-12-10 04:59:27 -08:00
Kai Chen
b382eacd18
mypy: Add annotations for define.
2017-12-10 04:59:27 -08:00
Kai Chen
d33e9b9d92
mypy: Add annotations for converter.
2017-12-10 04:59:27 -08:00
neiljp (Neil Pilgrim)
31853cfa80
Add test_bot_responds_to_empty_message to StubBotTestCase.
2017-12-09 15:06:41 -08:00
Sivagiri Visakan
6f9d010ed3
bots: Refactor Youtube bot.
2017-12-09 03:56:33 -08:00
Ivche1337
f947ff44f8
wikipedia bot: Return up to three links from wikipedia for keyword.
...
This change includes updates to the docs and tests as well.
2017-12-08 16:40:16 -08:00
Ivche1337
2597de87ef
wikipedia bot: Fix page-not-found error.
2017-12-08 16:40:16 -08:00
fredfishgames
ab9128d939
mypy: Add annotations for weather.
2017-12-08 14:55:35 -08:00
fredfishgames
f7f54d159f
mypy: Add annotations for virtual_fs.
2017-12-08 14:55:35 -08:00
fredfishgames
a7f9c6e743
Fixed giphy warning message in bot tests
2017-12-08 14:52:44 -08:00
fredfishgames
a026c48278
Added more googlesearch tests
2017-12-08 14:52:44 -08:00
fredfishgames
841efcde80
Added too many argument test for googletranslate bot.
2017-12-08 14:52:44 -08:00
neiljp (Neil Pilgrim)
d4284f88f9
XKCD: Adjust tests to use loops, inline responses, remove comments.
2017-12-08 11:21:02 -08:00
neiljp (Neil Pilgrim)
d97401df86
XKCD: Migrate tests to use verify_reply.
2017-12-08 11:21:02 -08:00
neiljp (Neil Pilgrim)
6c7a03e37a
XKCD: Split single test into multiple tests.
2017-12-08 11:21:02 -08:00
fredfishgames
9492495f4b
Removed self: Any from googlesearch
2017-12-08 10:48:42 -08:00
Steve Howell
cb849611c8
bot tests: Add sender_full_name to verify_dialog.
2017-12-08 08:51:57 -08:00
fredfishgames
4c4a60d90f
Remove self: Any
mypy annotations
2017-12-08 08:46:21 -08:00
Steve Howell
5f70e17259
bots: Simplify test_github_details.py.
2017-12-07 20:15:33 -08:00
Steve Howell
f421e90a64
bots: Simplify test_encrpyt.py.
2017-12-07 20:15:33 -08:00
Steve Howell
7285affbc4
bots: Simplify test_define.py.
2017-12-07 20:15:33 -08:00
Steve Howell
2c42b0e42e
minor: Clean up test_converter.py.
...
This removes some imports and uses StubBotTestCase
and verify_dialog.
2017-12-07 20:15:33 -08:00
Steve Howell
6f0d5239e8
test_googlesearch: Remove self: Any
annotations.
...
We can avoid `Any` annotations for `self`, since it is more
noise than signal and since the type of self is already
implicit from how Python classes work.
2017-12-07 19:40:32 -08:00
Steve Howell
011095018b
Simplify TestGoogleSearchBot.
...
We use verify_reply() for all the tests and de-duplicate
help_message by just having a single test validate both
the '' and 'help' inputs.
2017-12-07 19:40:32 -08:00
Steve Howell
c01fbe02e1
Remove unneeded imports in test_googlesearch.py.
2017-12-07 19:40:32 -08:00
fredfishgames
9d5fbc2b5b
mypy: Add annotations for help.
2017-12-07 19:12:39 -08:00
fredfishgames
40c09b4b16
mypy: Add annotations for googlesearch.
2017-12-07 19:12:39 -08:00
fredfishgames
b7dbe7af41
mypy: Add annotations for github_detail.
2017-12-07 19:12:39 -08:00
fredfishgames
1b16b54780
interactive bots: Create googletranslate bot.
2017-12-07 06:18:01 -08:00
Steve Howell
7a963916f2
bot tests: Use StubBotTestCase in test_giphy.py.
...
For three of the tests we use the simpler verify_reply()
API. For the 403 test, we don't need to rely on setUp
any more to simulate everything for us, and we do more
surgical patching.
2017-12-06 20:29:36 -08:00
Steve Howell
87662da139
bot tests: Add StubBotTestCase.mock_config_info().
...
We now auto-initialize bots in verify_reply() and have
a mock_config_info() helper that can override the new
StubBotHandler.get_config_info().
2017-12-06 20:29:36 -08:00
Steve Howell
be9570c9c4
minor: Remove unused imports in test_giphy.py.
2017-12-06 20:29:36 -08:00
Jerry Zhang
77e9be0783
bots/giphy: Use Python 3 type mypy annotations.
2017-12-07 00:22:57 -03:30
Jerry Zhang
95b8ea4751
bots/followup: Use Python 3 type mypy annotations.
2017-12-07 00:22:57 -03:30
Robert Hönig
1102057e35
zulip_bots: Make typing import work in Python 3.5.
...
See https://github.com/python/mypy/issues/1838 .
2017-12-06 12:49:46 +01:00
Skunk
29e22c2c0a
bots: Create Link Shortener Bot.
...
Create Link Shortener Bot using the goo.gl Link Shortening API.
Link Shortener Bot can be mentioned in a conversation, and it will
respond with shortened, goo.gl links for every URL in the message.
For example,
> @link_shortener_bot @johnsmith Check out this file:
> https://github.com/zulip/python-zulip-api/blob/master/zulip_bots/
and Link Shortener Bot would respond
> https://github.com/zulip/python-zulip-api/blob/master/zulip_bots/ :
> https://goo.gl/Mt5z3c
In order to use Link Shortener Bot, an API key for goo.gl must be set
in `link_shortener.conf` in the `link_shortener` folder.
2017-12-05 06:08:30 -08:00
Rohitt Vashishtha
8cd310493a
mypy: Annotate helloworld bot.
2017-12-04 07:27:20 -08:00
fredfishgames
b157b817ae
interactive bots: Improve googlesearch bot.
2017-12-03 14:03:47 -08:00
Skunk
c2c79cf989
tests: Refactor mock_http_conversation
with deduplicating.
...
Move `get_response` inside of `mock_http_conversation`, as it is not
used anywhere else. Also create `assert_called_with_fields`.
`assert_called_with_fields` calls the `assert_called_with` method of a
mock object by using an HTTP request and a list of fields to look for.
2017-12-03 10:26:42 -08:00
Skunk
bd0462f7b5
tests: Extend mock_http_conversation
to support POST requests.
2017-12-03 10:26:42 -08:00
Steve Howell
fab9d46f93
Simplify test_wikipedia.py.
...
We now use StubBotTestCase.verify_reply().
2017-12-01 13:42:59 -08:00
Steve Howell
16e50e991b
bot tests: Add StubBotTestCase.verify_reply().
2017-12-01 13:42:59 -08:00
Steve Howell
db08586df6
Promote mock_http_conversations to its superclass.
2017-12-01 13:42:59 -08:00
Steve Howell
3f79136dd7
bot tests: Introduce transcript
in StubBotHandler
.
...
This sets us up to validate more aspects of the conversation,
and it also introduces the more rigorously checked
`unique_response` helper.
(This also fixes a minor copy/paste error from a prior commit
that was harmless.)
2017-12-01 13:42:59 -08:00
Steve Howell
c02e141f7f
bot tests: Use StubBotTestCase for helloworld bot.
2017-12-01 07:00:20 -08:00
Steve Howell
4ede1a5564
bot tests: Use StubBotTestCase for help bot.
2017-12-01 07:00:20 -08:00
Steve Howell
6087cf95e2
bot tests: Use StubBotTestCase in tictactoe.
...
Note that we now only have one conversation, since the case
of sending to streams has the same mechanics as sending PMs.
We'll eventually want a separate test to drive out differences
in the actual mechanics of the reply.
2017-12-01 07:00:20 -08:00
Steve Howell
77dbe92ad8
minor: Remove some dead code in BotTestCaseBase.
2017-12-01 07:00:20 -08:00
Steve Howell
c0ceb9857f
Rewrite incrementor bot tests.
...
Using StubBotHandler makes it fairly easy to verify the key
feature of the incrementor bot, which is that it updates
messages sequentially.
2017-12-01 07:00:20 -08:00
Steve Howell
fc251460fa
bot tests: Eliminate BotTestCaseBase.
...
We now just put `test_bot_usage` in StubBotTestCase and have
BotTestCase inherit from that.
2017-12-01 07:00:20 -08:00
Steve Howell
205f7c16c7
Add StubBotTestCase and StubBotHandler.
...
We will start to use these for some of our bot test code.
2017-12-01 07:00:20 -08:00
Steve Howell
fe662ed145
bot tests: Split up mock_http_conversation().
...
This method had two pretty easy-to-separate concerns:
* find the fixture data using our directory conventions
* use the fixture data to simulate a real HTTP request
Part of the goal here is to make the extracted functions a
bit easier to use in other TestCase-based classes without
needing to subclass from BotTestCaseBase, which is kind of
complex with its setUp/tearDown.
2017-12-01 07:00:20 -08:00
Steve Howell
0a477b0736
Extract get_bot_message_handler().
2017-12-01 07:00:20 -08:00
neiljp (Neil Pilgrim)
39601d190c
bot lib tests: Add test_send_reply.
2017-11-29 15:56:30 -08:00
Steve Howell
efeac92d42
Add tools/test-lib.
...
This starts to add direct test coverage on
zulip_bots/zulip_bots/lib.py.
It is not yet integrated into tools/test-main.
2017-11-29 13:45:51 -08:00
neiljp (Neil Pilgrim)
3e135b8e1e
bot testing: Enable testing of multiple responses from single messages.
2017-11-29 10:05:46 -08:00
Abhijeet Kaur
91c4ff668d
bots: Clean up terminal.py for running bots directly.
...
Make terminal.py exit gracefully with a message.
Modify output bot reply for better understanding in multi-line
output.
2017-11-29 10:05:06 -08:00
Robert Hönig
2cb43256e0
zulip_bots: Get 100% test coverage for giphy bot.
2017-11-28 15:42:22 -08:00
Robert Hönig
93edededdd
zulip_bots: Use real Response object for mock_http_conversation().
2017-11-28 15:42:22 -08:00
Robert Hönig
41d8ffc20e
zulip_bots: Fix yoda bot response parsing.
2017-11-28 15:42:22 -08:00
Robert Hönig
d6a4c02ba5
Rename bot storage endpoint from state to storage.
2017-11-28 20:41:59 +01:00
Steve Howell
80e4ef9f72
Create terminal.py to run bots in the terminal.
...
This program replaces zulip_bot_output.py, which had
gotten a little out of date.
It should be able to simulate a terminal conversation for
all of our bots, including those that use "advanced" features:
third party config files: tested with giphy
message updates: tested with incrementor
storage: tested with virtual_fs and others
2017-11-28 10:52:13 -08:00
Steve Howell
536ba1843a
Add a command line option to run.py for bot config files.
...
Before this change, we were looking for config files in
default locations in source control, which is not a good
place to look for them. Now `run.py` and friends have a
command line argument where users can specify the config
files.
Note that the change to server.py is only a partial fix
to make it so that bots that don't use third party config
files won't crash. That program needs an overhaul, anyway.
2017-11-28 10:52:13 -08:00
Steve Howell
57c90ddca0
refactor: Extract display_config_file_errors().
...
This will be useful for handling errors with third party
config files.
2017-11-28 10:52:13 -08:00
Steve Howell
8a15452525
bots: Require bots_details in ExternalBotHandler.
...
This parameter was defaulting to a dictionary, which is
a classic Python pitfall.
2017-11-28 10:52:13 -08:00
Steve Howell
ef30261858
giphy: Make config_info an instance variable.
...
There was no reason to use a `global` here.
2017-11-28 10:52:13 -08:00
Robert Hönig
a75f1abc60
zulip_bots: Add -c shortcut for --config-file for zulip-run-bots.
2017-11-27 16:45:37 +01:00
Robert Hönig
ea6ddb2312
zulip_bots: Only cache storage.get(). Don't cache put().
2017-11-24 10:44:34 -08:00
Steve Howell
a32446f557
Report client.get_profile() errors nicely (e.g. API key).
...
This patch is particularly useful in the scenario that your
API key is wrong or out of date, but it's targeted more
generally at any error that `client.get_profile()` reports.
2017-11-22 11:15:00 -08:00
Steve Howell
043d963a99
Fail fast for bad connections with the API and bots.
...
The API has aggressive retry logic for connecting to a
server, which may make sense for situation where you have
connection blips or server restarts.
When you're first connecting to the API, however, connection
failures are almost certainly a sign of misconfiguration, so
now we fail fast.
The bot lib takes advantage of this API change by catching the
ZulipError exception and exiting gracefully.
2017-11-21 14:21:04 -08:00
Steve Howell
a19278da65
Handle configparser errors more gracefully.
2017-11-21 11:54:59 -08:00
Steve Howell
e216a29277
minor: Extract client_name local var.
2017-11-21 11:26:12 -08:00
Steve Howell
73ebd719b2
Handle missing config files gracefully.
...
Before this commit, you would get a traceback if you supplied
a non-existent filename for your config file. Now we exit
gracefully with a useful error message.
2017-11-21 10:32:45 -08:00
Steve Howell
f6440e5b65
Require --config-file and simplify command line usage.
...
We now require users to specify where their config file is
located, and we no longer default to ~/.zuliprc.
As part of this, we needed to make the "usage" more accurate
in the command line, which I mostly achieved by cutting out
unnecessary stuff.
2017-11-21 09:11:41 -08:00
derAnfaenger
940e1260b2
docs: Update outdated links.
2017-11-20 15:09:50 +01:00
derAnfaenger
2a74ad11c5
zulip_bots: Make StateHandler optional.
...
This has the convenient side-effect of making
the bot_handler.storage attribute read-only.
2017-11-18 08:58:47 -08:00