Skip to content

Commit 9c19d36

Browse files
zulip: Add tests for zulip apis.
1 parent 4d482e0 commit 9c19d36

File tree

3 files changed

+97
-0
lines changed

3 files changed

+97
-0
lines changed

requirements.txt

+1
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ pytest
1010
-e git+https://github.com/zulip/zulint@14e3974001bf8442a6a3486125865660f1f2eb68#egg=zulint==1.0.0
1111
mypy==0.812
1212
gitlint>=0.13.0
13+
responses

zulip/tests/test_api.py

+92
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
import json
2+
import unittest
3+
import responses
4+
import zulip
5+
import urllib
6+
7+
from typing import Any, Tuple, Dict
8+
from unittest import TestCase
9+
10+
class TerminationException(Exception):
11+
pass
12+
13+
class TestAPI(TestCase):
14+
15+
@responses.activate
16+
def test_add_reaction(self) -> None:
17+
def request_callback(request: Any) -> Tuple[int, Dict[str, str], str]:
18+
params = {}
19+
for param in request.body.split("&"):
20+
key, value = param.split("=")
21+
params[key] = urllib.parse.unquote(value)
22+
assert "emoji_name" in params or "emoji_code" in params
23+
return (200, {}, json.dumps({'result': 'success', 'msg': ''}))
24+
25+
responses.add_callback(
26+
method=responses.POST,
27+
url="https://test.zulipapi.com/api/v1/messages/10/reactions",
28+
callback=request_callback
29+
)
30+
31+
client = zulip.Client(config_file="zulip/tests/test_zuliprc")
32+
# request with emoji name
33+
request = {
34+
"message_id": 10,
35+
"emoji_name": "octopus",
36+
}
37+
result = client.add_reaction(request)
38+
self.assertEqual(result, {'result': 'success', 'msg': ''})
39+
# request with emoji code
40+
request = {
41+
"message_id": 10,
42+
"emoji_code": "1f419",
43+
}
44+
result = client.add_reaction(request)
45+
self.assertEqual(result, {'result': 'success', 'msg': ''})
46+
47+
@responses.activate
48+
def test_call_on_each_event(self) -> None:
49+
responses.add(
50+
responses.POST,
51+
url="https://test.zulipapi.com/api/v1/register",
52+
json={'queue_id': 10, 'last_event_id': -1, 'msg': '', 'result': 'success'},
53+
status=200
54+
)
55+
responses.add(
56+
responses.GET,
57+
url="https://test.zulipapi.com/api/v1/events",
58+
json={'result': 'success', 'msg': '', 'events': [{'id': 123}]},
59+
status=200
60+
)
61+
62+
def terminate() -> None:
63+
raise TerminationException()
64+
client = zulip.Client(config_file="zulip/tests/test_zuliprc")
65+
try:
66+
client.call_on_each_event(
67+
lambda x: terminate(),
68+
['message'],
69+
)
70+
except TerminationException:
71+
pass
72+
73+
try:
74+
client.call_on_each_event(
75+
lambda x: terminate(),
76+
)
77+
except TerminationException:
78+
pass
79+
80+
try:
81+
client.call_on_each_event(
82+
lambda x: terminate(),
83+
['message'],
84+
[['some', 'narrow']]
85+
)
86+
except TerminationException:
87+
pass
88+
89+
90+
91+
if __name__ == '__main__':
92+
unittest.main()

zulip/tests/test_zuliprc

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[api]
2+
3+
key=K1PZuAp18Cn9RFjTsf5O1HeRW6TVpyhF
4+
site=https://test.zulipapi.com

0 commit comments

Comments
 (0)