-
Notifications
You must be signed in to change notification settings - Fork 100
Expand file tree
/
Copy pathtest_api_request_sender.py
More file actions
152 lines (104 loc) · 5.29 KB
/
test_api_request_sender.py
File metadata and controls
152 lines (104 loc) · 5.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
import json
import logging
import pytest
from viberbot.api.api_request_sender import ApiRequestSender
from viberbot.api.bot_configuration import BotConfiguration
from viberbot.api.consts import BOT_API_ENDPOINT, VIBER_BOT_USER_AGENT
from viberbot.api.event_type import EventType
class Stub(object): pass
def stub(*args): pass
VIBER_BOT_API_URL = "http://site.com"
VIBER_BOT_CONFIGURATION = BotConfiguration("auth-token-sample", "testbot", "http://avatars.com/")
def test_set_webhook_sanity():
webhook_events = [EventType.DELIVERED, EventType.UNSUBSCRIBED, EventType.SEEN]
url = "http://sample.url.com"
def post_request(endpoint, payload):
request = json.loads(payload)
assert endpoint == BOT_API_ENDPOINT.SET_WEBHOOK
assert request['event_types'] == webhook_events
assert request['url'] == url
return dict(status=0, event_types=webhook_events)
request_sender = ApiRequestSender(logging.getLogger(), VIBER_BOT_API_URL, VIBER_BOT_CONFIGURATION, VIBER_BOT_USER_AGENT)
request_sender.post_request = post_request
request_sender.set_webhook(url=url, webhook_events=webhook_events)
def test_set_webhook_failure():
webhook_events = [EventType.DELIVERED, EventType.UNSUBSCRIBED, EventType.SEEN]
url = "http://sample.url.com"
def post_request(endpoint, payload):
return dict(status=1, status_message="failed")
request_sender = ApiRequestSender(logging.getLogger(), VIBER_BOT_API_URL, VIBER_BOT_CONFIGURATION, VIBER_BOT_USER_AGENT)
request_sender.post_request = post_request
with pytest.raises(Exception) as exc:
request_sender.set_webhook(url=url, webhook_events=webhook_events)
assert exc.value.message.startswith("failed with status: 1, message: failed")
def test_post_request_success(monkeypatch):
def callback(endpoint, data, headers):
request = json.loads(data)
assert endpoint == VIBER_BOT_API_URL + "/" + BOT_API_ENDPOINT.GET_ACCOUNT_INFO
assert headers['User-Agent'] == VIBER_BOT_USER_AGENT
response = Stub()
response.raise_for_status = stub
response.text = "{}"
return response
monkeypatch.setattr("requests.post", callback)
request_sender = ApiRequestSender(logging.getLogger(), VIBER_BOT_API_URL, VIBER_BOT_CONFIGURATION, VIBER_BOT_USER_AGENT)
request_sender.get_account_info()
def test_post_request_json_exception(monkeypatch):
def callback(endpoint, data, headers):
request = json.loads(data)
assert endpoint == VIBER_BOT_API_URL + "/" + BOT_API_ENDPOINT.GET_ACCOUNT_INFO
assert request['auth_token'] == VIBER_BOT_CONFIGURATION.auth_token
assert headers['User-Agent'] == VIBER_BOT_USER_AGENT
response = Stub()
response.raise_for_status = stub
response.text = "not a json{/"
return response
monkeypatch.setattr("requests.post", callback)
request_sender = ApiRequestSender(logging.getLogger(), VIBER_BOT_API_URL, VIBER_BOT_CONFIGURATION, VIBER_BOT_USER_AGENT)
with pytest.raises(Exception) as exc:
request_sender.get_account_info()
def test_get_online_status_fail(monkeypatch):
def callback(endpoint, data, headers):
request = json.loads(data)
assert endpoint == VIBER_BOT_API_URL + "/" + BOT_API_ENDPOINT.GET_ONLINE
assert request['auth_token'] == VIBER_BOT_CONFIGURATION.auth_token
assert headers['User-Agent'] == VIBER_BOT_USER_AGENT
response = Stub()
response.raise_for_status = stub
response.text = "{\"status\": 1, \"status_message\": \"fail\"}"
return response
monkeypatch.setattr("requests.post", callback)
request_sender = ApiRequestSender(logging.getLogger(), VIBER_BOT_API_URL, VIBER_BOT_CONFIGURATION, VIBER_BOT_USER_AGENT)
with pytest.raises(Exception) as exc:
request_sender.get_online_status(ids=["0123456789="])
assert exc.value.message.startswith("failed with status:")
def test_get_online_missing_ids(monkeypatch):
monkeypatch.setattr("requests.post", stub)
request_sender = ApiRequestSender(logging.getLogger(), VIBER_BOT_API_URL, VIBER_BOT_CONFIGURATION, VIBER_BOT_USER_AGENT)
with pytest.raises(Exception) as exc:
request_sender.get_online_status(ids=None)
assert exc.value.message.startswith("missing parameter ids, should be a list of viber memberIds")
def test_get_online_success(monkeypatch):
def callback(endpoint, data, headers):
request = json.loads(data)
assert endpoint == VIBER_BOT_API_URL + "/" + BOT_API_ENDPOINT.GET_ONLINE
assert headers['X-Viber-Auth-Token'] == VIBER_BOT_CONFIGURATION.auth_token
response = Stub()
response.raise_for_status = stub
response.text = "{\"status\": 0, \"status_message\": \"OK\", \"users\": []}"
return response
monkeypatch.setattr("requests.post", callback)
request_sender = ApiRequestSender(logging.getLogger(), VIBER_BOT_API_URL, VIBER_BOT_CONFIGURATION, VIBER_BOT_USER_AGENT)
request_sender.get_online_status(ids=["03249305A="])
def test_get_user_details_success(monkeypatch):
def callback(endpoint, data, headers):
request = json.loads(data)
assert endpoint == VIBER_BOT_API_URL + "/" + BOT_API_ENDPOINT.GET_USER_DETAILS
assert headers['X-Viber-Auth-Token'] == VIBER_BOT_CONFIGURATION.auth_token
response = Stub()
response.raise_for_status = stub
response.text = "{\"status\": 0, \"status_message\": \"OK\", \"user\": {}}"
return response
monkeypatch.setattr("requests.post", callback)
request_sender = ApiRequestSender(logging.getLogger(), VIBER_BOT_API_URL, VIBER_BOT_CONFIGURATION, VIBER_BOT_USER_AGENT)
request_sender.get_user_details(user_id="03249305A=")