|
6 | 6 | import pytest
|
7 | 7 | from unittest.mock import patch
|
8 | 8 |
|
| 9 | +from pyodata.utils import RequestObserverLastCall |
9 | 10 | import pyodata.v2.model
|
10 | 11 | import pyodata.v2.service
|
11 | 12 | from pyodata.exceptions import PyODataException, HttpError, ExpressionError, ProgramError
|
@@ -2372,3 +2373,33 @@ def test_custom_with_get_entity(service):
|
2372 | 2373 |
|
2373 | 2374 | entity = service.entity_sets.MasterEntities.get_entity('12345').custom("foo", "bar").execute()
|
2374 | 2375 | assert entity.Key == '12345'
|
| 2376 | + |
| 2377 | + |
| 2378 | +@responses.activate |
| 2379 | +def test_request_observer(service): |
| 2380 | + """Test use of request observer""" |
| 2381 | + |
| 2382 | + responses.add( |
| 2383 | + responses.GET, |
| 2384 | + f"{service.url}/MasterEntities('12345')", |
| 2385 | + headers={'h1-key': 'h1-val', 'h2-key': 'h2-val'}, |
| 2386 | + json={'d': {'Key': '12345'}}, |
| 2387 | + status=200) |
| 2388 | + |
| 2389 | + last = RequestObserverLastCall() |
| 2390 | + entity = service.entity_sets.MasterEntities.get_entity('12345').execute(last) |
| 2391 | + |
| 2392 | + assert last.request is not None |
| 2393 | + |
| 2394 | + assert len(last.request.headers) > 0 |
| 2395 | + assert 'Accept' in last.request.headers |
| 2396 | + |
| 2397 | + assert last.response is not None |
| 2398 | + assert last.response.status_code == 200 |
| 2399 | + assert len(last.response.headers) == 3 |
| 2400 | + assert 'Content-type' in last.response.headers |
| 2401 | + assert 'h1-key' in last.response.headers |
| 2402 | + assert 'h2-key' in last.response.headers |
| 2403 | + assert last.response.headers['Content-type'] == 'application/json' |
| 2404 | + assert last.response.headers['h1-key'] == 'h1-val' |
| 2405 | + assert last.response.headers['h2-key'] == 'h2-val' |
0 commit comments