Commit graph

2193 commits

Author SHA1 Message Date
neiljp (Neil Pilgrim) d73fa0f50f test-bots: Add option to use pytest for running tests.
* Add pytest to requirements.txt
* Add pass-through option to run pytest in verbose mode
* Use various default pytest options
* Exclude merels bot for now
2018-06-09 14:13:18 -04:00
neiljp (Neil Pilgrim) 69fab99ba7 linter: Add check for incorrect use of inheritance in Bot test cases. 2018-06-09 12:49:49 -04:00
neiljp (Neil Pilgrim) 6cdb83ce72 bot tests: Adjust TestCase inheritance to avoid need to skip/filter.
Previously the test-bots script filtered out base-class tests from
BotTestCase. With this change, BotTestCase continues to inherit from
unittest.TestCase, but the default test_* methods previously in this
class are now in a new DefaultTests class, which does not. Instead, each
bot needs to inherit from BotTestCase and DefaultTests *explicitly*.

This avoids the need to filter out the base-class tests, which
simplifies the test-bots script, and may ease any migration to eg.
pytest.

The DefaultTests class does require some non-implemented methods which
BotTestCase provides.
2018-06-09 12:49:49 -04:00
Eeshan Garg c636a5ac49 pypi: Release 0.5.0. 2018-06-07 12:05:18 -02:30
Eeshan Garg 26bd90b260 zulip_bots: Display neat error message for missing bot dependencies.
We just moved the logic for installing bot dependencies from setup.py
to tools/provision. So bot dependencies are not automatically installed
anymore as a part of the base package. Now, if there is an import error
caused by missing dependency, we display a neat error message asking
the user to provision bot dependencies.
2018-06-06 13:23:16 -07:00
Eeshan Garg f69f7f41d0 zulip_bots/provision: Use subprocess and stop being --quiet.
The bot provisioning code was breaking due to pip.main not being
a function anymore. Also, I don't think we should pass the --quiet
option here. I felt it was good to have some visual information
about what deps were being installed, just in case if something
went wrong and there was a conflict, the user should be able to
see it.
2018-06-06 16:36:21 -02:30
novokrest df428b4821 dropbox_share: Add tests to increase coverage.
Increase tests coverage to 100%.
2018-06-05 21:34:04 -07:00
novokrest f808dfb2cc dropbox_share: Remove unreachable elif branch.
Remove unReachable `elif` branch from `dbx_command`
method with checking whether the command is equal
to `help` because this check is performed
at the beginning of the method.
2018-06-05 21:34:04 -07:00
neiljp (Neil Pilgrim) 97b2a12d21 matrix bridge: Adjust to python2-compatible type annotations. 2018-06-04 15:55:14 -07:00
neiljp (Neil Pilgrim) 2703d4c720 matrix bridge: Update & improve README.md. 2018-06-04 15:55:14 -07:00
neiljp (Neil Pilgrim) 43e80b42da matrix bridge: Add write-sample-config option & remove sample config. 2018-06-04 15:55:14 -07:00
neiljp (Neil Pilgrim) 78c64d069b matrix bridge: Add description of script & some useful tips. 2018-06-04 15:55:14 -07:00
neiljp (Neil Pilgrim) 70ba4c9035 matrix bridge: Improve error handling by exception translation.
Also:
* introduces two internal Bridge_*Exception classes.
* import matrix_client.errors instead of matrix_client.api.
2018-06-04 15:55:14 -07:00
neiljp (Neil Pilgrim) a6e39509d9 matrix bridge: Improve join/leave option.
Original '--no-noise' option had a parameter and did not disable;
new parameter is '--enable-join-leave', and sets same option for
compatibility.
2018-06-04 15:55:14 -07:00
neiljp (Neil Pilgrim) d45b43a9b1 matrix bridge: Configure using config(parser) file instead of python module. 2018-06-04 15:55:14 -07:00
Eeshan Garg e7e9059cb8 zulip_bots: Move installation of bot deps to tools/provision.
A lot of these bot dependencies are pretty hefty and shouldn't be
installed as part of the zulip_bots package. So the installation of
these belongs in tools/provision, not in setup.py.
2018-06-04 20:01:53 -02:30
Eeshan Garg 246f065877 zulip_bots: Remove unnecessary requirements.txt files in /bots.
A lot of these were either empty or required 'requests', which
is already installed as part of the main 'zulip' package.
2018-06-04 19:59:59 -02:30
Robert Hönig 242bcdbadc botserver: Add specific error message for unedited zuliprcs.
Previously, when a user tried to run the Botserver with a
zuliprc but forgot to set the bot name, they were told to
edit the botserverrc file. However, the recommended approach
is to specify the botname with the -b option. This commit
adds an error message specific for this case. It recognizes
zuliprc files by their section header `api`.
2018-06-04 10:14:17 -07:00
Robert Hönig 3ddc8f9b5d botserver: Make bot-name-not-found error more user-friendly.
Previously, when a bot name wasn't found, the Botserver threw
an ImportError with an error message. This results in an
intimidating traceback which is in most cases not helpful to
the user. This commit replaces the ImportError with sys.exit.
2018-06-04 10:14:17 -07:00
Robert Hönig c85b42be9f botserver: Exit with helpful output if botserverrc is invalid.
If the botserverrc file contains empty section headers, it
is very likely that the user forgot to edit the file. This
reminds them to do so.
2018-06-04 10:14:17 -07:00
Robert Hönig 3d05b88cc2 botserver: Rename zulip-bot-server to zulip-botserver.
This is consistent with the correct prose "Botserver"
(instead of "Bot-server").
2018-06-04 10:14:17 -07:00
Robert Hönig 60c3919deb bot tests: Allow raw responses in fixtures.
Previously, the responses set in bot test fixtures
where handled as JSON objects. This works fine for
most bot tests, because most of the APIs that bots
are calling return a JSON-formatted response object.
However, some, like Trello, do return raw data.
This hasn't been noticed so far, because the respective
Trello test needed internet access. Tests shouldn't
need internet access.
This commit makes that Trello test use a fixture. To
work properly, it also adds a way to make http_mock_config
parse the response object as raw data.
This can now be done by modifying the "is_raw_response"
property in a newly introduced "meta" object that can
be used to specify how a fixture should be handled.
2018-06-04 10:13:38 -07:00
Rhea Parekh e638cdd4a9 bots: Add proper error handling for trivia bot. 2018-06-04 06:51:35 -04:00
Rhea Parekh f276e46890 bots: Add tests for trivia_quiz bot 2018-06-04 05:59:10 -04:00
Steve Howell 9096dd2918 [wip] Create trivia quiz bot. 2018-06-04 05:59:10 -04:00
Steve Howell 93661db0d1 bots: Print send_message errors for dev debugging. 2018-06-04 05:59:10 -04:00
Steve Howell fcd39204a9 bots: Pass through widget_content if passed in. 2018-06-04 05:59:10 -04:00
novokrest 488dcb4219 beeminder: Check auth_token in initialize by idempotent request.
Change checking auth_token in `initialize` method by calling
request to get user's information instead of calling POST request
which modifies progress of user's goal.
2018-06-03 22:17:01 -07:00
novokrest 229f62a483 lib: Read bot's config file by ConfigParser.read_file method.
This was introduced in the refactor in
a8665aaac8.

The correct function taking an open file handle is read_file, not read().

Fixes #414.
2018-06-02 10:32:40 -07:00
neiljp (Neil Pilgrim) 363720e908 matrix bridge: Add main() function to enable installation. 2018-06-02 09:26:40 -07:00
novokrest dc83d9e468 beeminder: Remove duplicated try-except in initialize method.
Remove duplicated try-except in `initialize` method because
ConnectionError is already catched in `get_beeminder_response` method.
2018-06-02 12:01:20 +03:00
novokrest f3d2d3a01e beeminder: Add tests for valid messages. 2018-06-02 12:01:20 +03:00
novokrest d68a19f2dc beeminder: Rename test test_normal to test_message_with_value_and_comment. 2018-06-02 11:10:41 +03:00
neiljp (Neil Pilgrim) 2b86b9f488 xkcd bot: Update bot & tests to use bot identity functionality. 2018-05-31 06:10:50 -04:00
neiljp (Neil Pilgrim) f15356c4c8 wikipedia bot: Update bot & tests to use bot identity functionality. 2018-05-31 06:10:50 -04:00
neiljp (Neil Pilgrim) 56c59d915a bots: Support determining bot runtime identity.
This improves the ability of a bot to specify how to mention it,
which varies at run-time depending upon the identity used to run it;
this is commonly used in many bot help commands.
2018-05-31 06:10:50 -04:00
neiljp (Neil Pilgrim) 4c8d86c1d9 bot lib tests: Move tests of bot library to tests/.
This makes it clearer which files are for writing bot tests
vs tests of the infrastructure.
2018-05-30 18:29:47 -07:00
Tim Abbott 9e6b4edee6 integrations: Remove slack import script.
This was migrated to the Zulip server project some time ago.
2018-05-30 16:10:22 -07:00
Robert Hönig f4e0808a87 botserver: Validate token before accepting message.
Previously, the botserver would accept any message sent
to it. This was a security hazard, since an attacker could
impersonate arbitrary users with arbitrary messages. We only
want the Zulip instance where a bot is registered to be able
to send out messages for that bot. To do this, this commits
adds a check for the security token associated with each
outgoing webhook bot. For each bot, its token is stored in
the botserverrc file. The server sends the token along with
each message.
2018-05-30 09:37:33 -04:00
neiljp (Neil Pilgrim) efe5b04374 salesforce: Minor improvements; imports & types. 2018-05-30 07:11:16 -04:00
neiljp (Neil Pilgrim) 8f0b9adb70 trello: Remove extra newlines & spaces in code and tests. 2018-05-30 07:11:16 -04:00
neiljp (Neil Pilgrim) 4f224b5dbc trello: Simplify message & response handling. 2018-05-30 07:11:16 -04:00
neiljp (Neil Pilgrim) 8e1d4f524b baremetrics: Remove extra newlines & spaces in code and tests. 2018-05-30 07:11:16 -04:00
neiljp (Neil Pilgrim) b51b6d0361 baremetrics: Simplify response generation. 2018-05-30 07:11:16 -04:00
neiljp (Neil Pilgrim) 016011437e baremetrics: Simplify core handler code. 2018-05-30 07:11:16 -04:00
neiljp (Neil Pilgrim) ce4404b9db idonethis: Remove extra newlines in code & tests.
Also rename list_steams -> list_teams.
2018-05-30 07:11:16 -04:00
neiljp (Neil Pilgrim) 9b782e8357 idonethis: Improve typing & note unused function. 2018-05-30 07:11:16 -04:00
neiljp (Neil Pilgrim) dbe44a2774 idonethis: Remove unreachable code & simplify response generation.
Also remove unnecessary import.
2018-05-30 07:11:16 -04:00
neiljp (Neil Pilgrim) 4e19a7716d mypy: Avoid 'Any' for message in bots.
Also remove a few unnecessary typing imports.
2018-05-30 07:11:16 -04:00
novokrest 7a95c31162 mercurial: Rename hook file to zulip_changegroup.py.
Rename hook file from 'zulip-changegroup.py'
to 'zulip_changegroup.py' for importing as module.
2018-05-29 11:45:56 -07:00