6 |
6 |
from django.core.urlresolvers import reverse
|
7 |
7 |
|
8 |
8 |
import pytest
|
|
9 |
import utils
|
9 |
10 |
|
10 |
11 |
from django.test import override_settings
|
11 |
12 |
|
... | ... | |
184 |
185 |
assert resp.json['err'] == 1
|
185 |
186 |
assert resp.json['err_desc'] == 'Payload error: missing "message" in JSON payload'
|
186 |
187 |
|
187 |
|
def test_logged_request_max_size(app, oxyd, settings):
|
|
188 |
def test_logged_requests_and_responses_max_size(app, oxyd, settings):
|
188 |
189 |
endpoint_url = reverse('generic-endpoint',
|
189 |
190 |
kwargs={'connector': 'oxyd', 'slug': oxyd.slug, 'endpoint': 'send'})
|
190 |
191 |
api = ApiUser.objects.create(username='public',
|
... | ... | |
197 |
198 |
resource_type=obj_type,
|
198 |
199 |
resource_pk=oxyd.pk,
|
199 |
200 |
)
|
200 |
|
resp = app.post_json(endpoint_url, params={'foo': 'bar'})
|
201 |
|
assert ResourceLog.objects.all()[0].message[-9:] == '"bar"}\') '
|
202 |
|
|
203 |
|
# for empty payload the connector returns an APIError with
|
204 |
|
assert 'Error occurred' in ResourceLog.objects.all()[1].message
|
|
201 |
payload = {
|
|
202 |
'message': 'hello',
|
|
203 |
'from': '+33699999999',
|
|
204 |
'to': ['+33688888888', '+33677777777'],
|
|
205 |
}
|
|
206 |
headers = {'Content-Type': 'foo/bar'}
|
|
207 |
response = oxyd.TEST_DEFAULTS['test_vectors'][0]
|
|
208 |
oxyd.set_log_level('DEBUG') # log request payload and response headers/content
|
|
209 |
settings.LOGGED_CONTENT_TYPES_MESSAGES = 'foo/bar' # response content to log
|
|
210 |
|
|
211 |
assert settings.LOGGED_REQUEST_MAX_SIZE == 5000
|
|
212 |
assert settings.LOGGED_RESPONSES_MAX_SIZE == 4096
|
|
213 |
with utils.mock_url(oxyd.URL, response, headers=headers):
|
|
214 |
result = app.post_json(endpoint_url, params=payload)
|
|
215 |
assert len(ResourceLog.objects.all()) == 4
|
|
216 |
|
|
217 |
# initial POST query
|
|
218 |
assert len(ResourceLog.objects.all()[0].extra['connector_payload']) == 84
|
|
219 |
|
|
220 |
# connector POST queries
|
|
221 |
assert len(ResourceLog.objects.all()[1].extra['request_payload']) == 57
|
|
222 |
assert len(ResourceLog.objects.all()[2].extra['request_payload']) == 57
|
|
223 |
assert len(ResourceLog.objects.all()[1].extra['response_content']) == 244
|
|
224 |
assert len(ResourceLog.objects.all()[2].extra['response_content']) == 244
|
|
225 |
|
|
226 |
# connector reply
|
|
227 |
assert len(ResourceLog.objects.all()[3].extra['body']) == 86
|
205 |
228 |
|
206 |
229 |
# troncate logs
|
207 |
|
settings.LOGGED_REQUEST_MAX_SIZE = 6
|
208 |
|
resp = app.post_json(endpoint_url, params={'foo': 'bar'})
|
209 |
|
assert ResourceLog.objects.all()[2].message[-8:] == '"foo"\') '
|
|
230 |
settings.LOGGED_REQUEST_MAX_SIZE = 10
|
|
231 |
settings.LOGGED_RESPONSES_MAX_SIZE = 20
|
|
232 |
with utils.mock_url(oxyd.URL, response, headers=headers):
|
|
233 |
result = app.post_json(endpoint_url, params=payload)
|
|
234 |
assert len(ResourceLog.objects.all()) == 8
|
|
235 |
assert len(ResourceLog.objects.all()[4].extra['connector_payload']) == 10
|
|
236 |
assert len(ResourceLog.objects.all()[5].extra['request_payload']) == 12
|
|
237 |
assert len(ResourceLog.objects.all()[6].extra['request_payload']) == 12
|
|
238 |
assert len(ResourceLog.objects.all()[5].extra['response_content']) == 22
|
|
239 |
assert len(ResourceLog.objects.all()[6].extra['response_content']) == 22
|
|
240 |
assert len(ResourceLog.objects.all()[7].extra['body']) == 12
|