0002-misc-add-__init__-file-to-tests-dir-62099.patch
tests/conftest.py | ||
---|---|---|
7 | 7 |
from django.core.files import File |
8 | 8 |
from django.utils import six |
9 | 9 |
from httmock import HTTMock, remember_called, response, urlmatch |
10 |
from utils import make_resource |
|
10 | ||
11 |
from tests.utils import make_resource |
|
11 | 12 | |
12 | 13 |
if six.PY2: |
13 | 14 |
collect_ignore = ['wcs/'] |
tests/test_actesweb.py | ||
---|---|---|
23 | 23 |
import stat |
24 | 24 | |
25 | 25 |
import pytest |
26 |
import utils |
|
27 | 26 |
from django.utils import six |
28 | 27 | |
28 |
import tests.utils |
|
29 | 29 |
from passerelle.apps.actesweb.models import ActesWeb |
30 | 30 | |
31 | 31 | |
... | ... | |
41 | 41 | |
42 | 42 |
@pytest.fixture |
43 | 43 |
def actesweb(db): |
44 |
return utils.make_resource(ActesWeb, **{'slug': 'test'}) |
|
44 |
return tests.utils.make_resource(ActesWeb, **{'slug': 'test'})
|
|
45 | 45 | |
46 | 46 | |
47 | 47 |
PAYLOAD = [ |
tests/test_address.py | ||
---|---|---|
18 | 18 | |
19 | 19 |
import mock |
20 | 20 |
import pytest |
21 |
import utils |
|
22 | 21 |
from django.core.files import File |
23 | 22 |
from django.utils.six import StringIO |
24 | 23 | |
24 |
import tests.utils |
|
25 | 25 |
from passerelle.apps.base_adresse.models import BaseAdresse |
26 | 26 |
from passerelle.apps.sector.models import SectorResource |
27 | 27 | |
... | ... | |
216 | 216 | |
217 | 217 |
@pytest.fixture |
218 | 218 |
def sector(db): |
219 |
return utils.setup_access_rights( |
|
219 |
return tests.utils.setup_access_rights(
|
|
220 | 220 |
SectorResource.objects.create( |
221 | 221 |
slug='ecole', |
222 | 222 |
title='Secteur scolaire', |
... | ... | |
228 | 228 | |
229 | 229 |
@pytest.fixture |
230 | 230 |
def base_adresse(db): |
231 |
return utils.setup_access_rights(BaseAdresse.objects.create(slug='base-adresse', zipcode='75114')) |
|
231 |
return tests.utils.setup_access_rights(BaseAdresse.objects.create(slug='base-adresse', zipcode='75114'))
|
|
232 | 232 | |
233 | 233 | |
234 | 234 |
@mock.patch('passerelle.utils.Request.get') |
235 | 235 |
def test_sectorization(mocked_get, app, base_adresse, sector): |
236 | 236 |
assert base_adresse.sectors.count() == 0 |
237 |
mocked_get.return_value = utils.FakedResponse(content=json.dumps(BAN), status_code=200) |
|
238 |
url = utils.generic_endpoint_url('base-adresse', 'search', slug=base_adresse.slug) |
|
237 |
mocked_get.return_value = tests.utils.FakedResponse(content=json.dumps(BAN), status_code=200)
|
|
238 |
url = tests.utils.generic_endpoint_url('base-adresse', 'search', slug=base_adresse.slug)
|
|
239 | 239 |
addresses = app.get(url, params={'q': 'foo'}, status=200).json |
240 | 240 |
assert len(addresses) == 8 |
241 | 241 |
for address in addresses: |
... | ... | |
267 | 267 |
assert addresses[7]['sectors'] == {} |
268 | 268 |
assert addresses[7]['sectorization_error'] == 'missing street_id in address' |
269 | 269 | |
270 |
url = utils.generic_endpoint_url('base-adresse', 'sectors', slug=base_adresse.slug) |
|
270 |
url = tests.utils.generic_endpoint_url('base-adresse', 'sectors', slug=base_adresse.slug)
|
|
271 | 271 |
for params in (None, {'id': 'ecole'}, {'q': 'scolaire'}): |
272 | 272 |
sectors = app.get(url, params=params, status=200).json |
273 | 273 |
assert sectors['err'] == 0 |
tests/test_adict.py | ||
---|---|---|
2 | 2 | |
3 | 3 |
import mock |
4 | 4 |
import pytest |
5 |
import utils |
|
6 | 5 | |
6 |
import tests.utils |
|
7 | 7 |
from passerelle.contrib.adict.models import Adict |
8 | 8 | |
9 | 9 |
FAKE_FEATURE_INFO = json.dumps( |
... | ... | |
28 | 28 | |
29 | 29 |
@pytest.fixture |
30 | 30 |
def connector(db): |
31 |
return utils.setup_access_rights( |
|
31 |
return tests.utils.setup_access_rights(
|
|
32 | 32 |
Adict.objects.create( |
33 | 33 |
slug='test', |
34 | 34 |
service_root_url='http://adict.example.net/', |
... | ... | |
40 | 40 | |
41 | 41 |
@mock.patch('passerelle.utils.Request.get') |
42 | 42 |
def test_feature_info(mocked_get, app, connector): |
43 |
endpoint = utils.generic_endpoint_url('adict', 'feature_info', slug=connector.slug) |
|
43 |
endpoint = tests.utils.generic_endpoint_url('adict', 'feature_info', slug=connector.slug)
|
|
44 | 44 |
assert endpoint == '/adict/test/feature_info' |
45 |
mocked_get.return_value = utils.FakedResponse(content=FAKE_FEATURE_INFO, status_code=200) |
|
45 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKE_FEATURE_INFO, status_code=200)
|
|
46 | 46 |
resp = app.get(endpoint, params={'lat': '48.570472877', 'lon': '7.75659804'}) |
47 | 47 |
assert mocked_get.call_args[0][0] == 'http://adict.example.net/api/v1.0/secteurs' |
48 | 48 |
assert mocked_get.call_args[1]['params']['x'] == '7.75659804' |
... | ... | |
52 | 52 | |
53 | 53 |
@mock.patch('passerelle.utils.Request.get') |
54 | 54 |
def test_no_feature_info(mocked_get, app, connector): |
55 |
endpoint = utils.generic_endpoint_url('adict', 'feature_info', slug=connector.slug) |
|
55 |
endpoint = tests.utils.generic_endpoint_url('adict', 'feature_info', slug=connector.slug)
|
|
56 | 56 |
assert endpoint == '/adict/test/feature_info' |
57 |
mocked_get.return_value = utils.FakedResponse(content=json.dumps({'features': []}), status_code=200) |
|
57 |
mocked_get.return_value = tests.utils.FakedResponse(content=json.dumps({'features': []}), status_code=200)
|
|
58 | 58 |
resp = app.get(endpoint, params={'lat': '48.570472877', 'lon': '7.75659804'}) |
59 | 59 |
assert resp.json['err'] == 1 |
60 | 60 |
assert resp.json['err_msg'] == 'not found' |
tests/test_airquality.py | ||
---|---|---|
2 | 2 | |
3 | 3 |
import freezegun |
4 | 4 |
import pytest |
5 |
import utils |
|
6 | 5 |
from httmock import HTTMock, response |
7 | 6 | |
7 |
import tests.utils |
|
8 | 8 |
from passerelle.apps.airquality.models import AirQuality |
9 | 9 | |
10 | 10 |
SAMPLE_RESPONSE = { |
... | ... | |
69 | 69 | |
70 | 70 |
@freezegun.freeze_time('2020-12-21') |
71 | 71 |
def test_airquality_details(app, airquality): |
72 |
endpoint = utils.generic_endpoint_url('airquality', 'details', slug=airquality.slug) |
|
72 |
endpoint = tests.utils.generic_endpoint_url('airquality', 'details', slug=airquality.slug)
|
|
73 | 73 |
assert endpoint == '/airquality/atmo/details' |
74 | 74 |
with HTTMock(mocked_http): |
75 | 75 |
resp = app.get(endpoint + '/fr/lyon/', status=200) |
... | ... | |
78 | 78 | |
79 | 79 | |
80 | 80 |
def test_airquality_details_unknown_city(app, airquality): |
81 |
endpoint = utils.generic_endpoint_url('airquality', 'details', slug=airquality.slug) |
|
81 |
endpoint = tests.utils.generic_endpoint_url('airquality', 'details', slug=airquality.slug)
|
|
82 | 82 |
resp = app.get(endpoint + '/fr/paris/', status=404) |
tests/test_api.py | ||
---|---|---|
19 | 19 |
from django.contrib.contenttypes.models import ContentType |
20 | 20 |
from django.test import override_settings |
21 | 21 |
from django.urls import reverse |
22 |
from test_manager import login |
|
23 | 22 | |
24 | 23 |
from passerelle.apps.ovh.models import OVHSMSGateway |
25 | 24 |
from passerelle.base.models import AccessRight, ApiUser, Job |
25 |
from tests.test_manager import login |
|
26 | 26 | |
27 | 27 |
pytestmark = pytest.mark.django_db |
28 | 28 |
tests/test_api_access.py | ||
---|---|---|
2 | 2 |
import sys |
3 | 3 | |
4 | 4 |
import pytest |
5 |
import utils |
|
6 | 5 |
from django.contrib.auth.models import User |
7 | 6 |
from django.contrib.contenttypes.models import ContentType |
8 | 7 |
from django.test import override_settings |
9 | 8 |
from django.urls import reverse |
10 | 9 | |
10 |
import tests.utils |
|
11 | 11 |
from passerelle.apps.oxyd.models import OxydSMSGateway |
12 | 12 |
from passerelle.base import signature |
13 | 13 |
from passerelle.base.models import AccessRight, ApiUser, ResourceLog |
tests/test_api_entreprise.py | ||
---|---|---|
21 | 21 |
import requests |
22 | 22 |
from django.utils import timezone |
23 | 23 |
from httmock import HTTMock, response, urlmatch |
24 |
from utils import FakedResponse, make_resource |
|
25 | 24 | |
26 | 25 |
from passerelle.apps.api_entreprise.models import APIEntreprise |
26 |
from tests.utils import FakedResponse, make_resource |
|
27 | 27 | |
28 | 28 |
ETABLISSEMENTS_RESPONSE = { |
29 | 29 |
"etablissement": { |
tests/test_api_particulier.py | ||
---|---|---|
22 | 22 |
import requests |
23 | 23 |
from django.urls import reverse |
24 | 24 |
from httmock import HTTMock, response, urlmatch |
25 |
from test_manager import login |
|
26 |
from utils import endpoint_get, make_resource |
|
27 | 25 | |
28 | 26 |
from passerelle.apps.api_particulier.models import APIParticulier |
29 | 27 |
from passerelle.base.models import ResourceLog |
28 |
from tests.test_manager import login |
|
29 |
from tests.utils import endpoint_get, make_resource |
|
30 | 30 | |
31 | 31 |
SVAIR_RESPONSE = { |
32 | 32 |
"declarant1": { |
tests/test_arcgis.py | ||
---|---|---|
5 | 5 | |
6 | 6 |
import mock |
7 | 7 |
import pytest |
8 |
import utils |
|
9 | 8 |
from django.contrib.auth.models import User |
10 | 9 |
from django.contrib.contenttypes.models import ContentType |
11 | 10 |
from django.core.exceptions import ValidationError |
12 |
from test_manager import login |
|
13 | 11 | |
12 |
import tests.utils |
|
14 | 13 |
from passerelle.apps.arcgis.models import ArcGIS, Query, SqlFormatter, validate_where |
15 | 14 |
from passerelle.base.models import AccessRight, ApiUser |
16 | 15 |
from passerelle.utils import import_site |
16 |
from tests.test_manager import login |
|
17 | 17 | |
18 | 18 |
pytestmark = pytest.mark.django_db |
19 | 19 | |
... | ... | |
89 | 89 | |
90 | 90 | |
91 | 91 |
def test_arcgis_mapservice_query(app, arcgis): |
92 |
endpoint = utils.generic_endpoint_url('arcgis', 'mapservice-query', slug=arcgis.slug) |
|
92 |
endpoint = tests.utils.generic_endpoint_url('arcgis', 'mapservice-query', slug=arcgis.slug)
|
|
93 | 93 |
assert endpoint == '/arcgis/test/mapservice-query' |
94 | 94 |
params = {'folder': 'fold', 'service': 'serv', 'layer': '1'} |
95 | 95 | |
96 | 96 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
97 |
requests_get.return_value = utils.FakedResponse(content=STATES, status_code=200) |
|
97 |
requests_get.return_value = tests.utils.FakedResponse(content=STATES, status_code=200)
|
|
98 | 98 | |
99 | 99 |
resp = app.get(endpoint, params=params, status=403) |
100 | 100 |
assert requests_get.call_count == 0 |
... | ... | |
241 | 241 | |
242 | 242 |
# call errors |
243 | 243 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
244 |
requests_get.return_value = utils.FakedResponse(content=STATES, status_code=200) |
|
244 |
requests_get.return_value = tests.utils.FakedResponse(content=STATES, status_code=200)
|
|
245 | 245 |
resp = app.get(endpoint, params={}, status=400) |
246 | 246 |
assert requests_get.call_count == 0 |
247 | 247 |
assert resp.json['err'] == 1 |
... | ... | |
343 | 343 |
'meta': {}, |
344 | 344 |
} |
345 | 345 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
346 |
requests_get.return_value = utils.FakedResponse(content=json.dumps(arcgis_response), status_code=200) |
|
346 |
requests_get.return_value = tests.utils.FakedResponse( |
|
347 |
content=json.dumps(arcgis_response), status_code=200 |
|
348 |
) |
|
347 | 349 |
assert query.q(rf.get('/', data={'adress': "AVENUE D'ANNAM"}), full=True) == { |
348 | 350 |
"data": [ |
349 | 351 |
{ |
... | ... | |
370 | 372 | |
371 | 373 | |
372 | 374 |
def test_q_endpoint(arcgis, query, app): |
373 |
endpoint = utils.generic_endpoint_url('arcgis', 'q/adresses/', slug=arcgis.slug) |
|
375 |
endpoint = tests.utils.generic_endpoint_url('arcgis', 'q/adresses/', slug=arcgis.slug)
|
|
374 | 376 |
assert endpoint == '/arcgis/test/q/adresses/' |
375 | 377 | |
376 | 378 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
377 |
requests_get.return_value = utils.FakedResponse(content=STATES, status_code=200) |
|
379 |
requests_get.return_value = tests.utils.FakedResponse(content=STATES, status_code=200)
|
|
378 | 380 | |
379 | 381 |
resp = app.get(endpoint, params={}, status=403) |
380 | 382 |
assert requests_get.call_count == 0 |
... | ... | |
406 | 408 |
assert arcgis.base_url == 'https://arcgis.example.net/' |
407 | 409 | |
408 | 410 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
409 |
requests_get.return_value = utils.FakedResponse(content='', status_code=200) |
|
411 |
requests_get.return_value = tests.utils.FakedResponse(content='', status_code=200)
|
|
410 | 412 | |
411 | 413 |
resp = app.get('/arcgis/test/tile/layer1/13/4258/2991.png') |
412 | 414 |
assert requests_get.call_count == 1 |
... | ... | |
419 | 421 | |
420 | 422 |
# test layer and folders |
421 | 423 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
422 |
requests_get.return_value = utils.FakedResponse(content='', status_code=200) |
|
424 |
requests_get.return_value = tests.utils.FakedResponse(content='', status_code=200)
|
|
423 | 425 | |
424 | 426 |
resp = app.get('/arcgis/test/tile/layer1/foo/bar/13/4258/2991.png') |
425 | 427 |
assert requests_get.call_count == 1 |
... | ... | |
434 | 436 |
arcgis.base_url = 'https://arcgis.example.net' |
435 | 437 |
arcgis.save() |
436 | 438 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
437 |
requests_get.return_value = utils.FakedResponse(content='', status_code=200) |
|
439 |
requests_get.return_value = tests.utils.FakedResponse(content='', status_code=200)
|
|
438 | 440 | |
439 | 441 |
resp = app.get('/arcgis/test/tile/layer1/13/4258/2991.png') |
440 | 442 |
assert requests_get.call_count == 1 |
tests/test_arpege_ecp.py | ||
---|---|---|
4 | 4 | |
5 | 5 |
import mock |
6 | 6 |
import pytest |
7 |
import utils |
|
8 | 7 |
from django.urls import reverse |
9 | 8 | |
9 |
import tests.utils |
|
10 | 10 |
from passerelle.apps.arpege_ecp.models import ArpegeECP |
11 | 11 |
from passerelle.utils.jsonresponse import APIError |
12 | 12 | |
... | ... | |
65 | 65 |
resource = ArpegeECP.objects.create( |
66 | 66 |
slug='test', webservice_base_url='http://arpege.net', hawk_auth_id='id', hawk_auth_key='secret' |
67 | 67 |
) |
68 |
return utils.setup_access_rights(resource) |
|
68 |
return tests.utils.setup_access_rights(resource)
|
|
69 | 69 | |
70 | 70 | |
71 | 71 |
@mock.patch('passerelle.utils.Request.get') |
72 | 72 |
def test_check_status(mocked_get, connector): |
73 |
mocked_get.return_value = utils.FakedResponse(content=FAKE_HELLO_RESPONSE, status_code=200) |
|
73 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKE_HELLO_RESPONSE, status_code=200)
|
|
74 | 74 |
resp = connector.check_status() |
75 | 75 |
assert resp['data'] == u'InteropAPI v1 (c) Arpège 2017' |
76 | 76 | |
... | ... | |
79 | 79 |
def test_check_status(mocked_get, connector): |
80 | 80 |
hello_response = json.loads(FAKE_HELLO_RESPONSE) |
81 | 81 |
del hello_response['Data'] |
82 |
mocked_get.return_value = utils.FakedResponse(content=json.dumps(hello_response), status_code=200) |
|
82 |
mocked_get.return_value = tests.utils.FakedResponse(content=json.dumps(hello_response), status_code=200)
|
|
83 | 83 |
with pytest.raises(Exception) as error: |
84 | 84 |
resp = connector.check_status() |
85 | 85 |
assert str(error.value) == 'Invalid credentials' |
86 | 86 | |
87 | 87 | |
88 | 88 |
def test_get_access_token(connector): |
89 |
with utils.mock_url(response=FAKE_LOGIN_OIDC_RESPONSE): |
|
89 |
with tests.utils.mock_url(response=FAKE_LOGIN_OIDC_RESPONSE):
|
|
90 | 90 |
token = connector.get_access_token('nameid') |
91 | 91 |
assert token == '0f86353f2d87b8b78aaaacc2ecc763e287ded44f773289a5e336546a251718b3' |
92 | 92 | |
93 |
with utils.mock_url(response=FAKE_LOGIN_OIDC_RESPONSE, status_code=404): |
|
93 |
with tests.utils.mock_url(response=FAKE_LOGIN_OIDC_RESPONSE, status_code=404):
|
|
94 | 94 |
with pytest.raises(APIError) as error: |
95 | 95 |
token = connector.get_access_token('nameid') |
96 | 96 | |
97 | 97 |
assert ' 404 ' in str(error.value) |
98 | 98 | |
99 |
with utils.mock_url(response="content", status_code=200): |
|
99 |
with tests.utils.mock_url(response="content", status_code=200):
|
|
100 | 100 |
with pytest.raises(APIError) as error: |
101 | 101 |
token = connector.get_access_token('nameid') |
102 | 102 |
assert 'no JSON content' in str(error.value) |
103 | 103 | |
104 |
with utils.mock_url(response="content", status_code=200): |
|
104 |
with tests.utils.mock_url(response="content", status_code=200):
|
|
105 | 105 |
with pytest.raises(APIError) as error: |
106 | 106 |
token = connector.get_access_token('nameid') |
107 | 107 |
assert 'no JSON content' in str(error.value) |
108 | 108 | |
109 |
with utils.mock_url( |
|
109 |
with tests.utils.mock_url(
|
|
110 | 110 |
response='{"IsSuccess": false, "CodErreur": "Fail", "LibErreur": "Auth FAIL"}', status_code=200 |
111 | 111 |
): |
112 | 112 |
with pytest.raises(APIError) as error: |
... | ... | |
128 | 128 |
) |
129 | 129 |
assert endpoint == '/arpege-ecp/test/api/users/nameid/forms' |
130 | 130 | |
131 |
mocked_post.return_value = utils.FakedResponse(content=FAKE_LOGIN_OIDC_RESPONSE, status_code=200) |
|
132 |
mocked_get.return_value = utils.FakedResponse(content=FAKE_USER_DEMANDS_RESPONSE, status_code=200) |
|
131 |
mocked_post.return_value = tests.utils.FakedResponse(content=FAKE_LOGIN_OIDC_RESPONSE, status_code=200)
|
|
132 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKE_USER_DEMANDS_RESPONSE, status_code=200)
|
|
133 | 133 |
resp = app.get(endpoint) |
134 | 134 |
result = resp.json |
135 | 135 |
assert resp.json['data'] |
... | ... | |
160 | 160 |
}, |
161 | 161 |
) |
162 | 162 | |
163 |
mocked_post.return_value = utils.FakedResponse(content=FAKE_LOGIN_OIDC_RESPONSE, status_code=200) |
|
164 |
mocked_get.return_value = utils.FakedResponse( |
|
163 |
mocked_post.return_value = tests.utils.FakedResponse(content=FAKE_LOGIN_OIDC_RESPONSE, status_code=200)
|
|
164 |
mocked_get.return_value = tests.utils.FakedResponse(
|
|
165 | 165 |
content='{"IsSuccess": false, "CodErreur": "Fail", "LibErreur": "Failed to get demands"}', |
166 | 166 |
status_code=200, |
167 | 167 |
) |
... | ... | |
182 | 182 |
}, |
183 | 183 |
) |
184 | 184 | |
185 |
with utils.mock_url(url='/LoginParSubOIDC', response=FAKE_LOGIN_OIDC_RESPONSE): |
|
186 |
with utils.mock_url(url='/DemandesUsager', status_code=404): |
|
185 |
with tests.utils.mock_url(url='/LoginParSubOIDC', response=FAKE_LOGIN_OIDC_RESPONSE):
|
|
186 |
with tests.utils.mock_url(url='/DemandesUsager', status_code=404):
|
|
187 | 187 |
resp = app.get(endpoint) |
188 | 188 |
result = resp.json |
189 | 189 |
assert result['err'] == 1 |
... | ... | |
204 | 204 |
}, |
205 | 205 |
) |
206 | 206 | |
207 |
mocked_post.return_value = utils.FakedResponse(content=FAKE_LOGIN_OIDC_RESPONSE, status_code=200) |
|
208 |
mocked_get.return_value = utils.FakedResponse(content='content', status_code=200) |
|
207 |
mocked_post.return_value = tests.utils.FakedResponse(content=FAKE_LOGIN_OIDC_RESPONSE, status_code=200)
|
|
208 |
mocked_get.return_value = tests.utils.FakedResponse(content='content', status_code=200)
|
|
209 | 209 |
resp = app.get(endpoint) |
210 | 210 |
result = resp.json |
211 | 211 |
assert result['err'] == 1 |
... | ... | |
228 | 228 |
demands_response = json.loads(FAKE_USER_DEMANDS_RESPONSE) |
229 | 229 |
demands_response['Data']['results'][0]['data_administratives']['date_depot'] = None |
230 | 230 | |
231 |
mocked_post.return_value = utils.FakedResponse(content=FAKE_LOGIN_OIDC_RESPONSE, status_code=200) |
|
232 |
mocked_get.return_value = utils.FakedResponse(content=json.dumps(demands_response), status_code=200) |
|
231 |
mocked_post.return_value = tests.utils.FakedResponse(content=FAKE_LOGIN_OIDC_RESPONSE, status_code=200)
|
|
232 |
mocked_get.return_value = tests.utils.FakedResponse(content=json.dumps(demands_response), status_code=200)
|
|
233 | 233 |
resp = app.get(endpoint) |
234 | 234 |
result = resp.json |
235 | 235 |
assert result['err'] == 1 |
... | ... | |
251 | 251 | |
252 | 252 |
token_response = json.loads(FAKE_LOGIN_OIDC_RESPONSE) |
253 | 253 |
del token_response['Data']['AccessToken'] |
254 |
mocked_post.return_value = utils.FakedResponse(content=json.dumps(token_response), status_code=200) |
|
255 |
mocked_get.return_value = utils.FakedResponse(content='content', status_code=200) |
|
254 |
mocked_post.return_value = tests.utils.FakedResponse(content=json.dumps(token_response), status_code=200)
|
|
255 |
mocked_get.return_value = tests.utils.FakedResponse(content='content', status_code=200)
|
|
256 | 256 |
resp = app.get(endpoint) |
257 | 257 |
result = resp.json |
258 | 258 |
assert result['err'] == 1 |
... | ... | |
274 | 274 | |
275 | 275 |
token_response = json.loads(FAKE_LOGIN_OIDC_RESPONSE) |
276 | 276 |
token_response['Data']['AccessToken'] = None |
277 |
mocked_post.return_value = utils.FakedResponse(content=json.dumps(token_response), status_code=200) |
|
278 |
mocked_get.return_value = utils.FakedResponse(content='content', status_code=200) |
|
277 |
mocked_post.return_value = tests.utils.FakedResponse(content=json.dumps(token_response), status_code=200)
|
|
278 |
mocked_get.return_value = tests.utils.FakedResponse(content='content', status_code=200)
|
|
279 | 279 |
resp = app.get(endpoint) |
280 | 280 |
result = resp.json |
281 | 281 |
assert result['err'] == 1 |
tests/test_astech.py | ||
---|---|---|
18 | 18 | |
19 | 19 |
import mock |
20 | 20 |
import pytest |
21 |
import utils |
|
22 | 21 |
from django.urls import reverse |
23 | 22 |
from requests import Request |
24 | 23 |
from requests.exceptions import ConnectionError |
25 | 24 | |
25 |
import tests.utils |
|
26 | 26 |
from passerelle.apps.astech.models import ASTech |
27 | 27 |
from passerelle.utils.jsonresponse import APIError |
28 | 28 | |
29 | 29 | |
30 | 30 |
@pytest.fixture |
31 | 31 |
def setup(db): |
32 |
return utils.setup_access_rights( |
|
32 |
return tests.utils.setup_access_rights(
|
|
33 | 33 |
ASTech.objects.create( |
34 | 34 |
slug='test', |
35 | 35 |
base_url='https://astech.example.net/app.php/', |
... | ... | |
82 | 82 | |
83 | 83 |
@mock.patch("passerelle.utils.Request.request") |
84 | 84 |
def test_connections(mocked_request, app, setup): |
85 |
mocked_request.return_value = utils.FakedResponse(content=CONNECTION_RESPONSE, status_code=200) |
|
85 |
mocked_request.return_value = tests.utils.FakedResponse(content=CONNECTION_RESPONSE, status_code=200)
|
|
86 | 86 |
endpoint = reverse( |
87 | 87 |
"generic-endpoint", |
88 | 88 |
kwargs={"connector": "astech", "slug": setup.slug, "endpoint": "connections"}, |
... | ... | |
104 | 104 |
assert response.json["data"]["default"] == "TEST" |
105 | 105 | |
106 | 106 |
# bad response |
107 |
mocked_request.return_value = utils.FakedResponse( |
|
107 |
mocked_request.return_value = tests.utils.FakedResponse(
|
|
108 | 108 |
content='{"msg": "not found"}', status_code=404, reason="Not Found" |
109 | 109 |
) |
110 | 110 |
response = app.get(endpoint) |
... | ... | |
113 | 113 |
assert response.json["err_desc"] == "AS-TECH response: 404 Not Found" |
114 | 114 |
assert response.json["data"]["error"]["status"] == 404 |
115 | 115 |
assert response.json["data"]["error"]["content"]["msg"] == "not found" |
116 |
mocked_request.return_value = utils.FakedResponse(content="crash", status_code=500, reason="Crashhhh") |
|
116 |
mocked_request.return_value = tests.utils.FakedResponse( |
|
117 |
content="crash", status_code=500, reason="Crashhhh" |
|
118 |
) |
|
117 | 119 |
response = app.get(endpoint) |
118 | 120 |
assert response.json["err"] == 1 |
119 | 121 |
assert response.json["err_class"].endswith("APIError") |
120 | 122 |
assert response.json["err_desc"] == "AS-TECH response: 500 Crashhhh" |
121 | 123 |
assert response.json["data"]["error"]["status"] == 500 |
122 | 124 |
assert response.json["data"]["error"]["content"] == "crash" |
123 |
mocked_request.return_value = utils.FakedResponse(content="not json", status_code=200, reason="OK") |
|
125 |
mocked_request.return_value = tests.utils.FakedResponse(content="not json", status_code=200, reason="OK")
|
|
124 | 126 |
response = app.get(endpoint) |
125 | 127 |
assert response.json["err"] == 1 |
126 | 128 |
assert response.json["err_class"].endswith("APIError") |
... | ... | |
135 | 137 |
@mock.patch("passerelle.utils.Request.request") |
136 | 138 |
def test_authorization(mocked_request, app, setup): |
137 | 139 |
mocked_request.side_effect = [ |
138 |
utils.FakedResponse(content=CONNECTION_RESPONSE, status_code=200), |
|
139 |
utils.FakedResponse(content=AUTH_RESPONSE, status_code=200), |
|
140 |
tests.utils.FakedResponse(content=CONNECTION_RESPONSE, status_code=200),
|
|
141 |
tests.utils.FakedResponse(content=AUTH_RESPONSE, status_code=200),
|
|
140 | 142 |
] |
141 | 143 |
endpoint = reverse( |
142 | 144 |
"generic-endpoint", |
... | ... | |
166 | 168 |
kwargs={"connector": "astech", "slug": setup.slug, "endpoint": "services"}, |
167 | 169 |
) |
168 | 170 | |
169 |
mocked_request.return_value = utils.FakedResponse(content=SERVICES_RESPONSE, status_code=200) |
|
171 |
mocked_request.return_value = tests.utils.FakedResponse(content=SERVICES_RESPONSE, status_code=200)
|
|
170 | 172 |
response = app.get(endpoint) |
171 | 173 |
assert mocked_request.call_count == 1 |
172 | 174 |
assert mocked_request.call_args[0][0] == 'post' |
... | ... | |
190 | 192 |
kwargs={"connector": "astech", "slug": setup.slug, "endpoint": "companies"}, |
191 | 193 |
) |
192 | 194 | |
193 |
mocked_request.return_value = utils.FakedResponse(content=COMPANIES_RESPONSE, status_code=200) |
|
195 |
mocked_request.return_value = tests.utils.FakedResponse(content=COMPANIES_RESPONSE, status_code=200)
|
|
194 | 196 |
response = app.get(endpoint) |
195 | 197 |
assert mocked_request.call_count == 1 |
196 | 198 |
assert mocked_request.call_args[0][0] == 'post' |
... | ... | |
214 | 216 |
) |
215 | 217 | |
216 | 218 |
mocked_request.side_effect = [ |
217 |
utils.FakedResponse(content=COMPANY_RESPONSE, status_code=200), |
|
218 |
utils.FakedResponse(content=LABELS_RESPONSE, status_code=200), |
|
219 |
tests.utils.FakedResponse(content=COMPANY_RESPONSE, status_code=200),
|
|
220 |
tests.utils.FakedResponse(content=LABELS_RESPONSE, status_code=200),
|
|
219 | 221 |
] |
220 | 222 |
response = app.get(endpoint, status=200) |
221 | 223 |
assert mocked_request.call_count == 2 |
... | ... | |
233 | 235 |
] |
234 | 236 | |
235 | 237 |
mocked_request.reset_mock(side_effect=True) |
236 |
mocked_request.return_value = utils.FakedResponse(content=LABELS_RESPONSE, status_code=200) |
|
238 |
mocked_request.return_value = tests.utils.FakedResponse(content=LABELS_RESPONSE, status_code=200)
|
|
237 | 239 |
response = app.get(endpoint + '?company=42', status=200) |
238 | 240 |
assert mocked_request.call_count == 1 |
239 | 241 |
assert mocked_request.call_args[0][0] == 'post' |
... | ... | |
253 | 255 |
) |
254 | 256 | |
255 | 257 |
mocked_request.side_effect = [ |
256 |
utils.FakedResponse(content=COMPANY_RESPONSE, status_code=200), |
|
257 |
utils.FakedResponse(content=PARAMETER_RESPONSE, status_code=200), |
|
258 |
tests.utils.FakedResponse(content=COMPANY_RESPONSE, status_code=200),
|
|
259 |
tests.utils.FakedResponse(content=PARAMETER_RESPONSE, status_code=200),
|
|
258 | 260 |
] |
259 | 261 |
response = app.get(endpoint + '?name=LIBELDEMDEF', status=200) |
260 | 262 |
assert mocked_request.call_count == 2 |
... | ... | |
266 | 268 |
assert response.json['data']['LIBELDEMDEF'] == 'O' |
267 | 269 | |
268 | 270 |
mocked_request.reset_mock(side_effect=True) |
269 |
mocked_request.return_value = utils.FakedResponse(content=PARAMETER_RESPONSE, status_code=200) |
|
271 |
mocked_request.return_value = tests.utils.FakedResponse(content=PARAMETER_RESPONSE, status_code=200)
|
|
270 | 272 |
response = app.get(endpoint + '?name=LIBELDEMDEF&company=00', status=200) |
271 | 273 |
assert mocked_request.call_count == 1 |
272 | 274 |
assert mocked_request.call_args[0][0] == 'get' |
... | ... | |
286 | 288 |
kwargs={"connector": "astech", "slug": setup.slug, "endpoint": "create-demand"}, |
287 | 289 |
) |
288 | 290 | |
289 |
mocked_request.return_value = utils.FakedResponse(content=CREATE_DEMAND_RESPONSE, status_code=201) |
|
291 |
mocked_request.return_value = tests.utils.FakedResponse(content=CREATE_DEMAND_RESPONSE, status_code=201)
|
|
290 | 292 |
demand = { |
291 | 293 |
'company': '99', |
292 | 294 |
'service': '11', |
... | ... | |
325 | 327 |
assert response.json['data']['demand_id'] == '000000000001234' |
326 | 328 | |
327 | 329 |
# mock invalid AS-TECH response |
328 |
mocked_request.return_value = utils.FakedResponse(content='{"foo":"bar"}', status_code=200) |
|
330 |
mocked_request.return_value = tests.utils.FakedResponse(content='{"foo":"bar"}', status_code=200)
|
|
329 | 331 |
response = app.post_json(endpoint, params=demand, status=200) |
330 | 332 |
assert mocked_request.call_count == 2 |
331 | 333 |
assert response.json['err'] == 1 |
... | ... | |
342 | 344 |
"generic-endpoint", |
343 | 345 |
kwargs={"connector": "astech", "slug": setup.slug, "endpoint": "add-document"}, |
344 | 346 |
) |
345 |
mocked_request.return_value = utils.FakedResponse(content=ADD_DOCUMENT_RESPONSE, status_code=201) |
|
347 |
mocked_request.return_value = tests.utils.FakedResponse(content=ADD_DOCUMENT_RESPONSE, status_code=201)
|
|
346 | 348 |
document = { |
347 | 349 |
'demand_id': '000000000001234', |
348 | 350 |
'title': 'test document', |
... | ... | |
373 | 375 |
"generic-endpoint", |
374 | 376 |
kwargs={"connector": "astech", "slug": setup.slug, "endpoint": "demand-position"}, |
375 | 377 |
) |
376 |
mocked_request.return_value = utils.FakedResponse(content=POSITION_RESPONSE, status_code=200) |
|
378 |
mocked_request.return_value = tests.utils.FakedResponse(content=POSITION_RESPONSE, status_code=200)
|
|
377 | 379 |
response = app.get(endpoint + '?demand_id=000000000001234', status=200) |
378 | 380 |
assert mocked_request.call_count == 1 |
379 | 381 |
assert mocked_request.call_args[0][0] == 'get' |
... | ... | |
388 | 390 |
} |
389 | 391 | |
390 | 392 |
# invalid AS-TECH response |
391 |
mocked_request.return_value = utils.FakedResponse(content='{"foo":"bar"}', status_code=200) |
|
393 |
mocked_request.return_value = tests.utils.FakedResponse(content='{"foo":"bar"}', status_code=200)
|
|
392 | 394 |
response = app.get(endpoint + '?demand_id=000000000001234', status=200) |
393 | 395 |
assert mocked_request.call_count == 2 |
394 | 396 |
assert response.json['err'] == 1 |
... | ... | |
403 | 405 |
"generic-endpoint", |
404 | 406 |
kwargs={"connector": "astech", "slug": setup.slug, "endpoint": "demand-all-positions"}, |
405 | 407 |
) |
406 |
mocked_request.return_value = utils.FakedResponse(content=POSITIONS_RESPONSE, status_code=200) |
|
408 |
mocked_request.return_value = tests.utils.FakedResponse(content=POSITIONS_RESPONSE, status_code=200)
|
|
407 | 409 |
response = app.get(endpoint, status=200) |
408 | 410 |
assert mocked_request.call_count == 1 |
409 | 411 |
assert mocked_request.call_args[0][0] == 'get' |
tests/test_astregs.py | ||
---|---|---|
6 | 6 | |
7 | 7 |
import mock |
8 | 8 |
import pytest |
9 |
import utils |
|
10 | 9 |
from django.utils.encoding import force_bytes, force_str, force_text |
11 | 10 |
from django.utils.http import urlencode |
12 | 11 |
from requests import Request |
13 | 12 |
from requests.exceptions import ConnectionError |
14 | 13 | |
14 |
import tests.utils |
|
15 | 15 |
from passerelle.apps.astregs.models import AstreGS, Link |
16 | 16 | |
17 | 17 |
BASE_URL = 'https://test-ws-astre-gs.departement06.fr/axis2/services/' |
... | ... | |
57 | 57 | |
58 | 58 |
@pytest.fixture |
59 | 59 |
def connector(db): |
60 |
return utils.make_resource( |
|
60 |
return tests.utils.make_resource(
|
|
61 | 61 |
AstreGS, |
62 | 62 |
title='Test', |
63 | 63 |
slug='test', |
tests/test_atos_genesys.py | ||
---|---|---|
3 | 3 |
import os |
4 | 4 | |
5 | 5 |
import pytest |
6 |
import utils |
|
7 | 6 |
from django.utils.http import urlencode |
8 | 7 | |
8 |
import tests.utils |
|
9 | 9 |
from passerelle.apps.atos_genesys.models import Link, Resource |
10 | 10 | |
11 | 11 |
FAKE_URL = 'https://sirus.fr/' |
... | ... | |
13 | 13 | |
14 | 14 |
@pytest.fixture |
15 | 15 |
def genesys(db): |
16 |
return utils.make_resource( |
|
16 |
return tests.utils.make_resource(
|
|
17 | 17 |
Resource, title='Test 1', slug='test1', description='Connecteur de test', webservice_base_url=FAKE_URL |
18 | 18 |
) |
19 | 19 | |
... | ... | |
23 | 23 |
response = open( |
24 | 24 |
os.path.join(os.path.dirname(__file__), 'data', 'genesys_select_codifications.xml') |
25 | 25 |
).read() |
26 |
with utils.mock_url(FAKE_URL, response) as mock: |
|
26 |
with tests.utils.mock_url(FAKE_URL, response) as mock:
|
|
27 | 27 |
yield mock |
28 | 28 | |
29 | 29 | |
... | ... | |
43 | 43 | |
44 | 44 | |
45 | 45 |
def test_ws_categories(app, genesys, mock_codifications_ok): |
46 |
url = utils.generic_endpoint_url('atos-genesys', 'codifications', slug=genesys.slug) |
|
46 |
url = tests.utils.generic_endpoint_url('atos-genesys', 'codifications', slug=genesys.slug)
|
|
47 | 47 |
response = app.get(url) |
48 | 48 |
assert response.json['err'] == 0 |
49 | 49 |
assert response.json['data'] |
... | ... | |
51 | 51 | |
52 | 52 | |
53 | 53 |
def test_ws_codifications(app, genesys, mock_codifications_ok): |
54 |
url = utils.generic_endpoint_url('atos-genesys', 'codifications', slug=genesys.slug) |
|
54 |
url = tests.utils.generic_endpoint_url('atos-genesys', 'codifications', slug=genesys.slug)
|
|
55 | 55 |
url += '/MOT_APA/' |
56 | 56 |
response = app.get(url) |
57 | 57 |
assert response.json['err'] == 0 |
... | ... | |
64 | 64 | |
65 | 65 |
cache.clear() |
66 | 66 | |
67 |
url = utils.generic_endpoint_url('atos-genesys', 'codifications', slug=genesys.slug) |
|
67 |
url = tests.utils.generic_endpoint_url('atos-genesys', 'codifications', slug=genesys.slug)
|
|
68 | 68 |
url += '/MOT_APA/' |
69 | 69 |
response = app.get(url) |
70 | 70 |
assert response.json['err'] == 1 |
... | ... | |
77 | 77 | |
78 | 78 | |
79 | 79 |
def test_ws_link_unknown_appairage(app, genesys): |
80 |
url = utils.generic_endpoint_url('atos-genesys', 'link', slug=genesys.slug) |
|
81 |
with utils.mock_url(FAKE_URL, RESPONSE_UNKNOWN_LOGIN): |
|
80 |
url = tests.utils.generic_endpoint_url('atos-genesys', 'link', slug=genesys.slug)
|
|
81 |
with tests.utils.mock_url(FAKE_URL, RESPONSE_UNKNOWN_LOGIN):
|
|
82 | 82 |
response = app.post( |
83 | 83 |
url |
84 | 84 |
+ '?' |
... | ... | |
99 | 99 | |
100 | 100 | |
101 | 101 |
def test_ws_link_created(app, genesys): |
102 |
url = utils.generic_endpoint_url('atos-genesys', 'link', slug=genesys.slug) |
|
102 |
url = tests.utils.generic_endpoint_url('atos-genesys', 'link', slug=genesys.slug)
|
|
103 | 103 |
assert Link.objects.count() == 0 |
104 |
with utils.mock_url(FAKE_URL, RESPONSE_CREATED): |
|
104 |
with tests.utils.mock_url(FAKE_URL, RESPONSE_CREATED):
|
|
105 | 105 |
response = app.post( |
106 | 106 |
url |
107 | 107 |
+ '?' |
... | ... | |
115 | 115 |
assert response.json['new'] |
116 | 116 |
assert Link.objects.filter(name_id='zob', id_per='789', resource=genesys).count() == 1 |
117 | 117 | |
118 |
with utils.mock_url(FAKE_URL, RESPONSE_SELECT_USAGER): |
|
119 |
dossiers_url = utils.generic_endpoint_url('atos-genesys', 'dossiers', slug=genesys.slug) |
|
118 |
with tests.utils.mock_url(FAKE_URL, RESPONSE_SELECT_USAGER):
|
|
119 |
dossiers_url = tests.utils.generic_endpoint_url('atos-genesys', 'dossiers', slug=genesys.slug)
|
|
120 | 120 |
response = app.get( |
121 | 121 |
dossiers_url |
122 | 122 |
+ '?' |
... | ... | |
127 | 127 |
) |
128 | 128 |
) |
129 | 129 | |
130 |
url = utils.generic_endpoint_url('atos-genesys', 'unlink', slug=genesys.slug) |
|
130 |
url = tests.utils.generic_endpoint_url('atos-genesys', 'unlink', slug=genesys.slug)
|
|
131 | 131 |
response = app.post( |
132 | 132 |
url |
133 | 133 |
+ '?' |
... | ... | |
151 | 151 |
def test_ws_dossiers(app, genesys): |
152 | 152 |
link = Link.objects.create(resource=genesys, name_id='zob', id_per='1234') |
153 | 153 | |
154 |
url = utils.generic_endpoint_url('atos-genesys', 'dossiers', slug=genesys.slug) |
|
155 |
with utils.mock_url(FAKE_URL, RESPONSE_SELECT_USAGER): |
|
154 |
url = tests.utils.generic_endpoint_url('atos-genesys', 'dossiers', slug=genesys.slug)
|
|
155 |
with tests.utils.mock_url(FAKE_URL, RESPONSE_SELECT_USAGER):
|
|
156 | 156 |
response = app.get( |
157 | 157 |
url |
158 | 158 |
+ '?' |
... | ... | |
177 | 177 | |
178 | 178 |
link2 = Link.objects.create(resource=genesys, name_id='zob', id_per='4567') |
179 | 179 | |
180 |
with utils.mock_url(FAKE_URL, RESPONSE_SELECT_USAGER): |
|
180 |
with tests.utils.mock_url(FAKE_URL, RESPONSE_SELECT_USAGER):
|
|
181 | 181 |
response = app.get( |
182 | 182 |
url |
183 | 183 |
+ '?' |
... | ... | |
199 | 199 |
assert response.json['data'][1]['id'] == str(link2.id) |
200 | 200 |
assert response.json['data'][1]['text'] == u'%s - John DOE' % link2.id_per |
201 | 201 | |
202 |
with utils.mock_url(FAKE_URL, RESPONSE_SELECT_USAGER): |
|
202 |
with tests.utils.mock_url(FAKE_URL, RESPONSE_SELECT_USAGER):
|
|
203 | 203 |
response = app.get( |
204 | 204 |
url |
205 | 205 |
+ '?' |
... | ... | |
305 | 305 | |
306 | 306 | |
307 | 307 |
def test_ws_search(app, genesys): |
308 |
url = utils.generic_endpoint_url('atos-genesys', 'search', slug=genesys.slug) |
|
308 |
url = tests.utils.generic_endpoint_url('atos-genesys', 'search', slug=genesys.slug)
|
|
309 | 309 | |
310 |
with utils.mock_url( |
|
310 |
with tests.utils.mock_url(
|
|
311 | 311 |
FAKE_URL + 'WSUsagerPublik/services/PublikService/chercheBeneficiaire', RESPONSE_SEARCH |
312 | 312 |
): |
313 |
with utils.mock_url( |
|
313 |
with tests.utils.mock_url(
|
|
314 | 314 |
FAKE_URL + 'WSUsagerPublik/services/PublikService/selectUsager', RESPONSE_SELECT_USAGER |
315 | 315 |
): |
316 | 316 |
response = app.get( |
... | ... | |
360 | 360 |
}, |
361 | 361 |
] |
362 | 362 | |
363 |
with utils.mock_url( |
|
363 |
with tests.utils.mock_url(
|
|
364 | 364 |
FAKE_URL + 'WSUsagerPublik/services/PublikService/chercheBeneficiaire', RESPONSE_SEARCH |
365 | 365 |
): |
366 |
with utils.mock_url( |
|
366 |
with tests.utils.mock_url(
|
|
367 | 367 |
FAKE_URL + 'WSUsagerPublik/services/PublikService/selectUsager', RESPONSE_SELECT_USAGER |
368 | 368 |
): |
369 | 369 |
response = app.get( |
... | ... | |
381 | 381 |
assert response.json['err'] == 1 |
382 | 382 |
assert response.json['err_desc'] == 'not-found' |
383 | 383 | |
384 |
with utils.mock_url( |
|
384 |
with tests.utils.mock_url(
|
|
385 | 385 |
FAKE_URL + 'WSUsagerPublik/services/PublikService/chercheBeneficiaire', RESPONSE_SEARCH |
386 | 386 |
): |
387 |
with utils.mock_url( |
|
387 |
with tests.utils.mock_url(
|
|
388 | 388 |
FAKE_URL + 'WSUsagerPublik/services/PublikService/selectUsager', RESPONSE_SELECT_USAGER |
389 | 389 |
): |
390 | 390 |
response = app.get( |
... | ... | |
401 | 401 |
assert response.json['err'] == 1 |
402 | 402 |
assert response.json['err_desc'] == 'not-found' |
403 | 403 | |
404 |
with utils.mock_url( |
|
404 |
with tests.utils.mock_url(
|
|
405 | 405 |
FAKE_URL + 'WSUsagerPublik/services/PublikService/chercheBeneficiaire', RESPONSE_SEARCH |
406 | 406 |
): |
407 |
with utils.mock_url( |
|
407 |
with tests.utils.mock_url(
|
|
408 | 408 |
FAKE_URL + 'WSUsagerPublik/services/PublikService/selectUsager', |
409 | 409 |
RESPONSE_SELECT_USAGER_NO_CONTACTS, |
410 | 410 |
): |
... | ... | |
424 | 424 | |
425 | 425 | |
426 | 426 |
def test_ws_link_by_id_per(app, genesys): |
427 |
url = utils.generic_endpoint_url('atos-genesys', 'link-by-id-per', slug=genesys.slug) |
|
427 |
url = tests.utils.generic_endpoint_url('atos-genesys', 'link-by-id-per', slug=genesys.slug)
|
|
428 | 428 | |
429 | 429 |
assert Link.objects.count() == 0 |
430 |
with utils.mock_url( |
|
430 |
with tests.utils.mock_url(
|
|
431 | 431 |
FAKE_URL + 'WSUsagerPublik/services/PublikService/selectUsager', RESPONSE_SELECT_USAGER |
432 | 432 |
): |
433 | 433 |
response = app.post( |
... | ... | |
448 | 448 |
assert data['new'] |
449 | 449 |
assert data['link_id'] == link.pk |
450 | 450 | |
451 |
url = utils.generic_endpoint_url('atos-genesys', 'search', slug=genesys.slug) |
|
451 |
url = tests.utils.generic_endpoint_url('atos-genesys', 'search', slug=genesys.slug)
|
|
452 | 452 | |
453 |
with utils.mock_url( |
|
453 |
with tests.utils.mock_url(
|
|
454 | 454 |
FAKE_URL + 'WSUsagerPublik/services/PublikService/chercheBeneficiaire', RESPONSE_SEARCH |
455 | 455 |
): |
456 |
with utils.mock_url( |
|
456 |
with tests.utils.mock_url(
|
|
457 | 457 |
FAKE_URL + 'WSUsagerPublik/services/PublikService/selectUsager', RESPONSE_SELECT_USAGER |
458 | 458 |
): |
459 | 459 |
response = app.get( |
tests/test_availability.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 | |
3 | 3 |
import pytest |
4 |
import utils |
|
5 | 4 |
from httmock import HTTMock, all_requests |
6 | 5 | |
6 |
import tests.utils |
|
7 | 7 |
from passerelle.apps.feeds.models import Feed |
8 | 8 | |
9 | 9 |
FEED_EXAMPLE = u"""<?xml version="1.0" encoding="UTF-8"?> |
... | ... | |
42 | 42 | |
43 | 43 |
@pytest.fixture |
44 | 44 |
def connector(db): |
45 |
return utils.setup_access_rights(Feed.objects.create(slug='test', url='http://example.net/')) |
|
45 |
return tests.utils.setup_access_rights(Feed.objects.create(slug='test', url='http://example.net/'))
|
|
46 | 46 | |
47 | 47 | |
48 | 48 |
@all_requests |
tests/test_base_adresse.py | ||
---|---|---|
6 | 6 | |
7 | 7 |
import mock |
8 | 8 |
import pytest |
9 |
import utils |
|
10 | 9 |
from django.core.management import call_command |
11 | 10 |
from django.core.management.base import CommandError |
12 | 11 |
from django.utils.six.moves.urllib.parse import urljoin |
13 | 12 |
from requests.exceptions import ConnectionError, HTTPError |
14 | 13 | |
14 |
import tests.utils |
|
15 | 15 |
from passerelle.apps.base_adresse.models import ( |
16 | 16 |
AddressCacheModel, |
17 | 17 |
BaseAdresse, |
... | ... | |
88 | 88 | |
89 | 89 |
@pytest.fixture |
90 | 90 |
def base_adresse(db): |
91 |
return utils.setup_access_rights(BaseAdresse.objects.create(slug='base-adresse', zipcode='73')) |
|
91 |
return tests.utils.setup_access_rights(BaseAdresse.objects.create(slug='base-adresse', zipcode='73'))
|
|
92 | 92 | |
93 | 93 | |
94 | 94 |
@pytest.fixture |
95 | 95 |
def base_adresse_97x(db): |
96 |
return utils.setup_access_rights(BaseAdresse.objects.create(slug='base-adresse-97x', zipcode='97425')) |
|
96 |
return tests.utils.setup_access_rights( |
|
97 |
BaseAdresse.objects.create(slug='base-adresse-97x', zipcode='97425') |
|
98 |
) |
|
97 | 99 | |
98 | 100 | |
99 | 101 |
@pytest.fixture |
100 | 102 |
def base_adresse_corsica(db): |
101 |
return utils.setup_access_rights(BaseAdresse.objects.create(slug='base-adresse', zipcode='20000, 20100 ')) |
|
103 |
return tests.utils.setup_access_rights( |
|
104 |
BaseAdresse.objects.create(slug='base-adresse', zipcode='20000, 20100 ') |
|
105 |
) |
|
102 | 106 | |
103 | 107 | |
104 | 108 |
@pytest.fixture |
105 | 109 |
def base_adresse_multiple(db): |
106 |
return utils.setup_access_rights( |
|
110 |
return tests.utils.setup_access_rights(
|
|
107 | 111 |
BaseAdresse.objects.create(slug='base-adresse', zipcode='73, 73100, 97425,20000 ') |
108 | 112 |
) |
109 | 113 | |
110 | 114 | |
111 | 115 |
@pytest.fixture |
112 | 116 |
def base_adresse_coordinates(db): |
113 |
return utils.setup_access_rights( |
|
117 |
return tests.utils.setup_access_rights(
|
|
114 | 118 |
BaseAdresse.objects.create(slug='base-adresse', latitude=1.2, longitude=2.1) |
115 | 119 |
) |
116 | 120 | |
... | ... | |
184 | 188 | |
185 | 189 |
@mock.patch('passerelle.utils.Request.get') |
186 | 190 |
def test_base_adresse_search(mocked_get, app, base_adresse): |
187 |
endpoint = utils.generic_endpoint_url('base-adresse', 'search', slug=base_adresse.slug) |
|
191 |
endpoint = tests.utils.generic_endpoint_url('base-adresse', 'search', slug=base_adresse.slug)
|
|
188 | 192 |
assert endpoint == '/base-adresse/base-adresse/search' |
189 |
mocked_get.return_value = utils.FakedResponse(content=FAKED_CONTENT, status_code=200) |
|
193 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKED_CONTENT, status_code=200)
|
|
190 | 194 |
resp = app.get(endpoint, params={'q': 'plop'}, status=200) |
191 | 195 |
data = resp.json[0] |
192 | 196 |
assert data['lat'] == '47.474633' |
... | ... | |
198 | 202 |
def test_base_adresse_search_path(mocked_get, app, base_adresse): |
199 | 203 |
base_adresse.service_url = 'http://example.net/path/' |
200 | 204 |
base_adresse.save() |
201 |
endpoint = utils.generic_endpoint_url('base-adresse', 'search', slug=base_adresse.slug) |
|
202 |
mocked_get.return_value = utils.FakedResponse(content=FAKED_CONTENT, status_code=200) |
|
205 |
endpoint = tests.utils.generic_endpoint_url('base-adresse', 'search', slug=base_adresse.slug)
|
|
206 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKED_CONTENT, status_code=200)
|
|
203 | 207 |
resp = app.get(endpoint, params={'q': 'plop'}, status=200) |
204 | 208 |
assert mocked_get.call_args[0][0].startswith('http://example.net/path/search/?') |
205 | 209 |
data = resp.json[0] |
... | ... | |
257 | 261 |
def raise_for_status(): |
258 | 262 |
raise HTTPError("400 Client Error: Bad Request for url: xxx") |
259 | 263 | |
260 |
response = utils.FakedResponse(content=json.dumps({'title': 'error'}), status_code=400) |
|
264 |
response = tests.utils.FakedResponse(content=json.dumps({'title': 'error'}), status_code=400)
|
|
261 | 265 |
response.raise_for_status = raise_for_status |
262 | 266 |
mocked_get.return_value = response |
263 | 267 |
resp = app.get('/base-adresse/%s/search' % base_adresse.slug, params={'q': 'plop'}, status=200) |
... | ... | |
309 | 313 |
} |
310 | 314 |
) |
311 | 315 |
faked_content = json.dumps(content) |
312 |
mocked_get.return_value = utils.FakedResponse(content=faked_content, status_code=200) |
|
316 |
mocked_get.return_value = tests.utils.FakedResponse(content=faked_content, status_code=200)
|
|
313 | 317 |
resp = app.get('/base-adresse/%s/reverse?lon=-0.593775&lat=47.474633' % base_adresse.slug) |
314 | 318 |
data = resp.json |
315 | 319 |
assert data['address']['road'] == 'Rue Roger Halope' |
... | ... | |
317 | 321 | |
318 | 322 |
@mock.patch('passerelle.utils.Request.get') |
319 | 323 |
def test_base_adresse_reverse_path(mocked_get, app, base_adresse): |
320 |
mocked_get.return_value = utils.FakedResponse(content=json.dumps({'features': []}), status_code=200) |
|
324 |
mocked_get.return_value = tests.utils.FakedResponse(content=json.dumps({'features': []}), status_code=200)
|
|
321 | 325 |
base_adresse.service_url = 'http://example.net/path/' |
322 | 326 |
base_adresse.save() |
323 | 327 |
app.get('/base-adresse/%s/reverse?lon=-0.593775&lat=47.474633' % base_adresse.slug) |
... | ... | |
434 | 438 |
def test_base_adresse_command_update(mocked_get, db, base_adresse): |
435 | 439 |
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.gz') |
436 | 440 |
with open(filepath, 'rb') as ban_file: |
437 |
mocked_get.return_value = utils.FakedResponse(content=ban_file.read(), status_code=200) |
|
441 |
mocked_get.return_value = tests.utils.FakedResponse(content=ban_file.read(), status_code=200)
|
|
438 | 442 |
call_command('cron', 'daily') |
439 | 443 |
mocked_get.assert_called_once_with( |
440 | 444 |
'https://adresse.data.gouv.fr/data/ban/adresses/latest/addok/adresses-addok-73.ndjson.gz' |
... | ... | |
462 | 466 |
base_adresse.update_api_geo_data = lambda: None |
463 | 467 |
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.gz') |
464 | 468 |
with open(filepath, 'rb') as ban_file: |
465 |
mocked_get.return_value = utils.FakedResponse(content=ban_file.read(), status_code=200) |
|
469 |
mocked_get.return_value = tests.utils.FakedResponse(content=ban_file.read(), status_code=200)
|
|
466 | 470 |
# check the job added at save() downloads streets |
467 | 471 |
base_adresse.jobs() |
468 | 472 |
mocked_get.assert_called_once_with( |
... | ... | |
488 | 492 |
base_adresse_97x.update_api_geo_data = lambda: None |
489 | 493 |
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.gz') |
490 | 494 |
with open(filepath, 'rb') as ban_file: |
491 |
mocked_get.return_value = utils.FakedResponse(content=ban_file.read(), status_code=200) |
|
495 |
mocked_get.return_value = tests.utils.FakedResponse(content=ban_file.read(), status_code=200)
|
|
492 | 496 |
call_command('cron', 'daily') |
493 | 497 |
mocked_get.assert_called_once_with( |
494 | 498 |
'https://adresse.data.gouv.fr/data/ban/adresses/latest/addok/adresses-addok-974.ndjson.gz' |
... | ... | |
502 | 506 |
base_adresse_corsica.update_api_geo_data = lambda: None |
503 | 507 |
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.gz') |
504 | 508 |
with open(filepath, 'rb') as ban_file: |
505 |
mocked_get.return_value = utils.FakedResponse(content=ban_file.read(), status_code=200) |
|
509 |
mocked_get.return_value = tests.utils.FakedResponse(content=ban_file.read(), status_code=200)
|
|
506 | 510 |
call_command('cron', 'daily') |
507 | 511 |
assert mocked_get.call_count == 2 |
508 | 512 |
mocked_get.assert_any_call( |
... | ... | |
520 | 524 |
base_adresse_multiple.update_api_geo_data = lambda: None |
521 | 525 |
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.gz') |
522 | 526 |
with open(filepath, 'rb') as ban_file: |
523 |
mocked_get.return_value = utils.FakedResponse(content=ban_file.read(), status_code=200) |
|
527 |
mocked_get.return_value = tests.utils.FakedResponse(content=ban_file.read(), status_code=200)
|
|
524 | 528 |
call_command('cron', 'daily') |
525 | 529 |
assert mocked_get.call_count == 4 |
526 | 530 |
mocked_get.assert_any_call( |
... | ... | |
691 | 695 |
@mock.patch('passerelle.utils.Request.get') |
692 | 696 |
def test_base_adresse_command_update_geo(mocked_get, db, base_adresse, base_adresse_97x): |
693 | 697 |
return_values = [ |
694 |
utils.FakedResponse(content=content, status_code=200) |
|
698 |
tests.utils.FakedResponse(content=content, status_code=200)
|
|
695 | 699 |
for content in (FAKE_API_GEO_REGIONS, FAKE_API_GEO_DEPARTMENTS, FAKE_API_GEO) * 2 |
696 | 700 |
] |
697 | 701 |
mocked_get.side_effect = return_values |
... | ... | |
758 | 762 |
@mock.patch('passerelle.utils.Request.get') |
759 | 763 |
def test_base_adresse_command_update_geo_delete(mocked_get, db, base_adresse): |
760 | 764 |
return_values = [ |
761 |
utils.FakedResponse(content=content, status_code=200) |
|
765 |
tests.utils.FakedResponse(content=content, status_code=200)
|
|
762 | 766 |
for content in (FAKE_API_GEO_REGIONS, FAKE_API_GEO_DEPARTMENTS, FAKE_API_GEO) |
763 | 767 |
] |
764 | 768 |
mocked_get.side_effect = return_values |
... | ... | |
767 | 771 | |
768 | 772 |
new_fake_api_geo = json.dumps([FAKE_API_GEO_LIST[1]]) |
769 | 773 |
return_values = [ |
770 |
utils.FakedResponse(content=content, status_code=200) |
|
774 |
tests.utils.FakedResponse(content=content, status_code=200)
|
|
771 | 775 |
for content in (FAKE_API_GEO_REGIONS, FAKE_API_GEO_DEPARTMENTS, new_fake_api_geo) |
772 | 776 |
] |
773 | 777 |
mocked_get.side_effect = return_values |
... | ... | |
779 | 783 |
@mock.patch('passerelle.utils.Request.get') |
780 | 784 |
def test_base_adresse_command_job_update_geo(mocked_get, db, base_adresse): |
781 | 785 |
return_values = [ |
782 |
utils.FakedResponse(content=content, status_code=200) |
|
786 |
tests.utils.FakedResponse(content=content, status_code=200)
|
|
783 | 787 |
for content in (FAKE_API_GEO_REGIONS, FAKE_API_GEO_DEPARTMENTS, FAKE_API_GEO) |
784 | 788 |
] |
785 | 789 |
mocked_get.side_effect = return_values |
... | ... | |
796 | 800 |
@pytest.mark.usefixtures('mock_update_streets') |
797 | 801 |
@mock.patch('passerelle.utils.Request.get') |
798 | 802 |
def test_base_adresse_command_update_geo_invalid(mocked_get, db, base_adresse): |
799 |
mocked_get.return_value = utils.FakedResponse(content='{}', status_code=200) |
|
803 |
mocked_get.return_value = tests.utils.FakedResponse(content='{}', status_code=200)
|
|
800 | 804 |
with pytest.raises(CommandError): |
801 | 805 |
call_command('cron', 'daily') |
802 | 806 |
assert mocked_get.call_count == 1 |
803 | 807 |
assert not RegionModel.objects.exists() |
804 | 808 | |
805 |
mocked_get.return_value = utils.FakedResponse(content=FAKE_API_GEO, status_code=500) |
|
809 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKE_API_GEO, status_code=500)
|
|
806 | 810 |
call_command('cron', 'daily') |
807 | 811 |
assert mocked_get.call_count == 4 |
808 | 812 |
assert not RegionModel.objects.exists() |
809 | 813 | |
810 |
mocked_get.return_value = utils.FakedResponse(content='not-json', status_code=200) |
|
814 |
mocked_get.return_value = tests.utils.FakedResponse(content='not-json', status_code=200)
|
|
811 | 815 |
call_command('cron', 'daily') |
812 | 816 |
assert mocked_get.call_count == 7 |
813 | 817 |
assert not RegionModel.objects.exists() |
... | ... | |
831 | 835 | |
832 | 836 |
@mock.patch('passerelle.utils.Request.get') |
833 | 837 |
def test_base_adresse_addresses(mocked_get, app, base_adresse): |
834 |
endpoint = utils.generic_endpoint_url('base-adresse', 'addresses', slug=base_adresse.slug) |
|
838 |
endpoint = tests.utils.generic_endpoint_url('base-adresse', 'addresses', slug=base_adresse.slug)
|
|
835 | 839 |
assert endpoint == '/base-adresse/base-adresse/addresses' |
836 |
mocked_get.return_value = utils.FakedResponse(content=FAKED_CONTENT, status_code=200) |
|
840 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKED_CONTENT, status_code=200)
|
|
837 | 841 |
resp = app.get(endpoint, params={'q': 'plop'}, status=200) |
838 | 842 |
data = resp.json['data'][0] |
839 | 843 |
assert data['lat'] == '47.474633' |
... | ... | |
953 | 957 | |
954 | 958 |
@mock.patch('passerelle.utils.Request.get') |
955 | 959 |
def test_base_adresse_addresses_data_change(mocked_get, app, base_adresse): |
956 |
endpoint = utils.generic_endpoint_url('base-adresse', 'addresses', slug=base_adresse.slug) |
|
957 |
mocked_get.return_value = utils.FakedResponse(content=FAKED_CONTENT, status_code=200) |
|
960 |
endpoint = tests.utils.generic_endpoint_url('base-adresse', 'addresses', slug=base_adresse.slug)
|
|
961 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKED_CONTENT, status_code=200)
|
|
958 | 962 | |
959 | 963 |
# one user selects an address |
960 | 964 |
resp = app.get(endpoint, params={'q': 'plop'}, status=200) |
... | ... | |
964 | 968 |
# another requests the same while upstream data has been updated |
965 | 969 |
new_content = json.loads(FAKED_CONTENT) |
966 | 970 |
new_content['features'][0]['properties']['label'] = 'changed' |
967 |
mocked_get.return_value = utils.FakedResponse(content=json.dumps(new_content), status_code=200) |
|
971 |
mocked_get.return_value = tests.utils.FakedResponse(content=json.dumps(new_content), status_code=200)
|
|
968 | 972 |
resp = app.get(endpoint, params={'q': 'plop'}, status=200) |
969 | 973 | |
970 | 974 |
# first user saves the form, data should not have changed |
tests/test_caluire_axel.py | ||
---|---|---|
23 | 23 |
import freezegun |
24 | 24 |
import mock |
25 | 25 |
import pytest |
26 |
import utils |
|
27 | 26 |
import xmlschema |
28 | 27 | |
28 |
import tests.utils |
|
29 | 29 |
from passerelle.contrib.caluire_axel import schemas |
30 | 30 |
from passerelle.contrib.caluire_axel.models import CaluireAxel, Link |
31 | 31 |
from passerelle.contrib.utils.axel import AxelError, OperationResult, json_date_format, xml_date_format |
... | ... | |
47 | 47 | |
48 | 48 |
@pytest.fixture |
49 | 49 |
def resource(db): |
50 |
return utils.make_resource( |
|
50 |
return tests.utils.make_resource(
|
|
51 | 51 |
CaluireAxel, slug='test', wsdl_url='http://example.net/AXEL_WS/AxelWS.php?wsdl' |
52 | 52 |
) |
53 | 53 |
tests/test_cartads_cs.py | ||
---|---|---|
7 | 7 | |
8 | 8 |
import mock |
9 | 9 |
import pytest |
10 |
import utils |
|
11 | 10 |
from django.core.files.storage import default_storage |
12 | 11 |
from django.test import override_settings |
13 | 12 |
from httmock import HTTMock |
14 | 13 | |
14 |
import tests.utils |
|
15 | 15 |
from passerelle.apps.cartads_cs.models import CartaDSCS, CartaDSDossier, CartaDSFile |
16 | 16 |
from passerelle.base.models import Job |
17 | 17 |
from passerelle.compat import json_loads |
... | ... | |
19 | 19 | |
20 | 20 |
@pytest.fixture |
21 | 21 |
def connector(db): |
22 |
return utils.make_resource( |
|
22 |
return tests.utils.make_resource(
|
|
23 | 23 |
CartaDSCS, |
24 | 24 |
title='Test', |
25 | 25 |
slug='test', |
tests/test_cityweb.py | ||
---|---|---|
24 | 24 | |
25 | 25 |
import mock |
26 | 26 |
import pytest |
27 |
import utils |
|
28 | 27 |
from django.core.files.storage import default_storage |
29 | 28 |
from lxml import etree |
30 | 29 |
from lxml import objectify as xobject |
31 | 30 | |
31 |
import tests.utils |
|
32 | 32 |
from passerelle.apps.cityweb.cityweb import DateType |
33 | 33 |
from passerelle.apps.cityweb.models import CityWeb |
34 | 34 |
from passerelle.utils.jsonresponse import APIError |
... | ... | |
46 | 46 | |
47 | 47 |
@pytest.fixture |
48 | 48 |
def setup(db): |
49 |
return utils.setup_access_rights(CityWeb.objects.create(slug='test')) |
|
49 |
return tests.utils.setup_access_rights(CityWeb.objects.create(slug='test'))
|
|
50 | 50 | |
51 | 51 | |
52 | 52 |
PAYLOAD = [ |
tests/test_clicrdv.py | ||
---|---|---|
3 | 3 |
from django.contrib.contenttypes.models import ContentType |
4 | 4 |
from django.utils.six.moves.urllib import parse as urlparse |
5 | 5 |
from requests.exceptions import HTTPError |
6 |
from test_manager import login |
|
7 | 6 | |
8 | 7 |
from passerelle.apps.clicrdv.models import ClicRdv |
9 | 8 |
from passerelle.base.models import AccessRight, ApiUser |
9 |
from tests.test_manager import login |
|
10 | 10 | |
11 | 11 | |
12 | 12 |
@pytest.fixture |
tests/test_cmis.py | ||
---|---|---|
20 | 20 |
from django.utils.encoding import force_bytes, force_text |
21 | 21 |
from django.utils.six.moves.urllib import error as urllib2 |
22 | 22 |
from mock import Mock, call |
23 |
from test_manager import login |
|
24 | 23 | |
25 | 24 |
from passerelle.apps.cmis.models import CmisConnector |
26 | 25 |
from passerelle.base.models import AccessRight, ApiUser, ResourceLog |
26 |
from tests.test_manager import login |
|
27 | 27 | |
28 | 28 | |
29 | 29 |
def b64encode(content): |
tests/test_cryptor.py | ||
---|---|---|
3 | 3 |
import base64 |
4 | 4 | |
5 | 5 |
import pytest |
6 |
import utils |
|
7 | 6 |
from django.contrib.contenttypes.models import ContentType |
8 | 7 |
from django.core.exceptions import ValidationError |
9 | 8 |
from django.utils.encoding import force_text |
10 | 9 | |
10 |
import tests.utils |
|
11 | 11 |
from passerelle.apps.cryptor.models import CryptedFile, Cryptor |
12 | 12 |
from passerelle.base.models import AccessRight, ApiUser |
13 | 13 | |
... | ... | |
77 | 77 | |
78 | 78 | |
79 | 79 |
def test_cryptor_restricted_access(app, cryptor): |
80 |
endpoint = utils.generic_endpoint_url('cryptor', 'file-encrypt', slug=cryptor.slug) |
|
80 |
endpoint = tests.utils.generic_endpoint_url('cryptor', 'file-encrypt', slug=cryptor.slug)
|
|
81 | 81 |
assert endpoint == '/cryptor/test/file-encrypt' |
82 | 82 |
resp = app.get(endpoint, status=405) |
83 | 83 |
resp = app.post_json(endpoint, params={"foo": "bar"}, status=403) |
84 | 84 |
assert resp.json['err'] == 1 |
85 | 85 |
assert 'PermissionDenied' in resp.json['err_class'] |
86 | 86 | |
87 |
endpoint = utils.generic_endpoint_url('cryptor', 'file-decrypt', slug=cryptor.slug) + '/uuid' |
|
87 |
endpoint = tests.utils.generic_endpoint_url('cryptor', 'file-decrypt', slug=cryptor.slug) + '/uuid'
|
|
88 | 88 |
assert endpoint == '/cryptor/test/file-decrypt/uuid' |
89 | 89 |
resp = app.post_json(endpoint, params={"foo": "bar"}, status=405) |
90 | 90 |
resp = app.get(endpoint, status=403) |
... | ... | |
103 | 103 |
codename='can_decrypt', apiuser=api, resource_type=obj_type, resource_pk=cryptor.pk |
104 | 104 |
) |
105 | 105 | |
106 |
endpoint = utils.generic_endpoint_url('cryptor', 'file-encrypt', slug=cryptor.slug) |
|
106 |
endpoint = tests.utils.generic_endpoint_url('cryptor', 'file-encrypt', slug=cryptor.slug)
|
|
107 | 107 |
for bad_payload in ( |
108 | 108 |
'error', |
109 | 109 |
{"foo": "bar"}, |
... | ... | |
115 | 115 |
resp = app.post_json(endpoint, params=bad_payload, status=400) |
116 | 116 |
assert resp.json['err'] == 1 |
117 | 117 | |
118 |
endpoint = utils.generic_endpoint_url('cryptor', 'file-decrypt', slug=cryptor.slug) |
|
118 |
endpoint = tests.utils.generic_endpoint_url('cryptor', 'file-decrypt', slug=cryptor.slug)
|
|
119 | 119 |
endpoint = endpoint + '/bad-uuid' |
120 | 120 |
resp = app.get(endpoint, status=404) |
121 | 121 | |
... | ... | |
131 | 131 |
) |
132 | 132 | |
133 | 133 |
# encrypt |
134 |
endpoint = utils.generic_endpoint_url('cryptor', 'file-encrypt', slug=cryptor.slug) |
|
134 |
endpoint = tests.utils.generic_endpoint_url('cryptor', 'file-encrypt', slug=cryptor.slug)
|
|
135 | 135 |
content = force_text(base64.b64encode(b'this is foo and bar')) |
136 | 136 |
payload = {"file": {"filename": "foo.txt", "content_type": "text/plain", "content": content}} |
137 | 137 | |
... | ... | |
161 | 161 |
assert resp.json['err_desc'] == 'missing public key' |
162 | 162 | |
163 | 163 |
# decrypt |
164 |
endpoint = utils.generic_endpoint_url('cryptor', 'file-decrypt', slug=cryptor.slug) |
|
164 |
endpoint = tests.utils.generic_endpoint_url('cryptor', 'file-decrypt', slug=cryptor.slug)
|
|
165 | 165 |
endpoint = endpoint + '/' + str(cfile.uuid) |
166 | 166 |
resp = app.get(endpoint, status=200) |
167 | 167 |
assert resp.content_type == 'text/plain' |
tests/test_csv_datasource.py | ||
---|---|---|
37 | 37 |
from django.utils.six import StringIO |
38 | 38 |
from django.utils.six.moves.urllib.parse import urlencode |
39 | 39 |
from django.utils.timezone import now |
40 |
from test_manager import login |
|
41 | 40 | |
42 | 41 |
from passerelle.apps.csvdatasource.models import CsvDataSource, Query, TableRow, upload_to |
43 | 42 |
from passerelle.base.models import AccessRight, ApiUser |
44 | 43 |
from passerelle.compat import json_loads |
44 |
from tests.test_manager import login |
|
45 | 45 | |
46 | 46 |
data = """121;69981;DELANOUE;Eliot;H |
47 | 47 |
525;6;DANIEL WILLIAMS;Shanone;F |
tests/test_dpark.py | ||
---|---|---|
7 | 7 |
import mock |
8 | 8 |
import pytest |
9 | 9 |
from django.utils.encoding import force_text |
10 |
from utils import make_resource |
|
11 | 10 |
from zeep.exceptions import Fault as WebFault |
12 | 11 |
from zeep.exceptions import TransportError |
13 | 12 | |
14 | 13 |
from passerelle.contrib.dpark.models import DPark, Pairing |
15 | 14 |
from passerelle.utils.jsonresponse import APIError |
15 |
from tests.utils import make_resource |
|
16 | 16 | |
17 | 17 |
SLUG = 'test' |
18 | 18 |
WSDL_URL = 'https://example.net/dpark?wsdl' |
tests/test_esirius.py | ||
---|---|---|
19 | 19 | |
20 | 20 |
import httmock |
21 | 21 |
import pytest |
22 |
import utils |
|
23 | 22 |
from Cryptodome.Cipher import DES |
24 | 23 |
from Cryptodome.Util.Padding import pad, unpad |
25 | 24 |
from django.utils.encoding import force_bytes |
26 |
from test_manager import login |
|
27 | 25 | |
26 |
import tests.utils |
|
28 | 27 |
from passerelle.apps.esirius.models import ESirius |
29 | 28 |
from passerelle.utils.jsonresponse import APIError |
29 |
from tests.test_manager import login |
|
30 | 30 | |
31 | 31 |
CREATE_APPOINTMENT_PAYLOAD = { |
32 | 32 |
'beginDate': '2021-02-24', |
... | ... | |
80 | 80 | |
81 | 81 |
@pytest.fixture |
82 | 82 |
def connector(db): |
83 |
return utils.setup_access_rights( |
|
83 |
return tests.utils.setup_access_rights(
|
|
84 | 84 |
ESirius.objects.create( |
85 | 85 |
slug='test', secret_id='xxx', secret_key='yyy', base_url='https://esirius.example.net' |
86 | 86 |
) |
... | ... | |
88 | 88 | |
89 | 89 | |
90 | 90 |
def get_endpoint(name): |
91 |
return utils.generic_endpoint_url('esirius', name) |
|
91 |
return tests.utils.generic_endpoint_url('esirius', name)
|
|
92 | 92 | |
93 | 93 | |
94 | 94 |
@pytest.mark.freeze_time('2021-01-26 15:13:6.880') # epoch + 1611673986.88 s |
tests/test_esirius_swi.py | ||
---|---|---|
18 | 18 | |
19 | 19 |
import mock |
20 | 20 |
import pytest |
21 |
import utils |
|
22 | 21 | |
22 |
import tests.utils |
|
23 | 23 |
from passerelle.contrib.esirius_swi.models import ESiriusSwi |
24 | 24 |
from passerelle.contrib.esirius_swi.utils import compute_status |
25 | 25 | |
... | ... | |
45 | 45 | |
46 | 46 |
@pytest.fixture |
47 | 47 |
def connector(db): |
48 |
return utils.setup_access_rights( |
|
48 |
return tests.utils.setup_access_rights(
|
|
49 | 49 |
ESiriusSwi.objects.create( |
50 | 50 |
slug='test', base_url='https://example.org/eSirius/webservices/sitewaitingindicator/' |
51 | 51 |
) |
tests/test_feeds.py | ||
---|---|---|
2 | 2 | |
3 | 3 |
import mock |
4 | 4 |
import pytest |
5 |
import utils |
|
6 | 5 | |
6 |
import tests.utils |
|
7 | 7 |
from passerelle.apps.feeds.models import Feed |
8 | 8 | |
9 | 9 |
FEED_EXAMPLE = u"""<?xml version="1.0" encoding="UTF-8"?> |
... | ... | |
42 | 42 | |
43 | 43 |
@pytest.fixture |
44 | 44 |
def connector(db): |
45 |
return utils.setup_access_rights(Feed.objects.create(slug='test', url='http://example.net/')) |
|
45 |
return tests.utils.setup_access_rights(Feed.objects.create(slug='test', url='http://example.net/'))
|
|
46 | 46 | |
47 | 47 | |
48 | 48 |
@mock.patch('passerelle.utils.Request.get') |
49 | 49 |
def test_feed(mocked_get, app, connector): |
50 |
mocked_get.return_value = utils.FakedResponse(content=FEED_EXAMPLE, status=200) |
|
51 |
endpoint = utils.generic_endpoint_url('feeds', 'json', slug=connector.slug) |
|
50 |
mocked_get.return_value = tests.utils.FakedResponse(content=FEED_EXAMPLE, status=200)
|
|
51 |
endpoint = tests.utils.generic_endpoint_url('feeds', 'json', slug=connector.slug)
|
|
52 | 52 |
assert endpoint == '/feeds/test/json' |
53 | 53 |
resp = app.get(endpoint) |
54 | 54 |
assert resp.json['data']['feed']['title'] |
tests/test_franceconnect_data.py | ||
---|---|---|
18 | 18 |
from urllib.parse import parse_qs, urlparse, urlunparse |
19 | 19 | |
20 | 20 |
import pytest |
21 |
import utils |
|
22 |
from test_rsa13 import mock_response |
|
23 | 21 | |
22 |
import tests.utils |
|
24 | 23 |
from passerelle.apps.franceconnect_data.models import Resource |
24 |
from tests.test_rsa13 import mock_response |
|
25 | 25 | |
26 | 26 | |
27 | 27 |
@pytest.fixture |
28 | 28 |
def fc(db): |
29 |
return utils.make_resource( |
|
29 |
return tests.utils.make_resource(
|
|
30 | 30 |
Resource, |
31 | 31 |
slug='test', |
32 | 32 |
fc_platform_slug='prod', |
tests/test_gdema.py | ||
---|---|---|
3 | 3 | |
4 | 4 |
import mock |
5 | 5 |
import pytest |
6 |
import utils |
|
7 | 6 |
from django.contrib.contenttypes.models import ContentType |
8 | 7 | |
8 |
import tests.utils |
|
9 | 9 |
from passerelle.base.models import AccessRight, ApiUser |
10 | 10 |
from passerelle.contrib.gdema.models import Gdema |
11 | 11 | |
... | ... | |
68 | 68 | |
69 | 69 | |
70 | 70 |
def test_gdema_services_and_typologies(app, gdema): |
71 |
endpoint = utils.generic_endpoint_url('gdema', 'referentiel', slug=gdema.slug) |
|
71 |
endpoint = tests.utils.generic_endpoint_url('gdema', 'referentiel', slug=gdema.slug)
|
|
72 | 72 |
assert endpoint == '/gdema/test/referentiel' |
73 | 73 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
74 |
requests_get.return_value = utils.FakedResponse(content=SERVICES, status_code=200) |
|
74 |
requests_get.return_value = tests.utils.FakedResponse(content=SERVICES, status_code=200)
|
|
75 | 75 |
resp = app.get(endpoint + '/service/', status=200) |
76 | 76 |
assert requests_get.call_count == 1 |
77 | 77 |
assert requests_get.call_args[0][0] == 'https://gdema.example.net/api/referentiel/service' |
... | ... | |
106 | 106 | |
107 | 107 | |
108 | 108 |
def test_gdema_referentiel(app, gdema): |
109 |
endpoint = utils.generic_endpoint_url('gdema', 'referentiel', slug=gdema.slug) |
|
109 |
endpoint = tests.utils.generic_endpoint_url('gdema', 'referentiel', slug=gdema.slug)
|
|
110 | 110 |
assert endpoint == '/gdema/test/referentiel' |
111 | 111 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
112 |
requests_get.return_value = utils.FakedResponse(content=CIVILITY, status_code=200) |
|
112 |
requests_get.return_value = tests.utils.FakedResponse(content=CIVILITY, status_code=200)
|
|
113 | 113 |
resp = app.get(endpoint + '/civility/', status=200) |
114 | 114 |
assert requests_get.call_count == 1 |
115 | 115 |
assert requests_get.call_args[0][0] == 'https://gdema.example.net/api/referentiel/civility' |
... | ... | |
120 | 120 |
assert resp.json['data'][0]['text'] == 'Monsieur' |
121 | 121 | |
122 | 122 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
123 |
requests_get.return_value = utils.FakedResponse(content='404', status_code=404) |
|
123 |
requests_get.return_value = tests.utils.FakedResponse(content='404', status_code=404)
|
|
124 | 124 |
resp = app.get(endpoint + '/nothing/', status=200) |
125 | 125 |
assert requests_get.call_count == 1 |
126 | 126 |
assert requests_get.call_args[0][0] == 'https://gdema.example.net/api/referentiel/nothing' |
... | ... | |
132 | 132 | |
133 | 133 | |
134 | 134 |
def test_gdema_get_request(app, gdema): |
135 |
endpoint = utils.generic_endpoint_url('gdema', 'get-request', slug=gdema.slug) |
|
135 |
endpoint = tests.utils.generic_endpoint_url('gdema', 'get-request', slug=gdema.slug)
|
|
136 | 136 |
assert endpoint == '/gdema/test/get-request' |
137 | 137 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
138 |
requests_get.return_value = utils.FakedResponse(content=REQUEST, status_code=200) |
|
138 |
requests_get.return_value = tests.utils.FakedResponse(content=REQUEST, status_code=200)
|
|
139 | 139 |
resp = app.get(endpoint + '/1/', status=200) |
140 | 140 |
assert requests_get.call_count == 1 |
141 | 141 |
assert requests_get.call_args[0][0] == 'https://gdema.example.net/api/request/1' |
... | ... | |
149 | 149 |
assert resp.json['data']['Handler']['CivilityId'] == '0' |
150 | 150 |
assert resp.json['data']['ReceptDate'] == '2006-12-13T00:00:00+01:00' |
151 | 151 | |
152 |
endpoint = utils.generic_endpoint_url('gdema', 'get-request-state', slug=gdema.slug) |
|
152 |
endpoint = tests.utils.generic_endpoint_url('gdema', 'get-request-state', slug=gdema.slug)
|
|
153 | 153 |
assert endpoint == '/gdema/test/get-request-state' |
154 | 154 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
155 |
requests_get.return_value = utils.FakedResponse(content=REQUEST_STATE, status_code=200) |
|
155 |
requests_get.return_value = tests.utils.FakedResponse(content=REQUEST_STATE, status_code=200)
|
|
156 | 156 |
resp = app.get(endpoint + '/1/', status=200) |
157 | 157 |
assert requests_get.call_count == 1 |
158 | 158 |
assert requests_get.call_args[0][0] == 'https://gdema.example.net/api/request/1/state' |
... | ... | |
162 | 162 | |
163 | 163 | |
164 | 164 |
def test_gdema_create_request(app, gdema): |
165 |
endpoint = utils.generic_endpoint_url('gdema', 'create-request', slug=gdema.slug) |
|
165 |
endpoint = tests.utils.generic_endpoint_url('gdema', 'create-request', slug=gdema.slug)
|
|
166 | 166 |
assert endpoint == '/gdema/test/create-request' |
167 | 167 |
with mock.patch('passerelle.utils.Request.post') as requests_post: |
168 |
requests_post.return_value = utils.FakedResponse(content=REQUEST, status_code=200) |
|
168 |
requests_post.return_value = tests.utils.FakedResponse(content=REQUEST, status_code=200)
|
|
169 | 169 |
resp = app.post_json(endpoint + '?raise=1', params=CREATE_INPUT, status=200) |
170 | 170 |
assert requests_post.call_count == 1 |
171 | 171 |
assert requests_post.call_args[0][0] == 'https://gdema.example.net/api/request/create' |
tests/test_generic_endpoint.py | ||
---|---|---|
25 | 25 | |
26 | 26 |
import mock |
27 | 27 |
import pytest |
28 |
import utils |
|
29 | 28 |
from django.contrib.contenttypes.models import ContentType |
30 | 29 |
from django.urls import reverse |
31 |
from test_manager import login |
|
32 | 30 | |
31 |
import tests.utils |
|
33 | 32 |
from passerelle.apps.api_particulier.models import APIParticulier |
34 | 33 |
from passerelle.apps.arcgis.models import ArcGIS |
35 | 34 |
from passerelle.apps.mdel.models import MDEL |
... | ... | |
43 | 42 |
) |
44 | 43 |
from passerelle.contrib.stub_invoices.models import StubInvoicesConnector |
45 | 44 |
from passerelle.utils.api import endpoint |
45 |
from tests.test_manager import login |
|
46 | 46 | |
47 | 47 | |
48 | 48 |
@pytest.fixture |
49 | 49 |
def mdel(db): |
50 |
return utils.setup_access_rights(MDEL.objects.create(slug='test')) |
|
50 |
return tests.utils.setup_access_rights(MDEL.objects.create(slug='test'))
|
|
51 | 51 | |
52 | 52 | |
53 | 53 |
@pytest.fixture |
54 | 54 |
def arcgis(db): |
55 |
instance = utils.setup_access_rights(ArcGIS.objects.create(slug='test')) |
|
55 |
instance = tests.utils.setup_access_rights(ArcGIS.objects.create(slug='test'))
|
|
56 | 56 |
instance.set_log_level('DEBUG') |
57 | 57 |
return instance |
58 | 58 | |
... | ... | |
91 | 91 |
@mock.patch('passerelle.utils.Request.get') |
92 | 92 |
def test_proxy_logger(mocked_get, caplog, app, arcgis): |
93 | 93 |
payload = open(os.path.join(os.path.dirname(__file__), 'data', 'nancy_arcgis', 'sigresponse.json')).read() |
94 |
mocked_get.return_value = utils.FakedResponse(content=payload, status_code=200) |
|
94 |
mocked_get.return_value = tests.utils.FakedResponse(content=payload, status_code=200)
|
|
95 | 95 | |
96 | 96 |
# simple logger |
97 | 97 |
arcgis.log_evel = 'DEBUG' |
... | ... | |
169 | 169 |
@mock.patch('requests.Session.send') |
170 | 170 |
def test_proxy_logger_transaction_id(mocked_send, app, arcgis): |
171 | 171 |
payload = open(os.path.join(os.path.dirname(__file__), 'data', 'nancy_arcgis', 'sigresponse.json')).read() |
172 |
mocked_send.return_value = utils.FakedResponse(content=payload, status_code=200) |
|
172 |
mocked_send.return_value = tests.utils.FakedResponse(content=payload, status_code=200)
|
|
173 | 173 |
arcgis.log_evel = 'DEBUG' |
174 | 174 |
arcgis.base_url = 'https://example.net/' |
175 | 175 |
arcgis.save() |
... | ... | |
185 | 185 | |
186 | 186 |
@mock.patch('passerelle.utils.Request.patch') |
187 | 187 |
def test_proxy_logger_on_405(mocked_patch, caplog, app, arcgis): |
188 |
mocked_patch.return_value = utils.FakedResponse(status_code=500) |
|
188 |
mocked_patch.return_value = tests.utils.FakedResponse(status_code=500)
|
|
189 | 189 | |
190 | 190 |
# simple logger |
191 | 191 |
arcgis.log_evel = 'WARNING' |
... | ... | |
716 | 716 | |
717 | 717 |
from passerelle.apps.arcgis.models import ArcGIS |
718 | 718 | |
719 |
resource = utils.make_resource(ArcGIS, base_url='https://example.com/', slug='gis', verify_cert=True) |
|
719 |
resource = tests.utils.make_resource( |
|
720 |
ArcGIS, base_url='https://example.com/', slug='gis', verify_cert=True |
|
721 |
) |
|
720 | 722 |
with pytest.raises(SSLError): |
721 | 723 |
resource.requests.get(httpbin_secure.join('/get/')) |
722 | 724 |
resource.verify_cert = False |
... | ... | |
1030 | 1032 | |
1031 | 1033 | |
1032 | 1034 |
def test_response_schema(db, app): |
1033 |
utils.make_resource(APIParticulier, slug='test', platform='test', api_key='xxx') |
|
1035 |
tests.utils.make_resource(APIParticulier, slug='test', platform='test', api_key='xxx')
|
|
1034 | 1036 |
response = app.get('/api-particulier/test/') |
1035 | 1037 |
assert 'nombrePersonnesCharge' in response |
1036 | 1038 |
tests/test_gesbac.py | ||
---|---|---|
21 | 21 |
import pytest |
22 | 22 |
from django.utils.encoding import force_bytes, force_str, force_text |
23 | 23 |
from django.utils.timezone import now |
24 |
from utils import make_resource |
|
25 | 24 | |
26 | 25 |
from passerelle.apps.gesbac.models import Form, Gesbac |
27 | 26 |
from passerelle.utils import SFTP |
27 |
from tests.utils import make_resource |
|
28 | 28 | |
29 | 29 | |
30 | 30 |
@pytest.fixture |
tests/test_greco.py | ||
---|---|---|
20 | 20 | |
21 | 21 |
import mock |
22 | 22 |
import pytest |
23 |
import utils |
|
24 | 23 |
from django.contrib.contenttypes.models import ContentType |
25 | 24 |
from django.urls import reverse |
26 | 25 |
from django.utils.encoding import force_str |
27 | 26 | |
27 |
import tests.utils |
|
28 | 28 |
from passerelle.base.models import AccessRight, ApiUser |
29 | 29 |
from passerelle.contrib.greco.models import Greco |
30 | 30 | |
... | ... | |
46 | 46 | |
47 | 47 | |
48 | 48 |
def fake_xml_response(basename): |
49 |
return utils.FakedResponse( |
|
49 |
return tests.utils.FakedResponse(
|
|
50 | 50 |
content=get_xml_file(basename), |
51 | 51 |
status_code=200, |
52 | 52 |
headers={'Content-Type': 'text/xml'}, |
53 | 53 |
) |
54 | 54 | |
55 | 55 | |
56 |
TOKEN = utils.FakedResponse( |
|
56 |
TOKEN = tests.utils.FakedResponse(
|
|
57 | 57 |
content=get_json_file('token'), |
58 | 58 |
status_code=200, |
59 | 59 |
headers={'Content-Type': 'application/json'}, |
60 | 60 |
) |
61 |
RESP_503 = utils.FakedResponse(content='Service Unavailable', status_code=503) |
|
61 |
RESP_503 = tests.utils.FakedResponse(content='Service Unavailable', status_code=503)
|
|
62 | 62 |
PING = fake_xml_response('ping') |
63 | 63 |
CREATE_OK = fake_xml_response('create_ok') |
64 | 64 |
CREATE_KO = fake_xml_response('create_ko') |
tests/test_grenoble_gru.py | ||
---|---|---|
21 | 21 |
import mock |
22 | 22 |
import pytest |
23 | 23 |
import six |
24 |
import utils |
|
25 | 24 |
from django.urls import reverse |
26 | 25 | |
26 |
import tests.utils |
|
27 | 27 |
from passerelle.contrib.grenoble_gru.models import GrenobleGRU |
28 | 28 | |
29 | 29 | |
30 | 30 |
@pytest.fixture |
31 | 31 |
def setup(db): |
32 |
return utils.setup_access_rights( |
|
32 |
return tests.utils.setup_access_rights(
|
|
33 | 33 |
GrenobleGRU.objects.create(slug='test', base_url='https://itvvoirie-test.lametro.fr') |
34 | 34 |
) |
35 | 35 | |
... | ... | |
120 | 120 |
@pytest.fixture(params=['01', '02', '10', '20', '21', '23', '4242']) |
121 | 121 |
def remote_response(request): |
122 | 122 |
text = six.text_type(request.param) |
123 |
return utils.FakedResponse(index=request.param_index, text=text) |
|
123 |
return tests.utils.FakedResponse(index=request.param_index, text=text)
|
|
124 | 124 | |
125 | 125 | |
126 | 126 |
def test_contact_mode_typologies_list_with_invalid_xml(app, setup): |
tests/test_isere_ens.py | ||
---|---|---|
21 | 21 | |
22 | 22 |
import mock |
23 | 23 |
import pytest |
24 |
import utils |
|
25 | 24 |
from django.urls import reverse |
26 | 25 | |
26 |
import tests.utils |
|
27 | 27 |
from passerelle.contrib.isere_ens.models import API_VERSION, IsereENS |
28 | 28 |
from passerelle.utils.jsonresponse import APIError |
29 | 29 | |
30 | 30 | |
31 | 31 |
@pytest.fixture |
32 | 32 |
def setup(db): |
33 |
return utils.setup_access_rights( |
|
33 |
return tests.utils.setup_access_rights(
|
|
34 | 34 |
IsereENS.objects.create(slug="test", base_url="https://ens38.example.net/", token="toktok") |
35 | 35 |
) |
36 | 36 | |
... | ... | |
148 | 148 |
def test_get_sites(mocked_get, app, setup, api_version): |
149 | 149 |
setup.api_version = api_version |
150 | 150 |
setup.save() |
151 |
mocked_get.return_value = utils.FakedResponse(content=SITES_RESPONSE, status_code=200) |
|
151 |
mocked_get.return_value = tests.utils.FakedResponse(content=SITES_RESPONSE, status_code=200)
|
|
152 | 152 |
endpoint = reverse( |
153 | 153 |
"generic-endpoint", |
154 | 154 |
kwargs={"connector": "isere-ens", "slug": setup.slug, "endpoint": "sites"}, |
... | ... | |
176 | 176 |
response = app.get(endpoint + "?kind=social") |
177 | 177 |
assert len(response.json["data"]) == 2 |
178 | 178 | |
179 |
mocked_get.return_value = utils.FakedResponse(content=SD29B_RESPONSE, status_code=200) |
|
179 |
mocked_get.return_value = tests.utils.FakedResponse(content=SD29B_RESPONSE, status_code=200)
|
|
180 | 180 |
response = app.get(endpoint + "?id=SD29b") |
181 | 181 |
assert mocked_get.call_args[0][0].endswith("api/" + api_version + "/site/SD29b") |
182 | 182 |
assert len(response.json["data"]) == 1 |
... | ... | |
184 | 184 |
assert response.json["data"][0]["dogs"] == "LEASH" |
185 | 185 | |
186 | 186 |
# bad response for ENS API |
187 |
mocked_get.return_value = utils.FakedResponse(content=SITE_404_RESPONSE, status_code=404) |
|
187 |
mocked_get.return_value = tests.utils.FakedResponse(content=SITE_404_RESPONSE, status_code=404)
|
|
188 | 188 |
response = app.get(endpoint + "?id=SD29x") |
189 | 189 |
assert mocked_get.call_args[0][0].endswith("api/" + api_version + "/site/SD29x") |
190 | 190 |
assert response.json["err"] == 1 |
... | ... | |
192 | 192 |
assert response.json["err_desc"].startswith("error status:404") |
193 | 193 |
assert response.json["data"]["status_code"] == 404 |
194 | 194 |
assert response.json["data"]["json_content"]["message"] == "Site not found with code SD29x" |
195 |
mocked_get.return_value = utils.FakedResponse(content="crash", status_code=500) |
|
195 |
mocked_get.return_value = tests.utils.FakedResponse(content="crash", status_code=500)
|
|
196 | 196 |
response = app.get(endpoint + "?id=foo500") |
197 | 197 |
assert mocked_get.call_args[0][0].endswith("api/" + api_version + "/site/foo500") |
198 | 198 |
assert response.json["err"] == 1 |
... | ... | |
200 | 200 |
assert response.json["err_class"].endswith("APIError") |
201 | 201 |
assert response.json["data"]["status_code"] == 500 |
202 | 202 |
assert response.json["data"]["json_content"] is None |
203 |
mocked_get.return_value = utils.FakedResponse(content=None, status_code=204) |
|
203 |
mocked_get.return_value = tests.utils.FakedResponse(content=None, status_code=204)
|
|
204 | 204 |
response = app.get(endpoint + "?id=foo204") |
205 | 205 |
assert mocked_get.call_args[0][0].endswith("api/" + api_version + "/site/foo204") |
206 | 206 |
assert response.json["err"] == 1 |
207 | 207 |
assert response.json["err_class"].endswith("APIError") |
208 | 208 |
assert response.json["err_desc"] == "abnormal empty response" |
209 |
mocked_get.return_value = utils.FakedResponse(content="not json", status_code=200) |
|
209 |
mocked_get.return_value = tests.utils.FakedResponse(content="not json", status_code=200)
|
|
210 | 210 |
response = app.get(endpoint + "?id=foo") |
211 | 211 |
assert mocked_get.call_args[0][0].endswith("api/" + api_version + "/site/foo") |
212 | 212 |
assert response.json["err"] == 1 |
... | ... | |
219 | 219 |
def test_get_animators(mocked_get, app, setup, api_version): |
220 | 220 |
setup.api_version = api_version |
221 | 221 |
setup.save() |
222 |
mocked_get.return_value = utils.FakedResponse(content=ANIMATORS_RESPONSE, status_code=200) |
|
222 |
mocked_get.return_value = tests.utils.FakedResponse(content=ANIMATORS_RESPONSE, status_code=200)
|
|
223 | 223 |
endpoint = reverse( |
224 | 224 |
"generic-endpoint", |
225 | 225 |
kwargs={"connector": "isere-ens", "slug": setup.slug, "endpoint": "animators"}, |
... | ... | |
256 | 256 |
setup.api_version = api_version |
257 | 257 |
setup.save() |
258 | 258 |
freezer.move_to("2021-01-21 12:00:00") |
259 |
mocked_get.return_value = utils.FakedResponse(content=SITE_CALENDAR_RESPONSE, status_code=200) |
|
259 |
mocked_get.return_value = tests.utils.FakedResponse(content=SITE_CALENDAR_RESPONSE, status_code=200)
|
|
260 | 260 |
endpoint = reverse( |
261 | 261 |
"generic-endpoint", |
262 | 262 |
kwargs={ |
... | ... | |
309 | 309 | |
310 | 310 |
@mock.patch("passerelle.utils.Request.post") |
311 | 311 |
def test_post_book_v1(mocked_post, app, setup): |
312 |
mocked_post.return_value = utils.FakedResponse(content=BOOK_RESPONSE, status_code=200) |
|
312 |
mocked_post.return_value = tests.utils.FakedResponse(content=BOOK_RESPONSE, status_code=200)
|
|
313 | 313 |
endpoint = reverse( |
314 | 314 |
"generic-endpoint", |
315 | 315 |
kwargs={ |
... | ... | |
350 | 350 |
assert response.json["err"] == 0 |
351 | 351 |
assert response.json["data"]["status"] == "BOOKING" |
352 | 352 | |
353 |
mocked_post.return_value = utils.FakedResponse(content=BOOK_RESPONSE_OVERBOOKING, status_code=200) |
|
353 |
mocked_post.return_value = tests.utils.FakedResponse(content=BOOK_RESPONSE_OVERBOOKING, status_code=200)
|
|
354 | 354 |
response = app.post_json(endpoint, params=book) |
355 | 355 |
assert mocked_post.call_args[0][0].endswith("api/1.0.0/booking") |
356 | 356 |
assert mocked_post.call_count == 2 |
357 | 357 |
assert response.json["err"] == 0 |
358 | 358 |
assert response.json["data"]["status"] == "OVERBOOKING" |
359 | 359 | |
360 |
mocked_post.return_value = utils.FakedResponse(content=BOOK_RESPONSE_REFUSED, status_code=200) |
|
360 |
mocked_post.return_value = tests.utils.FakedResponse(content=BOOK_RESPONSE_REFUSED, status_code=200)
|
|
361 | 361 |
response = app.post_json(endpoint, params=book) |
362 | 362 |
assert mocked_post.call_args[0][0].endswith("api/1.0.0/booking") |
363 | 363 |
assert mocked_post.call_count == 3 |
... | ... | |
366 | 366 |
assert response.json["err_desc"] == "booking status is REFUSED" |
367 | 367 |
assert response.json["data"]["status"] == "REFUSED" |
368 | 368 | |
369 |
mocked_post.return_value = utils.FakedResponse(content="""["not", "a", "dict"]""", status_code=200) |
|
369 |
mocked_post.return_value = tests.utils.FakedResponse(content="""["not", "a", "dict"]""", status_code=200)
|
|
370 | 370 |
response = app.post_json(endpoint, params=book) |
371 | 371 |
assert mocked_post.call_args[0][0].endswith("api/1.0.0/booking") |
372 | 372 |
assert mocked_post.call_count == 4 |
... | ... | |
375 | 375 |
assert response.json["err_desc"] == "response is not a dict" |
376 | 376 |
assert response.json["data"] == ["not", "a", "dict"] |
377 | 377 | |
378 |
mocked_post.return_value = utils.FakedResponse(content="""{"foo": "bar"}""", status_code=200) |
|
378 |
mocked_post.return_value = tests.utils.FakedResponse(content="""{"foo": "bar"}""", status_code=200)
|
|
379 | 379 |
response = app.post_json(endpoint, params=book) |
380 | 380 |
assert mocked_post.call_args[0][0].endswith("api/1.0.0/booking") |
381 | 381 |
assert mocked_post.call_count == 5 |
... | ... | |
385 | 385 |
assert response.json["data"] == {"foo": "bar"} |
386 | 386 | |
387 | 387 |
book["animator"] = "" |
388 |
mocked_post.return_value = utils.FakedResponse(content=BOOK_RESPONSE, status_code=200) |
|
388 |
mocked_post.return_value = tests.utils.FakedResponse(content=BOOK_RESPONSE, status_code=200)
|
|
389 | 389 |
response = app.post_json(endpoint, params=book) |
390 | 390 |
assert mocked_post.call_args[0][0].endswith("api/1.0.0/booking") |
391 | 391 |
assert 'schoolAnimator' not in mocked_post.call_args.kwargs['json']['booking'] |
... | ... | |
394 | 394 |
assert response.json["data"]["status"] == "BOOKING" |
395 | 395 | |
396 | 396 |
del book["animator"] |
397 |
mocked_post.return_value = utils.FakedResponse(content=BOOK_RESPONSE, status_code=200) |
|
397 |
mocked_post.return_value = tests.utils.FakedResponse(content=BOOK_RESPONSE, status_code=200)
|
|
398 | 398 |
response = app.post_json(endpoint, params=book) |
399 | 399 |
assert mocked_post.call_args[0][0].endswith("api/1.0.0/booking") |
400 | 400 |
assert 'schoolAnimator' not in mocked_post.call_args.kwargs['json']['booking'] |
... | ... | |
414 | 414 |
def test_post_book(mocked_post, app, setup, api_version): |
415 | 415 |
setup.api_version = api_version |
416 | 416 |
setup.save() |
417 |
mocked_post.return_value = utils.FakedResponse(content=BOOK_RESPONSE, status_code=200) |
|
417 |
mocked_post.return_value = tests.utils.FakedResponse(content=BOOK_RESPONSE, status_code=200)
|
|
418 | 418 |
endpoint = reverse( |
419 | 419 |
"generic-endpoint", |
420 | 420 |
kwargs={ |
... | ... | |
460 | 460 |
assert mocked_post.call_args.kwargs['json']['projectCode'] == 'pc' |
461 | 461 |
assert response.json["err"] == 0 |
462 | 462 | |
463 |
mocked_post.return_value = utils.FakedResponse(content=BOOK_RESPONSE_OVERBOOKING, status_code=200) |
|
463 |
mocked_post.return_value = tests.utils.FakedResponse(content=BOOK_RESPONSE_OVERBOOKING, status_code=200)
|
|
464 | 464 |
response = app.post_json(endpoint, params=book) |
465 | 465 |
assert mocked_post.call_args[0][0].endswith("api/" + api_version + "/site/booking/school") |
466 | 466 |
assert mocked_post.call_count == 3 |
467 | 467 |
assert response.json["err"] == 0 |
468 | 468 |
assert response.json["data"]["status"] == "OVERBOOKING" |
469 | 469 | |
470 |
mocked_post.return_value = utils.FakedResponse(content=BOOK_RESPONSE_REFUSED, status_code=200) |
|
470 |
mocked_post.return_value = tests.utils.FakedResponse(content=BOOK_RESPONSE_REFUSED, status_code=200)
|
|
471 | 471 |
response = app.post_json(endpoint, params=book) |
472 | 472 |
assert mocked_post.call_args[0][0].endswith("api/" + api_version + "/site/booking/school") |
473 | 473 |
assert mocked_post.call_count == 4 |
... | ... | |
476 | 476 |
assert response.json["err_desc"] == "booking status is REFUSED" |
477 | 477 |
assert response.json["data"]["status"] == "REFUSED" |
478 | 478 | |
479 |
mocked_post.return_value = utils.FakedResponse(content="""["not", "a", "dict"]""", status_code=200) |
|
479 |
mocked_post.return_value = tests.utils.FakedResponse(content="""["not", "a", "dict"]""", status_code=200)
|
|
480 | 480 |
response = app.post_json(endpoint, params=book) |
481 | 481 |
assert mocked_post.call_args[0][0].endswith("api/" + api_version + "/site/booking/school") |
482 | 482 |
assert mocked_post.call_count == 5 |
... | ... | |
485 | 485 |
assert response.json["err_desc"] == "response is not a dict" |
486 | 486 |
assert response.json["data"] == ["not", "a", "dict"] |
487 | 487 | |
488 |
mocked_post.return_value = utils.FakedResponse(content="""{"foo": "bar"}""", status_code=200) |
|
488 |
mocked_post.return_value = tests.utils.FakedResponse(content="""{"foo": "bar"}""", status_code=200)
|
|
489 | 489 |
response = app.post_json(endpoint, params=book) |
490 | 490 |
assert mocked_post.call_args[0][0].endswith("api/" + api_version + "/site/booking/school") |
491 | 491 |
assert mocked_post.call_count == 6 |
... | ... | |
495 | 495 |
assert response.json["data"] == {"foo": "bar"} |
496 | 496 | |
497 | 497 |
book["animator"] = "" |
498 |
mocked_post.return_value = utils.FakedResponse(content=BOOK_RESPONSE, status_code=200) |
|
498 |
mocked_post.return_value = tests.utils.FakedResponse(content=BOOK_RESPONSE, status_code=200)
|
|
499 | 499 |
response = app.post_json(endpoint, params=book) |
500 | 500 |
assert mocked_post.call_args[0][0].endswith("api/" + api_version + "/site/booking/school") |
501 | 501 |
assert 'schoolAnimator' not in mocked_post.call_args.kwargs['json'] |
... | ... | |
504 | 504 |
assert response.json["data"]["status"] == "BOOKING" |
505 | 505 | |
506 | 506 |
del book["animator"] |
507 |
mocked_post.return_value = utils.FakedResponse(content=BOOK_RESPONSE, status_code=200) |
|
507 |
mocked_post.return_value = tests.utils.FakedResponse(content=BOOK_RESPONSE, status_code=200)
|
|
508 | 508 |
response = app.post_json(endpoint, params=book) |
509 | 509 |
assert mocked_post.call_args[0][0].endswith("api/" + api_version + "/site/booking/school") |
510 | 510 |
assert 'schoolAnimator' not in mocked_post.call_args.kwargs['json'] |
... | ... | |
557 | 557 |
}, |
558 | 558 |
) |
559 | 559 | |
560 |
mocked_get.return_value = utils.FakedResponse(content=BOOK_RESPONSE, status_code=200) |
|
560 |
mocked_get.return_value = tests.utils.FakedResponse(content=BOOK_RESPONSE, status_code=200)
|
|
561 | 561 |
response = app.get(endpoint + "?code=123") |
562 | 562 |
if api_version == '1.0.0': |
563 | 563 |
assert mocked_get.call_args[0][0].endswith("api/1.0.0/booking/123/status") |
... | ... | |
570 | 570 |
response = app.get(endpoint, status=400) # no code specified |
571 | 571 |
assert mocked_get.call_count == 1 |
572 | 572 | |
573 |
mocked_get.return_value = utils.FakedResponse(content="""["not", "a", "dict"]""", status_code=200) |
|
573 |
mocked_get.return_value = tests.utils.FakedResponse(content="""["not", "a", "dict"]""", status_code=200)
|
|
574 | 574 |
response = app.get(endpoint + "?code=123") |
575 | 575 |
assert mocked_get.call_count == 2 |
576 | 576 |
assert response.json["err"] == 1 |
... | ... | |
578 | 578 |
assert response.json["err_desc"] == "response is not a dict" |
579 | 579 |
assert response.json["data"] == ["not", "a", "dict"] |
580 | 580 | |
581 |
mocked_get.return_value = utils.FakedResponse(content="""{"foo": "bar"}""", status_code=200) |
|
581 |
mocked_get.return_value = tests.utils.FakedResponse(content="""{"foo": "bar"}""", status_code=200)
|
|
582 | 582 |
response = app.get(endpoint + "?code=123") |
583 | 583 |
assert mocked_get.call_count == 3 |
584 | 584 |
assert response.json["err"] == 1 |
... | ... | |
600 | 600 |
"endpoint": "cancel-site-booking", |
601 | 601 |
}, |
602 | 602 |
) |
603 |
mocked_post.return_value = utils.FakedResponse(content=CANCEL_RESPONSE, status_code=200) |
|
603 |
mocked_post.return_value = tests.utils.FakedResponse(content=CANCEL_RESPONSE, status_code=200)
|
|
604 | 604 |
response = app.delete(endpoint + "?code=123") |
605 | 605 |
if api_version == '1.0.0': |
606 | 606 |
assert response.json["err"] == 1 |
... | ... | |
626 | 626 |
response = app.get(endpoint, status=400) # no code specified |
627 | 627 |
assert mocked_post.call_count == 3 # same as before |
628 | 628 | |
629 |
mocked_post.return_value = utils.FakedResponse(content="""["not", "a", "dict"]""", status_code=200) |
|
629 |
mocked_post.return_value = tests.utils.FakedResponse(content="""["not", "a", "dict"]""", status_code=200)
|
|
630 | 630 |
response = app.get(endpoint + "?code=123") |
631 | 631 |
assert mocked_post.call_count == 4 |
632 | 632 |
assert response.json["err"] == 1 |
... | ... | |
634 | 634 |
assert response.json["err_desc"] == "response is not a dict" |
635 | 635 |
assert response.json["data"] == ["not", "a", "dict"] |
636 | 636 | |
637 |
mocked_post.return_value = utils.FakedResponse(content="""{"foo": "bar"}""", status_code=200) |
|
637 |
mocked_post.return_value = tests.utils.FakedResponse(content="""{"foo": "bar"}""", status_code=200)
|
|
638 | 638 |
response = app.get(endpoint + "?code=123") |
639 | 639 |
assert mocked_post.call_count == 5 |
640 | 640 |
assert response.json["err"] == 1 |
tests/test_jobs.py | ||
---|---|---|
6 | 6 |
import isodate |
7 | 7 |
import mock |
8 | 8 |
import pytest |
9 |
import utils |
|
10 | 9 |
from django.core.management import call_command |
11 |
from test_base_adresse import StreetModel, base_adresse |
|
12 | 10 | |
11 |
import tests.utils |
|
13 | 12 |
from passerelle.base.models import Job, ResourceLog, SkipJob |
14 | 13 |
from passerelle.utils.jsonresponse import APIError |
14 |
from tests.test_base_adresse import StreetModel, base_adresse |
|
15 | 15 | |
16 | 16 | |
17 | 17 |
@mock.patch('passerelle.utils.Request.get') |
... | ... | |
19 | 19 |
Job.objects.all().delete() # remove jobs automatically added at connector creation |
20 | 20 |
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.gz') |
21 | 21 |
with open(filepath, 'rb') as ban_file: |
22 |
mocked_get.return_value = utils.FakedResponse(content=ban_file.read(), status_code=200) |
|
22 |
mocked_get.return_value = tests.utils.FakedResponse(content=ban_file.read(), status_code=200)
|
|
23 | 23 | |
24 | 24 |
freezer.move_to('2019-01-01 00:00:00') |
25 | 25 |
job = base_adresse.add_job('update_streets_data') |
... | ... | |
30 | 30 |
assert StreetModel.objects.count() == 3 |
31 | 31 | |
32 | 32 |
# don't delete streets if bano file is empty |
33 |
mocked_get.return_value = utils.FakedResponse(content=b'', status_code=200) |
|
33 |
mocked_get.return_value = tests.utils.FakedResponse(content=b'', status_code=200)
|
|
34 | 34 |
freezer.move_to('2019-01-01 12:00:00') |
35 | 35 |
job = base_adresse.add_job('update_streets_data') |
36 | 36 |
assert job.status == 'registered' |
... | ... | |
45 | 45 |
assert StreetModel.objects.count() == 3 |
46 | 46 | |
47 | 47 |
with open(filepath, 'rb') as ban_file: |
48 |
mocked_get.return_value = utils.FakedResponse(content=ban_file.read(), status_code=200) |
|
48 |
mocked_get.return_value = tests.utils.FakedResponse(content=ban_file.read(), status_code=200)
|
|
49 | 49 | |
50 | 50 |
StreetModel.objects.all().delete() |
51 | 51 | |
... | ... | |
138 | 138 |
with mock.patch('passerelle.apps.base_adresse.models.BaseAdresse.down') as down: |
139 | 139 |
down.side_effect = lambda: True |
140 | 140 |
with open(filepath, 'rb') as ban_file: |
141 |
mocked_get.return_value = utils.FakedResponse(content=ban_file.read(), status_code=200) |
|
141 |
mocked_get.return_value = tests.utils.FakedResponse(content=ban_file.read(), status_code=200)
|
|
142 | 142 |
job = base_adresse.add_job('update_streets_data') |
143 | 143 |
assert job.status == 'registered' |
144 | 144 | |
... | ... | |
150 | 150 |
def test_runjob(mocked_get, app, base_adresse, freezer): |
151 | 151 |
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.gz') |
152 | 152 |
with open(filepath, 'rb') as ban_file: |
153 |
mocked_get.return_value = utils.FakedResponse(content=ban_file.read(), status_code=200) |
|
153 |
mocked_get.return_value = tests.utils.FakedResponse(content=ban_file.read(), status_code=200)
|
|
154 | 154 | |
155 | 155 |
freezer.move_to('2019-01-01 00:00:00') |
156 | 156 |
job = base_adresse.add_job('update_streets_data') |
... | ... | |
166 | 166 |
Job.objects.all().delete() # remove jobs automatically added at connector creation |
167 | 167 |
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.gz') |
168 | 168 |
with open(filepath, 'rb') as ban_file: |
169 |
mocked_get.return_value = utils.FakedResponse(content=ban_file.read(), status_code=200) |
|
169 |
mocked_get.return_value = tests.utils.FakedResponse(content=ban_file.read(), status_code=200)
|
|
170 | 170 | |
171 | 171 |
job = base_adresse.add_job('update_streets_data') |
172 | 172 |
mocked_get.side_effect = Exception('hello') |
tests/test_jsonresponse.py | ||
---|---|---|
139 | 139 |
assert 'err_class' in data |
140 | 140 |
assert 'err' in data |
141 | 141 |
assert data['err'] == 1 |
142 |
assert data['err_class'] == 'test_jsonresponse.CustomException' |
|
142 |
assert data['err_class'] == 'tests.test_jsonresponse.CustomException'
|
|
143 | 143 |
assert result.status_code == 200 |
144 | 144 | |
145 | 145 |
tests/test_lille_kimoce.py | ||
---|---|---|
21 | 21 | |
22 | 22 |
import mock |
23 | 23 |
import pytest |
24 |
import utils |
|
25 | 24 |
from django.urls import reverse |
26 | 25 | |
26 |
import tests.utils |
|
27 | 27 |
from passerelle.contrib.lille_kimoce.models import Kimoce |
28 | 28 |
from passerelle.utils.jsonresponse import APIError |
29 | 29 | |
30 | 30 | |
31 | 31 |
@pytest.fixture |
32 | 32 |
def setup(db): |
33 |
return utils.setup_access_rights( |
|
33 |
return tests.utils.setup_access_rights(
|
|
34 | 34 |
Kimoce.objects.create( |
35 | 35 |
slug='test', base_url='https://kimoce.mairie-lille.fr/api/', username='test', password='secret' |
36 | 36 |
) |
... | ... | |
191 | 191 |
@mock.patch('passerelle.utils.Request.post') |
192 | 192 |
def test_get_token(mocked_post, app, setup): |
193 | 193 |
with pytest.raises(APIError): |
194 |
mocked_post.return_value = utils.FakedResponse(content=TOKEN_ERROR_RESPONSE, status_code=400) |
|
194 |
mocked_post.return_value = tests.utils.FakedResponse(content=TOKEN_ERROR_RESPONSE, status_code=400)
|
|
195 | 195 |
setup.get_token() |
196 |
mocked_post.return_value = utils.FakedResponse(content=TOKEN_RESPONSE, status_code=200) |
|
196 |
mocked_post.return_value = tests.utils.FakedResponse(content=TOKEN_RESPONSE, status_code=200)
|
|
197 | 197 |
setup.get_token() |
198 | 198 |
assert mocked_post.call_count == 2 |
199 | 199 |
assert "api/login_check" in mocked_post.call_args[0][0] |
... | ... | |
209 | 209 |
@mock.patch('passerelle.utils.Request.post') |
210 | 210 |
@mock.patch('passerelle.utils.Request.get') |
211 | 211 |
def test_get_categories(mocked_get, mocked_post, app, setup): |
212 |
mocked_post.return_value = utils.FakedResponse(content=TOKEN_RESPONSE, status_code=200) |
|
213 |
mocked_get.return_value = utils.FakedResponse(content=CATEGORIES_RESPONSE, status_code=200) |
|
212 |
mocked_post.return_value = tests.utils.FakedResponse(content=TOKEN_RESPONSE, status_code=200)
|
|
213 |
mocked_get.return_value = tests.utils.FakedResponse(content=CATEGORIES_RESPONSE, status_code=200)
|
|
214 | 214 |
endpoint = reverse( |
215 | 215 |
'generic-endpoint', kwargs={'connector': 'lille-kimoce', 'slug': setup.slug, 'endpoint': 'categories'} |
216 | 216 |
) |
... | ... | |
228 | 228 |
@mock.patch('passerelle.utils.Request.post') |
229 | 229 |
@mock.patch('passerelle.utils.Request.get') |
230 | 230 |
def test_get_types(mocked_get, mocked_post, app, setup): |
231 |
mocked_post.return_value = utils.FakedResponse(content=TOKEN_RESPONSE, status_code=200) |
|
232 |
mocked_get.return_value = utils.FakedResponse(content=TYPES_RESPONSE, status_code=200) |
|
231 |
mocked_post.return_value = tests.utils.FakedResponse(content=TOKEN_RESPONSE, status_code=200)
|
|
232 |
mocked_get.return_value = tests.utils.FakedResponse(content=TYPES_RESPONSE, status_code=200)
|
|
233 | 233 |
endpoint = reverse( |
234 | 234 |
'generic-endpoint', kwargs={'connector': 'lille-kimoce', 'slug': setup.slug, 'endpoint': 'types'} |
235 | 235 |
) |
... | ... | |
250 | 250 |
@mock.patch('passerelle.utils.Request.post') |
251 | 251 |
@mock.patch('passerelle.utils.Request.get') |
252 | 252 |
def test_get_sub_types(mocked_get, mocked_post, app, setup): |
253 |
mocked_post.return_value = utils.FakedResponse(content=TOKEN_RESPONSE, status_code=200) |
|
254 |
mocked_get.return_value = utils.FakedResponse(content=SUB_TYPES_RESPONSE, status_code=200) |
|
253 |
mocked_post.return_value = tests.utils.FakedResponse(content=TOKEN_RESPONSE, status_code=200)
|
|
254 |
mocked_get.return_value = tests.utils.FakedResponse(content=SUB_TYPES_RESPONSE, status_code=200)
|
|
255 | 255 |
endpoint = reverse( |
256 | 256 |
'generic-endpoint', kwargs={'connector': 'lille-kimoce', 'slug': setup.slug, 'endpoint': 'subtypes'} |
257 | 257 |
) |
... | ... | |
272 | 272 |
@mock.patch('passerelle.utils.Request.post') |
273 | 273 |
@mock.patch('passerelle.utils.Request.get') |
274 | 274 |
def test_get_streets(mocked_get, mocked_post, app, setup): |
275 |
mocked_post.return_value = utils.FakedResponse(content=TOKEN_RESPONSE, status_code=200) |
|
276 |
mocked_get.return_value = utils.FakedResponse(content=STREETS_RESPONSE, status_code=200) |
|
275 |
mocked_post.return_value = tests.utils.FakedResponse(content=TOKEN_RESPONSE, status_code=200)
|
|
276 |
mocked_get.return_value = tests.utils.FakedResponse(content=STREETS_RESPONSE, status_code=200)
|
|
277 | 277 |
endpoint = reverse( |
278 | 278 |
'generic-endpoint', kwargs={'connector': 'lille-kimoce', 'slug': setup.slug, 'endpoint': 'streets'} |
279 | 279 |
) |
... | ... | |
282 | 282 |
assert len(response.json['data']) == 3 |
283 | 283 |
response = app.get(endpoint, params={'q': 'PLACE JosEPH'}) |
284 | 284 |
assert mocked_get.call_args[1]['params']['streetAddress'] == 'PLACE JosEPH' |
285 |
mocked_get.return_value = utils.FakedResponse(content=STREETS_RESPONSE, status_code=401) |
|
285 |
mocked_get.return_value = tests.utils.FakedResponse(content=STREETS_RESPONSE, status_code=401)
|
|
286 | 286 |
response = app.get(endpoint, params={'id': 'RUE de PAris'}) |
287 | 287 |
assert mocked_get.call_args[1]['params']['streetAddress'] == 'RUE de PAris' |
288 | 288 |
for item in response.json['data']: |
... | ... | |
296 | 296 |
@mock.patch('passerelle.utils.Request.post') |
297 | 297 |
def test_create_demand(mocked_post, app, setup): |
298 | 298 |
mocked_post.side_effect = [ |
299 |
utils.FakedResponse(content=TOKEN_RESPONSE, status_code=200), |
|
300 |
utils.FakedResponse(content=DEMAND_CREATION_RESPONSE, status_code=200), |
|
299 |
tests.utils.FakedResponse(content=TOKEN_RESPONSE, status_code=200),
|
|
300 |
tests.utils.FakedResponse(content=DEMAND_CREATION_RESPONSE, status_code=200),
|
|
301 | 301 |
] |
302 | 302 |
data = { |
303 | 303 |
'category': '/api/categories/80', |
... | ... | |
327 | 327 |
assert response.json['data'] == json.loads(DEMAND_CREATION_RESPONSE) |
328 | 328 |
assert mocked_post.call_count == 2 |
329 | 329 |
data['picture1'] = {'content': 'base64encoded_picture'} |
330 |
mocked_post.return_value = utils.FakedResponse(content=DEMAND_CREATION_RESPONSE, status_code=200) |
|
330 |
mocked_post.return_value = tests.utils.FakedResponse(content=DEMAND_CREATION_RESPONSE, status_code=200)
|
|
331 | 331 |
mocked_post.side_effect = None |
332 | 332 |
response = app.post_json(endpoint, params=data) |
333 | 333 |
assert mocked_post.call_count == 3 |
tests/test_lille_urban_card.py | ||
---|---|---|
4 | 4 | |
5 | 5 |
import mock |
6 | 6 |
import pytest |
7 |
import utils |
|
8 | 7 |
from httmock import HTTMock |
9 | 8 | |
9 |
import tests.utils |
|
10 | 10 |
from passerelle.compat import json_loads |
11 | 11 |
from passerelle.contrib.lille_urban_card.models import LilleUrbanCard |
12 | 12 |
from passerelle.utils.jsonresponse import APIError |
... | ... | |
14 | 14 | |
15 | 15 |
@pytest.fixture |
16 | 16 |
def connector(db): |
17 |
return utils.setup_access_rights( |
|
17 |
return tests.utils.setup_access_rights(
|
|
18 | 18 |
LilleUrbanCard.objects.create( |
19 | 19 |
slug='test', base_url='http://localhost', username='test', password='secret' |
20 | 20 |
) |
... | ... | |
97 | 97 |
@mock.patch('passerelle.utils.Request.post') |
98 | 98 |
def test_get_token(mocked_post, app, connector): |
99 | 99 |
with pytest.raises(APIError): |
100 |
mocked_post.return_value = utils.FakedResponse(content=TOKEN_ERROR_RESPONSE, status_code=400) |
|
100 |
mocked_post.return_value = tests.utils.FakedResponse(content=TOKEN_ERROR_RESPONSE, status_code=400)
|
|
101 | 101 |
connector.get_token() |
102 |
mocked_post.return_value = utils.FakedResponse(content=TOKEN_RESPONSE, status_code=200) |
|
102 |
mocked_post.return_value = tests.utils.FakedResponse(content=TOKEN_RESPONSE, status_code=200)
|
|
103 | 103 |
connector.get_token() |
104 | 104 | |
105 | 105 | |
106 | 106 |
def test_csp(app, connector): |
107 |
endpoint = utils.generic_endpoint_url('lille-urban-card', 'csp', slug=connector.slug) |
|
107 |
endpoint = tests.utils.generic_endpoint_url('lille-urban-card', 'csp', slug=connector.slug)
|
|
108 | 108 |
resp = app.get(endpoint) |
109 | 109 |
assert resp.json.get('data') |
110 | 110 | |
111 | 111 | |
112 | 112 |
def test_card_request(app, connector): |
113 |
endpoint = utils.generic_endpoint_url('lille-urban-card', 'card_request', slug=connector.slug) |
|
113 |
endpoint = tests.utils.generic_endpoint_url('lille-urban-card', 'card_request', slug=connector.slug)
|
|
114 | 114 |
with HTTMock(mocked_http): |
115 | 115 |
resp = app.post_json( |
116 | 116 |
endpoint, |
... | ... | |
172 | 172 | |
173 | 173 | |
174 | 174 |
def test_card_status(app, connector): |
175 |
endpoint = utils.generic_endpoint_url('lille-urban-card', 'card_status', slug=connector.slug) |
|
175 |
endpoint = tests.utils.generic_endpoint_url('lille-urban-card', 'card_status', slug=connector.slug)
|
|
176 | 176 |
with HTTMock(mocked_http): |
177 | 177 |
resp = app.get(endpoint + '?n_demande_clu=1234') |
178 | 178 |
assert resp.json['data']['statut_desc'] == 'CARTE_PRODUITE_EXPEDIEE' |
179 | 179 | |
180 | 180 | |
181 | 181 |
def test_add_subscriptions(app, connector): |
182 |
endpoint = utils.generic_endpoint_url('lille-urban-card', 'add_subscriptions', slug=connector.slug) |
|
182 |
endpoint = tests.utils.generic_endpoint_url('lille-urban-card', 'add_subscriptions', slug=connector.slug)
|
|
183 | 183 |
with HTTMock(mocked_http): |
184 | 184 |
resp = app.post_json( |
185 | 185 |
endpoint, |
... | ... | |
227 | 227 | |
228 | 228 | |
229 | 229 |
def test_code_change(app, connector): |
230 |
endpoint = utils.generic_endpoint_url('lille-urban-card', 'code_change', slug=connector.slug) |
|
230 |
endpoint = tests.utils.generic_endpoint_url('lille-urban-card', 'code_change', slug=connector.slug)
|
|
231 | 231 |
with HTTMock(mocked_http): |
232 | 232 |
resp = app.post_json( |
233 | 233 |
endpoint, |
... | ... | |
257 | 257 | |
258 | 258 | |
259 | 259 |
def test_code_check(app, connector): |
260 |
endpoint = utils.generic_endpoint_url('lille-urban-card', 'code_check', slug=connector.slug) |
|
260 |
endpoint = tests.utils.generic_endpoint_url('lille-urban-card', 'code_check', slug=connector.slug)
|
|
261 | 261 |
with HTTMock(mocked_http): |
262 | 262 |
resp = app.post_json( |
263 | 263 |
endpoint, |
... | ... | |
282 | 282 | |
283 | 283 | |
284 | 284 |
def test_card_info(app, connector): |
285 |
endpoint = utils.generic_endpoint_url('lille-urban-card', 'card_info', slug=connector.slug) |
|
285 |
endpoint = tests.utils.generic_endpoint_url('lille-urban-card', 'card_info', slug=connector.slug)
|
|
286 | 286 |
with HTTMock(mocked_http): |
287 | 287 |
resp = app.get( |
288 | 288 |
endpoint, |
... | ... | |
313 | 313 | |
314 | 314 | |
315 | 315 |
def test_card_revocation(app, connector): |
316 |
endpoint = utils.generic_endpoint_url('lille-urban-card', 'card_revocation', slug=connector.slug) |
|
316 |
endpoint = tests.utils.generic_endpoint_url('lille-urban-card', 'card_revocation', slug=connector.slug)
|
|
317 | 317 |
with HTTMock(mocked_http): |
318 | 318 |
resp = app.post_json( |
319 | 319 |
endpoint, |
... | ... | |
341 | 341 | |
342 | 342 | |
343 | 343 |
def test_subscription_revocation(app, connector): |
344 |
endpoint = utils.generic_endpoint_url('lille-urban-card', 'subscription_revocation', slug=connector.slug) |
|
344 |
endpoint = tests.utils.generic_endpoint_url( |
|
345 |
'lille-urban-card', 'subscription_revocation', slug=connector.slug |
|
346 |
) |
|
345 | 347 |
with HTTMock(mocked_http): |
346 | 348 |
resp = app.post_json( |
347 | 349 |
endpoint, |
... | ... | |
373 | 375 | |
374 | 376 | |
375 | 377 |
def test_subscription_renewal(app, connector): |
376 |
endpoint = utils.generic_endpoint_url('lille-urban-card', 'subscription_renewal', slug=connector.slug) |
|
378 |
endpoint = tests.utils.generic_endpoint_url( |
|
379 |
'lille-urban-card', 'subscription_renewal', slug=connector.slug |
|
380 |
) |
|
377 | 381 |
with HTTMock(mocked_http): |
378 | 382 |
resp = app.post_json( |
379 | 383 |
endpoint, |
tests/test_maelis.py | ||
---|---|---|
5 | 5 | |
6 | 6 |
import mock |
7 | 7 |
import pytest |
8 |
import utils |
|
9 | 8 |
from django.test import override_settings |
10 | 9 |
from django.utils.dateparse import parse_date |
11 | 10 | |
11 |
import tests.utils |
|
12 | 12 |
from passerelle.apps.maelis.models import Link, Maelis |
13 | 13 |
from passerelle.apps.maelis.utils import ( |
14 | 14 |
decompose_event, |
... | ... | |
51 | 51 |
@pytest.fixture |
52 | 52 |
def catalog_mocked_get(activity_service_wsdl, family_service_wsdl): |
53 | 53 |
return ( |
54 |
utils.FakedResponse( |
|
54 |
tests.utils.FakedResponse(
|
|
55 | 55 |
content=family_service_wsdl, status_code=200, headers={'Content-Type': 'text/xml'} |
56 | 56 |
), |
57 |
utils.FakedResponse( |
|
57 |
tests.utils.FakedResponse(
|
|
58 | 58 |
content=activity_service_wsdl, status_code=200, headers={'Content-Type': 'text/xml'} |
59 | 59 |
), |
60 | 60 |
) |
... | ... | |
63 | 63 |
@pytest.fixture |
64 | 64 |
def catalog_mocked_post(): |
65 | 65 |
return ( |
66 |
utils.FakedResponse( |
|
66 |
tests.utils.FakedResponse(
|
|
67 | 67 |
content=get_xml_file('readFamily.xml'), status_code=200, headers={'Content-Type': 'text/xml'} |
68 | 68 |
), |
69 |
utils.FakedResponse( |
|
69 |
tests.utils.FakedResponse(
|
|
70 | 70 |
content=get_xml_file('readActivityListResponse.xml'), |
71 | 71 |
status_code=200, |
72 | 72 |
headers={'Content-Type': 'text/xml'}, |
... | ... | |
76 | 76 | |
77 | 77 |
@pytest.fixture |
78 | 78 |
def connector(db): |
79 |
return utils.setup_access_rights( |
|
79 |
return tests.utils.setup_access_rights(
|
|
80 | 80 |
Maelis.objects.create( |
81 | 81 |
slug='test', login='foo', password='bar', base_url='http://www3.sigec.fr/entrouvertws/services/' |
82 | 82 |
) |
... | ... | |
175 | 175 |
def test_update_coordinates(mocked_post, mocked_get, family_service_wsdl, connector, app): |
176 | 176 |
mocked_get.return_value = mock.Mock(content=family_service_wsdl) |
177 | 177 |
mocked_post.side_effect = ( |
178 |
utils.FakedResponse( |
|
178 |
tests.utils.FakedResponse(
|
|
179 | 179 |
content=get_xml_file('updateCoordinatesResponse.xml'), |
180 | 180 |
status_code=200, |
181 | 181 |
headers={'Content-Type': 'text/xml'}, |
182 | 182 |
), |
183 |
utils.FakedResponse( |
|
183 |
tests.utils.FakedResponse(
|
|
184 | 184 |
content=get_xml_file('updateCoordinatesError.xml'), |
185 | 185 |
status_code=200, |
186 | 186 |
headers={'Content-Type': 'text/xml'}, |
... | ... | |
323 | 323 |
connector, |
324 | 324 |
): |
325 | 325 |
mocked_get.side_effect = ( |
326 |
utils.FakedResponse( |
|
326 |
tests.utils.FakedResponse(
|
|
327 | 327 |
content=family_service_wsdl, status_code=200, headers={'Content-Type': 'text/xml'} |
328 | 328 |
), |
329 |
utils.FakedResponse( |
|
329 |
tests.utils.FakedResponse(
|
|
330 | 330 |
content=activity_service_wsdl, status_code=200, headers={'Content-Type': 'text/xml'} |
331 | 331 |
), |
332 |
utils.FakedResponse( |
|
332 |
tests.utils.FakedResponse(
|
|
333 | 333 |
content=activity_service_wsdl, status_code=200, headers={'Content-Type': 'text/xml'} |
334 | 334 |
), |
335 | 335 |
) |
336 | 336 |
mocked_post.side_effect = ( |
337 |
utils.FakedResponse( |
|
337 |
tests.utils.FakedResponse(
|
|
338 | 338 |
content=get_xml_file('readFamily.xml'), status_code=200, headers={'Content-Type': 'text/xml'} |
339 | 339 |
), |
340 |
utils.FakedResponse( |
|
340 |
tests.utils.FakedResponse(
|
|
341 | 341 |
content=get_xml_file('child_planning_readActivityListResponse.xml'), |
342 | 342 |
status_code=200, |
343 | 343 |
headers={'Content-Type': 'text/xml'}, |
344 | 344 |
), |
345 |
utils.FakedResponse( |
|
345 |
tests.utils.FakedResponse(
|
|
346 | 346 |
content=get_xml_file('child_planning_readChildMonthPlanningResponse.xml'), |
347 | 347 |
status_code=200, |
348 | 348 |
headers={'Content-Type': 'text/xml'}, |
... | ... | |
429 | 429 |
def test_subscribe(mocked_post, mocked_get, family_service_wsdl, connector, app): |
430 | 430 |
mocked_get.return_value = mock.Mock(content=family_service_wsdl) |
431 | 431 |
mocked_post.side_effect = ( |
432 |
utils.FakedResponse( |
|
432 |
tests.utils.FakedResponse(
|
|
433 | 433 |
content=get_xml_file('readFamily.xml'), status_code=200, headers={'Content-Type': 'text/xml'} |
434 | 434 |
), |
435 |
utils.FakedResponse( |
|
435 |
tests.utils.FakedResponse(
|
|
436 | 436 |
content=get_xml_file('subscribeActivityResult.xml'), |
437 | 437 |
status_code=200, |
438 | 438 |
headers={'Content-Type': 'text/xml'}, |
... | ... | |
453 | 453 |
def test_unsubscribe(mocked_post, mocked_get, family_service_wsdl, connector, app): |
454 | 454 |
mocked_get.return_value = mock.Mock(content=family_service_wsdl) |
455 | 455 |
mocked_post.side_effect = ( |
456 |
utils.FakedResponse( |
|
456 |
tests.utils.FakedResponse(
|
|
457 | 457 |
content=get_xml_file('readFamily.xml'), status_code=200, headers={'Content-Type': 'text/xml'} |
458 | 458 |
), |
459 |
utils.FakedResponse( |
|
459 |
tests.utils.FakedResponse(
|
|
460 | 460 |
content=get_xml_file('deletesubscribe.xml'), status_code=200, headers={'Content-Type': 'text/xml'} |
461 | 461 |
), |
462 | 462 |
) |
tests/test_mdel.py | ||
---|---|---|
24 | 24 |
from xml.etree import ElementTree as etree |
25 | 25 | |
26 | 26 |
import pytest |
27 |
import utils |
|
28 | 27 |
from lxml import etree as letree |
29 | 28 | |
29 |
import tests.utils |
|
30 | 30 |
from passerelle.apps.mdel.mdel import AttachedFile, Description, Message, get_resource_base_dir |
31 | 31 |
from passerelle.apps.mdel.models import MDEL, Demand |
32 | 32 |
from passerelle.apps.mdel.utils import parse_date |
... | ... | |
64 | 64 | |
65 | 65 |
@pytest.fixture |
66 | 66 |
def setup(db): |
67 |
return utils.setup_access_rights(MDEL.objects.create(slug='test')) |
|
67 |
return tests.utils.setup_access_rights(MDEL.objects.create(slug='test'))
|
|
68 | 68 | |
69 | 69 | |
70 | 70 |
@pytest.fixture( |
tests/test_mdel_ddpacs.py | ||
---|---|---|
22 | 22 |
import os |
23 | 23 | |
24 | 24 |
import pytest |
25 |
import utils |
|
26 | 25 |
import xmlschema |
27 | 26 | |
27 |
import tests.utils |
|
28 | 28 |
from passerelle.apps.mdel_ddpacs.models import Demand, Resource |
29 | 29 |
from passerelle.utils import json, sftp |
30 | 30 |
from passerelle.utils.zip import ZipTemplate, diff_zip |
... | ... | |
37 | 37 | |
38 | 38 |
@pytest.fixture(autouse=True) |
39 | 39 |
def resource(db): |
40 |
return utils.setup_access_rights( |
|
40 |
return tests.utils.setup_access_rights(
|
|
41 | 41 |
Resource.objects.create( |
42 | 42 |
slug='test', |
43 | 43 |
code_insee='66666', |
tests/test_mdph13.py | ||
---|---|---|
24 | 24 |
import pytest |
25 | 25 |
import requests |
26 | 26 |
import requests.exceptions |
27 |
import utils |
|
28 | 27 | |
28 |
import tests.utils |
|
29 | 29 |
from passerelle.contrib.mdph13.models import Link, MDPH13Resource |
30 | 30 |
from passerelle.utils.jsonresponse import APIError |
31 | 31 | |
... | ... | |
197 | 197 | |
198 | 198 |
@pytest.fixture |
199 | 199 |
def mdph13(db): |
200 |
return utils.make_resource( |
|
200 |
return tests.utils.make_resource(
|
|
201 | 201 |
MDPH13Resource, |
202 | 202 |
title='Test 1', |
203 | 203 |
slug='test1', |
tests/test_misc.py | ||
---|---|---|
11 | 11 |
from django.utils.six import StringIO |
12 | 12 |
from mock import patch |
13 | 13 |
from requests.exceptions import ReadTimeout |
14 |
from test_manager import login |
|
15 | 14 | |
16 | 15 |
from passerelle.apps.base_adresse.models import BaseAdresse |
17 | 16 |
from passerelle.apps.clicrdv.models import ClicRdv |
18 | 17 |
from passerelle.apps.opengis.models import OpenGIS |
19 | 18 |
from passerelle.base.models import ResourceLog |
19 |
from tests.test_manager import login |
|
20 | 20 | |
21 | 21 | |
22 | 22 |
def test_get_description_url_fields(db): |
... | ... | |
104 | 104 | |
105 | 105 | |
106 | 106 |
def test_trace_emails(app, settings, dummy_csv_datasource, email_handler, mailoutbox): |
107 |
from utils import generic_endpoint_url |
|
107 |
from tests.utils import generic_endpoint_url
|
|
108 | 108 | |
109 | 109 |
settings.ADMINS = [('admin', 'admin@example.net')] |
110 | 110 |
tests/test_okina.py | ||
---|---|---|
3 | 3 | |
4 | 4 |
import mock |
5 | 5 |
import pytest |
6 |
import utils |
|
7 | 6 |
from django.contrib.contenttypes.models import ContentType |
8 | 7 | |
8 |
import tests.utils |
|
9 | 9 |
from passerelle.apps.okina.models import Okina |
10 | 10 |
from passerelle.base.models import AccessRight, ApiUser |
11 | 11 | |
... | ... | |
1647 | 1647 | |
1648 | 1648 | |
1649 | 1649 |
def test_okina_cities(app, okina): |
1650 |
endpoint = utils.generic_endpoint_url('okina', 'cities', slug=okina.slug) |
|
1650 |
endpoint = tests.utils.generic_endpoint_url('okina', 'cities', slug=okina.slug)
|
|
1651 | 1651 |
assert endpoint == '/okina/test/cities' |
1652 | 1652 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
1653 |
requests_get.return_value = utils.FakedResponse(content=CITIES, status_code=200) |
|
1653 |
requests_get.return_value = tests.utils.FakedResponse(content=CITIES, status_code=200)
|
|
1654 | 1654 |
resp = app.get(endpoint, status=200) |
1655 | 1655 |
assert requests_get.call_count == 1 |
1656 | 1656 |
assert requests_get.call_args[0][0] == 'https://okina.example.net/b2b/cities' |
... | ... | |
1663 | 1663 |
assert resp.json['data'][0]['text'] == 'ARDENTES (36120)' |
1664 | 1664 |
assert resp.json['data'][0]['lat'] is None |
1665 | 1665 | |
1666 |
requests_get.return_value = utils.FakedResponse(content=CITIES_NEW, status_code=200) |
|
1666 |
requests_get.return_value = tests.utils.FakedResponse(content=CITIES_NEW, status_code=200)
|
|
1667 | 1667 |
resp = app.get(endpoint, status=200) |
1668 | 1668 |
assert requests_get.call_count == 2 |
1669 | 1669 |
assert 'data' in resp.json |
... | ... | |
1676 | 1676 | |
1677 | 1677 | |
1678 | 1678 |
def test_okina_classes(app, okina): |
1679 |
endpoint = utils.generic_endpoint_url('okina', 'classes', slug=okina.slug) |
|
1679 |
endpoint = tests.utils.generic_endpoint_url('okina', 'classes', slug=okina.slug)
|
|
1680 | 1680 |
assert endpoint == '/okina/test/classes' |
1681 | 1681 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
1682 |
requests_get.return_value = utils.FakedResponse(content=CLASSES, status_code=200) |
|
1682 |
requests_get.return_value = tests.utils.FakedResponse(content=CLASSES, status_code=200)
|
|
1683 | 1683 |
resp = app.get(endpoint, status=200) |
1684 | 1684 |
assert requests_get.call_count == 1 |
1685 | 1685 |
assert requests_get.call_args[0][0] == 'https://okina.example.net/b2b/classes' |
... | ... | |
1690 | 1690 | |
1691 | 1691 | |
1692 | 1692 |
def test_okina_institutions(app, okina): |
1693 |
endpoint = utils.generic_endpoint_url('okina', 'institutions', slug=okina.slug) |
|
1693 |
endpoint = tests.utils.generic_endpoint_url('okina', 'institutions', slug=okina.slug)
|
|
1694 | 1694 |
assert endpoint == '/okina/test/institutions' |
1695 | 1695 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
1696 | 1696 |
for content in (INSTITUTIONS, INSTITUTIONS_NEW): |
1697 |
requests_get.return_value = utils.FakedResponse(content=content, status_code=200) |
|
1697 |
requests_get.return_value = tests.utils.FakedResponse(content=content, status_code=200)
|
|
1698 | 1698 |
resp = app.get(endpoint, status=200) |
1699 | 1699 |
assert requests_get.call_args[0][0] == 'https://okina.example.net/b2b/institutions' |
1700 | 1700 |
assert resp.json['err'] == 0 |
... | ... | |
1725 | 1725 | |
1726 | 1726 | |
1727 | 1727 |
def test_okina_search(app, okina): |
1728 |
endpoint = utils.generic_endpoint_url('okina', 'search', slug=okina.slug) |
|
1728 |
endpoint = tests.utils.generic_endpoint_url('okina', 'search', slug=okina.slug)
|
|
1729 | 1729 |
assert endpoint == '/okina/test/search' |
1730 | 1730 |
with mock.patch('passerelle.utils.Request.post') as requests_post: |
1731 |
requests_post.return_value = utils.FakedResponse(content=SEARCH, status_code=200) |
|
1731 |
requests_post.return_value = tests.utils.FakedResponse(content=SEARCH, status_code=200)
|
|
1732 | 1732 | |
1733 | 1733 |
# refuse anonymous access |
1734 | 1734 |
resp = app.get(endpoint + '?lat=46.828652&lon=1.701463&institution=277', status=403) |
... | ... | |
1771 | 1771 | |
1772 | 1772 | |
1773 | 1773 |
def test_okina_stops_area(app, okina): |
1774 |
endpoint = utils.generic_endpoint_url('okina', 'stop-areas', slug=okina.slug) |
|
1774 |
endpoint = tests.utils.generic_endpoint_url('okina', 'stop-areas', slug=okina.slug)
|
|
1775 | 1775 |
assert endpoint == '/okina/test/stop-areas' |
1776 | 1776 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
1777 |
requests_get.return_value = utils.FakedResponse(content=STOPS, status_code=200) |
|
1777 |
requests_get.return_value = tests.utils.FakedResponse(content=STOPS, status_code=200)
|
|
1778 | 1778 |
resp = app.get(endpoint + '/from-city/36005/to-institution/276/', status=200) |
1779 | 1779 |
assert ( |
1780 | 1780 |
requests_get.call_args[0][0] |
... | ... | |
1787 | 1787 | |
1788 | 1788 | |
1789 | 1789 |
def test_okina_ods(app, okina): |
1790 |
endpoint = utils.generic_endpoint_url('okina', 'origin-destinations', slug=okina.slug) |
|
1790 |
endpoint = tests.utils.generic_endpoint_url('okina', 'origin-destinations', slug=okina.slug)
|
|
1791 | 1791 |
assert endpoint == '/okina/test/origin-destinations' |
1792 | 1792 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
1793 |
requests_get.return_value = utils.FakedResponse(content=ODS, status_code=200) |
|
1793 |
requests_get.return_value = tests.utils.FakedResponse(content=ODS, status_code=200)
|
|
1794 | 1794 |
resp = app.get(endpoint, status=200) |
1795 | 1795 |
assert requests_get.call_count == 1 |
1796 | 1796 |
assert requests_get.call_args[0][0] == 'https://okina.example.net/b2b/ods' |
... | ... | |
1801 | 1801 |
assert resp.json['data'][0]['identifier'] == 'SYNDICAT ARDENTES 4 (semaine Aller)' |
1802 | 1802 |
assert resp.json['data'][0]['vehicle_journey_id'] == '84' |
1803 | 1803 | |
1804 |
requests_get.return_value = utils.FakedResponse(content=ODS, status_code=200) |
|
1804 |
requests_get.return_value = tests.utils.FakedResponse(content=ODS, status_code=200)
|
|
1805 | 1805 |
resp = app.get(endpoint + '/to-institution/276/', status=200) |
1806 | 1806 |
assert requests_get.call_args[0][0] == 'https://okina.example.net/b2b/ods/institution/276' |
1807 | 1807 |
assert resp.json['err'] == 0 |
... | ... | |
1811 | 1811 |
assert resp.json['data'][0]['identifier'] == 'SYNDICAT ARDENTES 4 (semaine Aller)' |
1812 | 1812 |
assert resp.json['data'][0]['vehicle_journey_id'] == '84' |
1813 | 1813 | |
1814 |
requests_get.return_value = utils.FakedResponse(content=ODS_LINES, status_code=200) |
|
1814 |
requests_get.return_value = tests.utils.FakedResponse(content=ODS_LINES, status_code=200)
|
|
1815 | 1815 |
resp = app.get(endpoint + '/from-stop-area/3282/to-institution/276/', status=200) |
1816 | 1816 |
assert ( |
1817 | 1817 |
requests_get.call_args[0][0] == 'https://okina.example.net/b2b/ods/institution/276/stop-area/3282' |
... | ... | |
1836 | 1836 |
assert resp.json['data'][2]['lines'][1]['id'] == '23' |
1837 | 1837 |
assert resp.json['data'][2]['lines'][1]['text'] == 'LIGNE 23' |
1838 | 1838 | |
1839 |
requests_get.return_value = utils.FakedResponse(content=ODS_FULL, status_code=200) |
|
1839 |
requests_get.return_value = tests.utils.FakedResponse(content=ODS_FULL, status_code=200)
|
|
1840 | 1840 |
resp = app.get(endpoint + '/from-city/36005/to-institution/276/', status=200) |
1841 | 1841 |
assert ( |
1842 | 1842 |
requests_get.call_args[0][0] |
... | ... | |
1851 | 1851 |
assert resp.json['data'][0]['identifier'] == 'SYNDICAT ARDENTES 4 (semaine Aller)' |
1852 | 1852 |
assert resp.json['data'][0]['vehicle_journey_id'] == '84' |
1853 | 1853 | |
1854 |
requests_get.return_value = utils.FakedResponse(content=ODS_FULL, status_code=200) |
|
1854 |
requests_get.return_value = tests.utils.FakedResponse(content=ODS_FULL, status_code=200)
|
|
1855 | 1855 |
resp = app.get(endpoint + '/from-city/36005/', status=200) |
1856 | 1856 |
assert requests_get.call_args[0][0] == 'https://okina.example.net/b2b/ods/subscriberCity/36005' |
1857 | 1857 |
assert resp.json['err'] == 0 |
... | ... | |
1865 | 1865 | |
1866 | 1866 | |
1867 | 1867 |
def test_okina_topology(app, okina): |
1868 |
endpoint = utils.generic_endpoint_url('okina', 'topology', slug=okina.slug) |
|
1868 |
endpoint = tests.utils.generic_endpoint_url('okina', 'topology', slug=okina.slug)
|
|
1869 | 1869 |
assert endpoint == '/okina/test/topology' |
1870 | 1870 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
1871 |
requests_get.return_value = utils.FakedResponse(content=LINES, status_code=200) |
|
1871 |
requests_get.return_value = tests.utils.FakedResponse(content=LINES, status_code=200)
|
|
1872 | 1872 |
resp = app.get(endpoint + '/lines/', status=200) |
1873 | 1873 |
assert requests_get.call_args[0][0] == 'https://okina.example.net/b2b/topology/lines' |
1874 | 1874 |
assert resp.json['err'] == 0 |
... | ... | |
1876 | 1876 |
assert resp.json['data'][0]['id'] == '45' |
1877 | 1877 |
assert resp.json['data'][0]['text'] == '019 - 02 - VELLES LYCEES DE CHATEAUROUX' |
1878 | 1878 | |
1879 |
requests_get.return_value = utils.FakedResponse(content=NETWORKS, status_code=200) |
|
1879 |
requests_get.return_value = tests.utils.FakedResponse(content=NETWORKS, status_code=200)
|
|
1880 | 1880 |
resp = app.get(endpoint + '/networks/', status=200) |
1881 | 1881 |
assert requests_get.call_args[0][0] == 'https://okina.example.net/b2b/topology/networks' |
1882 | 1882 |
assert resp.json['err'] == 0 |
... | ... | |
1884 | 1884 |
assert resp.json['data'][0]['id'] == '2' |
1885 | 1885 |
assert resp.json['data'][0]['text'] == u'réseau scolaire' |
1886 | 1886 | |
1887 |
requests_get.return_value = utils.FakedResponse(content=VEHICLE_JOURNEYS, status_code=200) |
|
1887 |
requests_get.return_value = tests.utils.FakedResponse(content=VEHICLE_JOURNEYS, status_code=200)
|
|
1888 | 1888 |
resp = app.get(endpoint + '/vehicle-journeys/', status=200) |
1889 | 1889 |
assert requests_get.call_args[0][0] == 'https://okina.example.net/b2b/topology/vehicle-journeys' |
1890 | 1890 |
assert resp.json['err'] == 0 |
... | ... | |
1905 | 1905 |
(400, '[{"message": "bad request"}]'), |
1906 | 1906 |
(500, '<h1>Crash</h1>'), |
1907 | 1907 |
): |
1908 |
requests_get.return_value = utils.FakedResponse(content=response[1], status_code=response[0]) |
|
1908 |
requests_get.return_value = tests.utils.FakedResponse( |
|
1909 |
content=response[1], status_code=response[0] |
|
1910 |
) |
|
1909 | 1911 |
resp = app.get('/okina/test/cities', status=200) |
1910 | 1912 |
assert resp.json['err'] == 1 |
1911 | 1913 |
if resp.json['data'] and 'status_code' in resp.json['data']: |
... | ... | |
1913 | 1915 | |
1914 | 1916 |
# "normal" 401/403 response, ie problem with login/password |
1915 | 1917 |
for status_code in (401, 403): |
1916 |
requests_get.return_value = utils.FakedResponse( |
|
1918 |
requests_get.return_value = tests.utils.FakedResponse(
|
|
1917 | 1919 |
content='''{"message": "Invalid credentials", |
1918 | 1920 |
"code": 4, "status" : %d}''' |
1919 | 1921 |
% status_code, |
... | ... | |
1927 | 1929 |
def test_okina_suscribe(app, okina): |
1928 | 1930 | |
1929 | 1931 |
for service in ('subscriber', 'subscription'): |
1930 |
endpoint = utils.generic_endpoint_url('okina', service, slug=okina.slug) |
|
1932 |
endpoint = tests.utils.generic_endpoint_url('okina', service, slug=okina.slug)
|
|
1931 | 1933 |
assert endpoint == '/okina/test/%s' % service |
1932 | 1934 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
1933 | 1935 |
resp = app.post(endpoint, status=403) |
... | ... | |
1941 | 1943 |
codename='can_access', apiuser=api, resource_type=obj_type, resource_pk=okina.pk |
1942 | 1944 |
) |
1943 | 1945 |
for service in ('subscriber', 'subscription'): |
1944 |
endpoint = utils.generic_endpoint_url('okina', service, slug=okina.slug) |
|
1946 |
endpoint = tests.utils.generic_endpoint_url('okina', service, slug=okina.slug)
|
|
1945 | 1947 |
assert endpoint == '/okina/test/%s' % service |
1946 | 1948 |
with mock.patch('passerelle.utils.Request.post') as requests_get: |
1947 | 1949 |
resp = app.post(endpoint, status=400) # no payload |
... | ... | |
1956 | 1958 |
assert resp.json['err_class'] == 'passerelle.utils.jsonresponse.APIError' |
1957 | 1959 |
assert resp.json['err_desc'] == 'payload must be a dict' |
1958 | 1960 | |
1959 |
requests_get.return_value = utils.FakedResponse(content='{"foo":"bar"}', status_code=200) |
|
1961 |
requests_get.return_value = tests.utils.FakedResponse(content='{"foo":"bar"}', status_code=200)
|
|
1960 | 1962 |
resp = app.post_json(endpoint, params={'x': 'y'}) |
1961 | 1963 |
assert requests_get.call_count == 1 |
1962 | 1964 |
assert resp.json['err'] == 0 |
1963 | 1965 |
assert resp.json['data'] == {'foo': 'bar'} |
1964 | 1966 | |
1965 | 1967 |
# multiple subscriptions |
1966 |
endpoint = utils.generic_endpoint_url('okina', 'subscription', slug=okina.slug) |
|
1968 |
endpoint = tests.utils.generic_endpoint_url('okina', 'subscription', slug=okina.slug)
|
|
1967 | 1969 |
with mock.patch('passerelle.utils.Request.post') as requests_post: |
1968 |
requests_post.return_value = utils.FakedResponse(content='{"sub":"ok"}', status_code=200) |
|
1970 |
requests_post.return_value = tests.utils.FakedResponse(content='{"sub":"ok"}', status_code=200)
|
|
1969 | 1971 |
resp = app.post_json(endpoint, params={'lineIds': '1 ,2, 3', 'foo': 'bar'}) |
1970 | 1972 |
assert requests_post.call_count == 3 |
1971 | 1973 |
assert json.loads(requests_post.call_args_list[0][1]['data']) == {'foo': 'bar', 'lineId': '1'} |
... | ... | |
1977 | 1979 |
# qrcode |
1978 | 1980 |
endpoint = '/okina/test/subscriber/123/qrcode' |
1979 | 1981 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
1980 |
requests_get.return_value = utils.FakedResponse( |
|
1982 |
requests_get.return_value = tests.utils.FakedResponse(
|
|
1981 | 1983 |
content='PNGfoo', headers={'Content-Type': 'image/png'}, status_code=200 |
1982 | 1984 |
) |
1983 | 1985 |
resp = app.get(endpoint) |
... | ... | |
1985 | 1987 |
assert resp.headers['content-type'] == 'image/png' |
1986 | 1988 |
assert resp.content == b'PNGfoo' |
1987 | 1989 | |
1988 |
requests_get.return_value = utils.FakedResponse( |
|
1990 |
requests_get.return_value = tests.utils.FakedResponse(
|
|
1989 | 1991 |
content=QRCODE_400, headers={'Content-Type': 'application/json'}, status_code=400 |
1990 | 1992 |
) |
1991 | 1993 |
resp = app.get(endpoint, status=200) |
... | ... | |
1995 | 1997 |
'Subscriber with ID 123 has no passcard number to generate qr code from.' |
1996 | 1998 |
) |
1997 | 1999 | |
1998 |
requests_get.return_value = utils.FakedResponse( |
|
2000 |
requests_get.return_value = tests.utils.FakedResponse(
|
|
1999 | 2001 |
content=QRCODE_404, headers={'Content-Type': 'application/json'}, status_code=404 |
2000 | 2002 |
) |
2001 | 2003 |
resp = app.get(endpoint, status=200) |
tests/test_opendatasoft.py | ||
---|---|---|
19 | 19 | |
20 | 20 |
import mock |
21 | 21 |
import pytest |
22 |
import utils |
|
23 | 22 |
from django.contrib.auth.models import User |
24 | 23 |
from requests.exceptions import ConnectionError |
25 |
from test_manager import login |
|
26 | 24 | |
25 |
import tests.utils |
|
27 | 26 |
from passerelle.apps.opendatasoft.models import OpenDataSoft, Query |
28 | 27 |
from passerelle.utils import import_site |
28 |
from tests.test_manager import login |
|
29 | 29 | |
30 | 30 |
pytestmark = pytest.mark.django_db |
31 | 31 | |
... | ... | |
127 | 127 | |
128 | 128 |
@pytest.fixture |
129 | 129 |
def connector(): |
130 |
return utils.setup_access_rights( |
|
130 |
return tests.utils.setup_access_rights(
|
|
131 | 131 |
OpenDataSoft.objects.create( |
132 | 132 |
slug='my_connector', |
133 | 133 |
service_url='http://www.example.net', |
... | ... | |
181 | 181 | |
182 | 182 |
@mock.patch('passerelle.utils.Request.get') |
183 | 183 |
def test_search_empty_contents(mocked_get, app, connector): |
184 |
endpoint = utils.generic_endpoint_url('opendatasoft', 'search', slug=connector.slug) |
|
184 |
endpoint = tests.utils.generic_endpoint_url('opendatasoft', 'search', slug=connector.slug)
|
|
185 | 185 |
assert endpoint == '/opendatasoft/my_connector/search' |
186 | 186 | |
187 | 187 |
# error returned by opendadasoft server |
188 | 188 |
json_response = json.dumps({'error': "The query is invalid : Field 00 doesn't exist"}) |
189 |
mocked_get.return_value = utils.FakedResponse(content=json_response, status_code=200) |
|
189 |
mocked_get.return_value = tests.utils.FakedResponse(content=json_response, status_code=200)
|
|
190 | 190 |
resp = app.get(endpoint, status=200) |
191 | 191 |
assert resp.json['err'] |
192 | 192 |
assert resp.json['err_desc'] == "The query is invalid : Field 00 doesn't exist" |
... | ... | |
194 | 194 | |
195 | 195 |
@mock.patch('passerelle.utils.Request.get') |
196 | 196 |
def test_search(mocked_get, app, connector): |
197 |
endpoint = utils.generic_endpoint_url('opendatasoft', 'search', slug=connector.slug) |
|
197 |
endpoint = tests.utils.generic_endpoint_url('opendatasoft', 'search', slug=connector.slug)
|
|
198 | 198 |
assert endpoint == '/opendatasoft/my_connector/search' |
199 | 199 |
params = { |
200 | 200 |
'dataset': 'referentiel-adresse-test', |
... | ... | |
202 | 202 |
'sort': '-nom_rue', |
203 | 203 |
'limit': 3, |
204 | 204 |
} |
205 |
mocked_get.return_value = utils.FakedResponse(content=FAKED_CONTENT_Q_SEARCH, status_code=200) |
|
205 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKED_CONTENT_Q_SEARCH, status_code=200)
|
|
206 | 206 |
resp = app.get(endpoint, params=params, status=200) |
207 | 207 |
assert mocked_get.call_args[1]['params'] == { |
208 | 208 |
'apikey': 'my_secret', |
... | ... | |
230 | 230 | |
231 | 231 |
@mock.patch('passerelle.utils.Request.get') |
232 | 232 |
def test_search_using_q(mocked_get, app, connector): |
233 |
endpoint = utils.generic_endpoint_url('opendatasoft', 'search', slug=connector.slug) |
|
233 |
endpoint = tests.utils.generic_endpoint_url('opendatasoft', 'search', slug=connector.slug)
|
|
234 | 234 |
assert endpoint == '/opendatasoft/my_connector/search' |
235 | 235 |
params = { |
236 | 236 |
'dataset': 'referentiel-adresse-test', |
... | ... | |
239 | 239 |
'limit': '3', |
240 | 240 |
'q': "rue de l'aubepine", |
241 | 241 |
} |
242 |
mocked_get.return_value = utils.FakedResponse(content=FAKED_CONTENT_Q_SEARCH, status_code=200) |
|
242 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKED_CONTENT_Q_SEARCH, status_code=200)
|
|
243 | 243 |
resp = app.get(endpoint, params=params, status=200) |
244 | 244 |
assert mocked_get.call_args[1]['params'] == { |
245 | 245 |
'apikey': 'my_secret', |
... | ... | |
267 | 267 | |
268 | 268 |
@mock.patch('passerelle.utils.Request.get') |
269 | 269 |
def test_search_using_id(mocked_get, app, connector): |
270 |
endpoint = utils.generic_endpoint_url('opendatasoft', 'search', slug=connector.slug) |
|
270 |
endpoint = tests.utils.generic_endpoint_url('opendatasoft', 'search', slug=connector.slug)
|
|
271 | 271 |
assert endpoint == '/opendatasoft/my_connector/search' |
272 | 272 |
params = { |
273 | 273 |
'dataset': 'referentiel-adresse-test', |
274 | 274 |
'text_template': '{{numero}} {{nom_rue}} {{nom_commun}}', |
275 | 275 |
'id': '7cafcd5c692773e8b863587b2d38d6be82e023d8', |
276 | 276 |
} |
277 |
mocked_get.return_value = utils.FakedResponse(content=FAKED_CONTENT_ID_SEARCH, status_code=200) |
|
277 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKED_CONTENT_ID_SEARCH, status_code=200)
|
|
278 | 278 |
resp = app.get(endpoint, params=params, status=200) |
279 | 279 |
assert mocked_get.call_args[1]['params'] == { |
280 | 280 |
'apikey': 'my_secret', |
... | ... | |
291 | 291 |
params = { |
292 | 292 |
'limit': 3, |
293 | 293 |
} |
294 |
mocked_get.return_value = utils.FakedResponse(content=FAKED_CONTENT_Q_SEARCH, status_code=200) |
|
294 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKED_CONTENT_Q_SEARCH, status_code=200)
|
|
295 | 295 |
resp = app.get(endpoint, params=params, status=200) |
296 | 296 |
assert mocked_get.call_args[1]['params'] == { |
297 | 297 |
'apikey': 'my_secret', |
... | ... | |
325 | 325 |
params = { |
326 | 326 |
'q': "rue de l'aubepine", |
327 | 327 |
} |
328 |
mocked_get.return_value = utils.FakedResponse(content=FAKED_CONTENT_Q_SEARCH, status_code=200) |
|
328 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKED_CONTENT_Q_SEARCH, status_code=200)
|
|
329 | 329 |
resp = app.get(endpoint, params=params, status=200) |
330 | 330 |
assert mocked_get.call_args[1]['params'] == { |
331 | 331 |
'apikey': 'my_secret', |
... | ... | |
359 | 359 |
params = { |
360 | 360 |
'id': '7cafcd5c692773e8b863587b2d38d6be82e023d8', |
361 | 361 |
} |
362 |
mocked_get.return_value = utils.FakedResponse(content=FAKED_CONTENT_ID_SEARCH, status_code=200) |
|
362 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKED_CONTENT_ID_SEARCH, status_code=200)
|
|
363 | 363 |
resp = app.get(endpoint, params=params, status=200) |
364 | 364 |
assert mocked_get.call_args[1]['params'] == { |
365 | 365 |
'apikey': 'my_secret', |
... | ... | |
437 | 437 |
content['records'][0]['fields']['text'] = 'original text' |
438 | 438 |
query.text_template = '{{id}} - {{original_id}} - {{original_text}}' |
439 | 439 |
query.save() |
440 |
mocked_get.return_value = utils.FakedResponse(content=json.dumps(content), status_code=200) |
|
440 |
mocked_get.return_value = tests.utils.FakedResponse(content=json.dumps(content), status_code=200)
|
|
441 | 441 |
resp = app.get(endpoint, params=params, status=200) |
442 | 442 |
assert resp.json['data'][0]['original_id'] == 'original id' |
443 | 443 |
assert resp.json['data'][0]['original_text'] == 'original text' |
... | ... | |
448 | 448 | |
449 | 449 | |
450 | 450 |
def test_call_search_errors(app, connector): |
451 |
endpoint = utils.generic_endpoint_url('opendatasoft', 'search', slug=connector.slug) |
|
451 |
endpoint = tests.utils.generic_endpoint_url('opendatasoft', 'search', slug=connector.slug)
|
|
452 | 452 |
assert endpoint == '/opendatasoft/my_connector/search' |
453 | 453 |
url = connector.service_url + '/api/records/1.0/search/' |
454 | 454 | |
455 | 455 |
# Connection error |
456 | 456 |
exception = ConnectionError('Remote end closed connection without response') |
457 |
with utils.mock_url(url=url, exception=exception): |
|
457 |
with tests.utils.mock_url(url=url, exception=exception):
|
|
458 | 458 |
resp = app.get(endpoint) |
459 | 459 |
assert resp.json['err'] |
460 | 460 |
assert resp.json['err_desc'] == 'OpenDataSoft error: Remote end closed connection without response' |
461 | 461 | |
462 | 462 |
# API error, provides HTTP status code |
463 |
with utils.mock_url(url=url, response='{"error": "Unknown dataset: foo"}', status_code=404): |
|
463 |
with tests.utils.mock_url(url=url, response='{"error": "Unknown dataset: foo"}', status_code=404):
|
|
464 | 464 |
resp = app.get(endpoint) |
465 | 465 |
assert resp.json['err'] |
466 | 466 |
assert resp.json['err_desc'] == 'Unknown dataset: foo' |
467 | 467 | |
468 | 468 |
# HTTP error |
469 |
with utils.mock_url(url=url, response='not a json content', reason='Not Found', status_code=404): |
|
469 |
with tests.utils.mock_url(url=url, response='not a json content', reason='Not Found', status_code=404):
|
|
470 | 470 |
resp = app.get(endpoint) |
471 | 471 |
assert resp.json['err'] |
472 | 472 |
assert 'OpenDataSoft error: 404 Client Error: Not Found' in resp.json['err_desc'] |
473 | 473 | |
474 | 474 |
# bad JSON response |
475 |
with utils.mock_url(url=url, response='not a json content', status_code=200): |
|
475 |
with tests.utils.mock_url(url=url, response='not a json content', status_code=200):
|
|
476 | 476 |
resp = app.get(endpoint) |
477 | 477 |
assert resp.json['err'] |
478 | 478 |
assert resp.json['err_desc'] == 'OpenDataSoft error: bad JSON response' |
tests/test_opengis.py | ||
---|---|---|
2 | 2 | |
3 | 3 |
import mock |
4 | 4 |
import pytest |
5 |
import utils |
|
6 | 5 |
from django.contrib.auth.models import User |
7 | 6 |
from django.core.management import call_command |
8 |
from test_manager import login |
|
9 | 7 | |
8 |
import tests.utils |
|
10 | 9 |
from passerelle.apps.opengis.models import FeatureCache, OpenGIS, Query |
11 | 10 |
from passerelle.base.models import Job |
12 | 11 |
from passerelle.utils import import_site |
12 |
from tests.test_manager import login |
|
13 | 13 | |
14 | 14 |
pytestmark = pytest.mark.django_db |
15 | 15 | |
... | ... | |
357 | 357 | |
358 | 358 |
@pytest.fixture |
359 | 359 |
def connector(): |
360 |
return utils.setup_access_rights( |
|
360 |
return tests.utils.setup_access_rights(
|
|
361 | 361 |
OpenGIS.objects.create( |
362 | 362 |
slug='test', wms_service_url='http://example.net/wms', wfs_service_url='http://example.net/wfs' |
363 | 363 |
) |
... | ... | |
382 | 382 |
def geoserver_responses(url, **kwargs): |
383 | 383 |
if kwargs['params'].get('request') == 'GetCapabilities': |
384 | 384 |
assert kwargs['params'].get('service') |
385 |
return utils.FakedResponse(status_code=200, content=FAKE_SERVICE_CAPABILITIES) |
|
386 |
return utils.FakedResponse(status_code=200, content=FAKE_FEATURES_JSON) |
|
385 |
return tests.utils.FakedResponse(status_code=200, content=FAKE_SERVICE_CAPABILITIES)
|
|
386 |
return tests.utils.FakedResponse(status_code=200, content=FAKE_FEATURES_JSON)
|
|
387 | 387 | |
388 | 388 | |
389 | 389 |
def geoserver_responses_v1_0_0(url, **kwargs): |
390 | 390 |
if kwargs['params'].get('request') == 'GetCapabilities': |
391 | 391 |
assert kwargs['params'].get('service') |
392 |
return utils.FakedResponse(status_code=200, content=FAKE_SERVICE_CAPABILITIES_V1_0_0) |
|
393 |
return utils.FakedResponse(status_code=200, content=FAKE_FEATURES_JSON) |
|
392 |
return tests.utils.FakedResponse(status_code=200, content=FAKE_SERVICE_CAPABILITIES_V1_0_0)
|
|
393 |
return tests.utils.FakedResponse(status_code=200, content=FAKE_FEATURES_JSON)
|
|
394 | 394 | |
395 | 395 | |
396 | 396 |
def geoserver_responses_errors(url, **kwargs): |
397 | 397 |
if kwargs['params'].get('request') == 'GetCapabilities': |
398 |
return utils.FakedResponse(status_code=200, content=FAKE_SERVICE_CAPABILITIES) |
|
399 |
return utils.FakedResponse(status_code=200, content=FAKE_ERROR) |
|
398 |
return tests.utils.FakedResponse(status_code=200, content=FAKE_SERVICE_CAPABILITIES)
|
|
399 |
return tests.utils.FakedResponse(status_code=200, content=FAKE_ERROR)
|
|
400 | 400 | |
401 | 401 | |
402 | 402 |
def geoserver_responses_errors_unparsable(url, **kwargs): |
403 | 403 |
if kwargs['params'].get('request') == 'GetCapabilities': |
404 |
return utils.FakedResponse(status_code=200, content=FAKE_SERVICE_CAPABILITIES) |
|
405 |
return utils.FakedResponse(status_code=200, content=FAKE_ERROR[:10]) |
|
404 |
return tests.utils.FakedResponse(status_code=200, content=FAKE_SERVICE_CAPABILITIES)
|
|
405 |
return tests.utils.FakedResponse(status_code=200, content=FAKE_ERROR[:10])
|
|
406 | 406 | |
407 | 407 | |
408 | 408 |
def geoserver_geolocated_responses(url, **kwargs): |
409 | 409 |
if kwargs['params'].get('request') == 'GetCapabilities': |
410 |
return utils.FakedResponse(status_code=200, content=FAKE_SERVICE_CAPABILITIES) |
|
411 |
return utils.FakedResponse(status_code=200, content=FAKE_GEOLOCATED_FEATURE) |
|
410 |
return tests.utils.FakedResponse(status_code=200, content=FAKE_SERVICE_CAPABILITIES)
|
|
411 |
return tests.utils.FakedResponse(status_code=200, content=FAKE_GEOLOCATED_FEATURE)
|
|
412 | 412 | |
413 | 413 | |
414 | 414 |
def geoserver_circle_responses(url, **kwargs): |
415 | 415 |
if kwargs['params'].get('request') == 'GetCapabilities': |
416 |
return utils.FakedResponse(status_code=200, content=FAKE_SERVICE_CAPABILITIES) |
|
417 |
return utils.FakedResponse(status_code=200, content=json.dumps(FAKE_GEOLOCATED_FEATURE_CIRCLE)) |
|
416 |
return tests.utils.FakedResponse(status_code=200, content=FAKE_SERVICE_CAPABILITIES)
|
|
417 |
return tests.utils.FakedResponse(status_code=200, content=json.dumps(FAKE_GEOLOCATED_FEATURE_CIRCLE))
|
|
418 | 418 | |
419 | 419 | |
420 | 420 |
@mock.patch('passerelle.utils.Request.get') |
421 | 421 |
def test_feature_info(mocked_get, app, connector): |
422 |
endpoint = utils.generic_endpoint_url('opengis', 'feature_info', slug=connector.slug) |
|
422 |
endpoint = tests.utils.generic_endpoint_url('opengis', 'feature_info', slug=connector.slug)
|
|
423 | 423 |
assert endpoint == '/opengis/test/feature_info' |
424 |
mocked_get.return_value = utils.FakedResponse(content=FAKE_FEATURE_INFO, status_code=200) |
|
424 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKE_FEATURE_INFO, status_code=200)
|
|
425 | 425 |
resp = app.get(endpoint, params={'lat': '45.796890', 'lon': '4.784140'}) |
426 | 426 |
assert ( |
427 | 427 |
mocked_get.call_args[1]['params']['bbox'] |
... | ... | |
450 | 450 |
], |
451 | 451 |
) |
452 | 452 |
def test_feature_info_bad_request(mocked_get, app, connector, lat, lon): |
453 |
endpoint = utils.generic_endpoint_url('opengis', 'feature_info', slug=connector.slug) |
|
453 |
endpoint = tests.utils.generic_endpoint_url('opengis', 'feature_info', slug=connector.slug)
|
|
454 | 454 |
assert endpoint == '/opengis/test/feature_info' |
455 |
mocked_get.return_value = utils.FakedResponse(content=FAKE_FEATURE_INFO, status_code=200) |
|
455 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKE_FEATURE_INFO, status_code=200)
|
|
456 | 456 |
resp = app.get(endpoint, params={'lat': lat, 'lon': lon}) |
457 | 457 |
assert resp.json['err'] == 1 |
458 | 458 |
assert resp.json['err_desc'] == 'Bad coordinates format' |
... | ... | |
460 | 460 | |
461 | 461 |
@mock.patch('passerelle.utils.Request.get') |
462 | 462 |
def test_tile(mocked_get, app, connector): |
463 |
endpoint = utils.generic_endpoint_url('opengis', 'tile', slug=connector.slug) |
|
463 |
endpoint = tests.utils.generic_endpoint_url('opengis', 'tile', slug=connector.slug)
|
|
464 | 464 |
assert endpoint == '/opengis/test/tile' |
465 |
mocked_get.return_value = utils.FakedResponse(content=b'\x89PNG\r\n\x1a\n\x00\x00...', status_code=200) |
|
465 |
mocked_get.return_value = tests.utils.FakedResponse( |
|
466 |
content=b'\x89PNG\r\n\x1a\n\x00\x00...', status_code=200 |
|
467 |
) |
|
466 | 468 |
resp = app.get(endpoint + '/16/33650/23378.png') |
467 | 469 |
assert mocked_get.call_args[1]['params']['crs'] == 'EPSG:3857' |
468 | 470 |
assert ( |
... | ... | |
481 | 483 |
def test_get_feature_with_no_wfs_url(mocked_get, app, connector): |
482 | 484 |
connector.wfs_service_url = '' |
483 | 485 |
connector.save() |
484 |
endpoint = utils.generic_endpoint_url('opengis', 'features', slug=connector.slug) |
|
486 |
endpoint = tests.utils.generic_endpoint_url('opengis', 'features', slug=connector.slug)
|
|
485 | 487 |
assert endpoint == '/opengis/test/features' |
486 | 488 |
mocked_get.side_effect = geoserver_responses |
487 | 489 |
resp = app.get(endpoint, params={'type_names': 'ref_metro_limites_communales', 'property_name': 'nom'}) |
... | ... | |
492 | 494 | |
493 | 495 |
@mock.patch('passerelle.utils.Request.get') |
494 | 496 |
def test_get_feature(mocked_get, app, connector): |
495 |
endpoint = utils.generic_endpoint_url('opengis', 'features', slug=connector.slug) |
|
497 |
endpoint = tests.utils.generic_endpoint_url('opengis', 'features', slug=connector.slug)
|
|
496 | 498 |
assert endpoint == '/opengis/test/features' |
497 | 499 |
mocked_get.side_effect = geoserver_responses |
498 | 500 |
resp = app.get(endpoint, params={'type_names': 'ref_metro_limites_communales', 'property_name': 'nom'}) |
... | ... | |
509 | 511 | |
510 | 512 |
@mock.patch('passerelle.utils.Request.get') |
511 | 513 |
def test_get_filtered_feature(mocked_get, app, connector): |
512 |
endpoint = utils.generic_endpoint_url('opengis', 'features', slug=connector.slug) |
|
514 |
endpoint = tests.utils.generic_endpoint_url('opengis', 'features', slug=connector.slug)
|
|
513 | 515 |
mocked_get.side_effect = geoserver_responses |
514 | 516 |
app.get( |
515 | 517 |
endpoint, |
... | ... | |
524 | 526 | |
525 | 527 |
@mock.patch('passerelle.utils.Request.get') |
526 | 528 |
def test_get_filtered_by_property_feature(mocked_get, app, connector): |
527 |
endpoint = utils.generic_endpoint_url('opengis', 'features', slug=connector.slug) |
|
529 |
endpoint = tests.utils.generic_endpoint_url('opengis', 'features', slug=connector.slug)
|
|
528 | 530 |
mocked_get.side_effect = geoserver_responses |
529 | 531 |
params = { |
530 | 532 |
'type_names': 'ref_metro_limites_communales', |
... | ... | |
550 | 552 | |
551 | 553 |
@mock.patch('passerelle.utils.Request.get') |
552 | 554 |
def test_get_feature_error(mocked_get, app, connector): |
553 |
endpoint = utils.generic_endpoint_url('opengis', 'features', slug=connector.slug) |
|
555 |
endpoint = tests.utils.generic_endpoint_url('opengis', 'features', slug=connector.slug)
|
|
554 | 556 |
assert endpoint == '/opengis/test/features' |
555 | 557 |
mocked_get.side_effect = geoserver_responses_errors |
556 | 558 |
resp = app.get(endpoint, params={'type_names': 'ref_metro_limites_communales', 'property_name': 'nom'}) |
... | ... | |
568 | 570 | |
569 | 571 |
@mock.patch('passerelle.utils.Request.get') |
570 | 572 |
def test_get_feature_error2(mocked_get, app, connector): |
571 |
endpoint = utils.generic_endpoint_url('opengis', 'features', slug=connector.slug) |
|
573 |
endpoint = tests.utils.generic_endpoint_url('opengis', 'features', slug=connector.slug)
|
|
572 | 574 |
assert endpoint == '/opengis/test/features' |
573 | 575 |
mocked_get.side_effect = geoserver_responses_errors_unparsable |
574 | 576 |
resp = app.get(endpoint, params={'type_names': 'ref_metro_limites_communales', 'property_name': 'nom'}) |
... | ... | |
590 | 592 |
) |
591 | 593 |
@mock.patch('passerelle.utils.Request.get') |
592 | 594 |
def test_typename_parameter_upgrade(mocked_get, server_responses, version, typename_label, app, connector): |
593 |
endpoint = utils.generic_endpoint_url('opengis', 'features', slug=connector.slug) |
|
595 |
endpoint = tests.utils.generic_endpoint_url('opengis', 'features', slug=connector.slug)
|
|
594 | 596 |
assert endpoint == '/opengis/test/features' |
595 | 597 |
mocked_get.side_effect = server_responses |
596 | 598 |
resp = app.get(endpoint, params={'type_names': '...', 'property_name': '...'}) |
... | ... | |
604 | 606 |
connector.search_radius = 45 |
605 | 607 |
connector.projection = 'EPSG:3945' |
606 | 608 |
connector.save() |
607 |
endpoint = utils.generic_endpoint_url('opengis', 'reverse', slug=connector.slug) |
|
609 |
endpoint = tests.utils.generic_endpoint_url('opengis', 'reverse', slug=connector.slug)
|
|
608 | 610 |
assert endpoint == '/opengis/test/reverse' |
609 | 611 | |
610 | 612 |
def side_effect(url, **kwargs): |
611 | 613 |
if kwargs['params'].get('request') == 'GetCapabilities': |
612 |
return utils.FakedResponse(status_code=200, content=FAKE_SERVICE_CAPABILITIES) |
|
614 |
return tests.utils.FakedResponse(status_code=200, content=FAKE_SERVICE_CAPABILITIES)
|
|
613 | 615 |
return mock.DEFAULT |
614 | 616 | |
615 | 617 |
mocked_get.side_effect = side_effect |
616 |
mocked_get.return_value = utils.FakedResponse(content=FAKE_GEOLOCATED_FEATURE, status_code=200) |
|
618 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKE_GEOLOCATED_FEATURE, status_code=200)
|
|
617 | 619 |
resp = app.get(endpoint, params={'lat': '45.1893469606986', 'lon': '5.72462060798'}) |
618 | 620 |
assert ( |
619 | 621 |
mocked_get.call_args[1]['params']['cql_filter'] |
... | ... | |
640 | 642 |
connector.projection = 'EPSG:4326' |
641 | 643 |
connector.search_radius = 10 |
642 | 644 |
connector.save() |
643 |
mocked_get.return_value = utils.FakedResponse(content='{"features": []}', status_code=200) |
|
645 |
mocked_get.return_value = tests.utils.FakedResponse(content='{"features": []}', status_code=200)
|
|
644 | 646 |
resp = app.get(endpoint, params={'lat': '45.183784', 'lon': '5.714885'}) |
645 | 647 |
assert ( |
646 | 648 |
mocked_get.call_args[1]['params']['cql_filter'] |
... | ... | |
649 | 651 |
assert resp.json['err'] == 1 |
650 | 652 |
assert resp.json['err_desc'] == 'Unable to geocode' |
651 | 653 | |
652 |
mocked_get.return_value = utils.FakedResponse(status_code=404, content='{}', ok=False) |
|
654 |
mocked_get.return_value = tests.utils.FakedResponse(status_code=404, content='{}', ok=False)
|
|
653 | 655 |
resp = app.get(endpoint, params={'lat': '45.183784', 'lon': '5.714885'}) |
654 | 656 |
assert resp.json['err'] == 1 |
655 | 657 |
assert resp.json['err_desc'] == 'Webservice returned status code 404' |
... | ... | |
708 | 710 | |
709 | 711 |
@mock.patch('passerelle.utils.Request.get') |
710 | 712 |
def test_opengis_query_q_endpoint(mocked_get, app, connector, query): |
711 |
endpoint = utils.generic_endpoint_url('opengis', 'query/test_query/', slug=connector.slug) |
|
713 |
endpoint = tests.utils.generic_endpoint_url('opengis', 'query/test_query/', slug=connector.slug)
|
|
712 | 714 |
assert endpoint == '/opengis/test/query/test_query/' |
713 | 715 |
mocked_get.side_effect = geoserver_geolocated_responses |
714 | 716 |
query.update_cache() |
... | ... | |
737 | 739 | |
738 | 740 |
def new_response(url, **kwargs): |
739 | 741 |
if kwargs['params'].get('request') == 'GetCapabilities': |
740 |
return utils.FakedResponse(status_code=200, content=FAKE_SERVICE_CAPABILITIES) |
|
741 |
return utils.FakedResponse( |
|
742 |
return tests.utils.FakedResponse(status_code=200, content=FAKE_SERVICE_CAPABILITIES)
|
|
743 |
return tests.utils.FakedResponse(
|
|
742 | 744 |
content='{"features": [{"properties": {}, "geometry": {"coordinates": [1, 1], "type": "Point"}}]}', |
743 | 745 |
status_code=200, |
744 | 746 |
) |
... | ... | |
750 | 752 | |
751 | 753 |
@mock.patch('passerelle.utils.Request.get') |
752 | 754 |
def test_opengis_query_q_endpoint_cache_empty(mocked_get, app, connector, query): |
753 |
endpoint = utils.generic_endpoint_url('opengis', 'query/test_query/', slug=connector.slug) |
|
755 |
endpoint = tests.utils.generic_endpoint_url('opengis', 'query/test_query/', slug=connector.slug)
|
|
754 | 756 |
assert not FeatureCache.objects.exists() |
755 | 757 |
resp = app.get(endpoint) |
756 | 758 | |
... | ... | |
818 | 820 | |
819 | 821 |
@mock.patch('passerelle.utils.Request.get') |
820 | 822 |
def test_opengis_query_text_search(mocked_get, app, connector, query): |
821 |
endpoint = utils.generic_endpoint_url('opengis', 'query/test_query/', slug=connector.slug) |
|
823 |
endpoint = tests.utils.generic_endpoint_url('opengis', 'query/test_query/', slug=connector.slug)
|
|
822 | 824 |
mocked_get.side_effect = geoserver_geolocated_responses |
823 | 825 |
query.update_cache() |
824 | 826 | |
... | ... | |
852 | 854 | |
853 | 855 |
@mock.patch('passerelle.utils.Request.get') |
854 | 856 |
def test_opengis_query_circle_filtering(mocked_get, app, connector, query): |
855 |
endpoint = utils.generic_endpoint_url('opengis', 'query/test_query/', slug=connector.slug) |
|
857 |
endpoint = tests.utils.generic_endpoint_url('opengis', 'query/test_query/', slug=connector.slug)
|
|
856 | 858 |
mocked_get.side_effect = geoserver_circle_responses |
857 | 859 |
query.update_cache() |
858 | 860 | |
... | ... | |
874 | 876 | |
875 | 877 |
@mock.patch('passerelle.utils.Request.get') |
876 | 878 |
def test_opengis_query_data_filter(mocked_get, app, connector, query): |
877 |
endpoint = utils.generic_endpoint_url('opengis', 'query/test_query/', slug=connector.slug) |
|
879 |
endpoint = tests.utils.generic_endpoint_url('opengis', 'query/test_query/', slug=connector.slug)
|
|
878 | 880 |
mocked_get.side_effect = geoserver_geolocated_responses |
879 | 881 |
query.update_cache() |
880 | 882 |
tests/test_phonecalls.py | ||
---|---|---|
1 | 1 |
import re |
2 | 2 | |
3 | 3 |
import pytest |
4 |
import utils |
|
5 | 4 |
from django.contrib.contenttypes.models import ContentType |
6 | 5 |
from django.utils.timezone import now, timedelta |
7 | 6 | |
7 |
import tests.utils |
|
8 | 8 |
from passerelle.apps.phonecalls.models import Call, PhoneCalls |
9 | 9 |
from passerelle.base.models import AccessRight, ApiUser |
10 | 10 | |
... | ... | |
21 | 21 | |
22 | 22 | |
23 | 23 |
def test_phonecalls_start_stop(app, phonecalls): |
24 |
start_endpoint = utils.generic_endpoint_url('phonecalls', 'call-start', slug=phonecalls.slug) |
|
24 |
start_endpoint = tests.utils.generic_endpoint_url('phonecalls', 'call-start', slug=phonecalls.slug)
|
|
25 | 25 |
assert start_endpoint == '/phonecalls/test/call-start' |
26 |
stop_endpoint = utils.generic_endpoint_url('phonecalls', 'call-stop', slug=phonecalls.slug) |
|
26 |
stop_endpoint = tests.utils.generic_endpoint_url('phonecalls', 'call-stop', slug=phonecalls.slug)
|
|
27 | 27 |
assert stop_endpoint == '/phonecalls/test/call-stop' |
28 |
calls_endpoint = utils.generic_endpoint_url('phonecalls', 'calls', slug=phonecalls.slug) |
|
28 |
calls_endpoint = tests.utils.generic_endpoint_url('phonecalls', 'calls', slug=phonecalls.slug)
|
|
29 | 29 |
assert calls_endpoint == '/phonecalls/test/calls' |
30 | 30 | |
31 | 31 |
resp = app.get(start_endpoint, status=403) |
... | ... | |
212 | 212 |
phonecalls.save() |
213 | 213 | |
214 | 214 |
assert Call.objects.count() == 0 |
215 |
start_endpoint = utils.generic_endpoint_url('phonecalls', 'call-start', slug=phonecalls.slug) |
|
215 |
start_endpoint = tests.utils.generic_endpoint_url('phonecalls', 'call-start', slug=phonecalls.slug)
|
|
216 | 216 |
resp = app.get( |
217 | 217 |
start_endpoint, |
218 | 218 |
status=302, |
... | ... | |
227 | 227 |
phonecalls.save() |
228 | 228 | |
229 | 229 |
assert Call.objects.count() == 0 |
230 |
start_endpoint = utils.generic_endpoint_url('phonecalls', 'call-start', slug=phonecalls.slug) |
|
230 |
start_endpoint = tests.utils.generic_endpoint_url('phonecalls', 'call-start', slug=phonecalls.slug)
|
|
231 | 231 |
resp = app.get( |
232 | 232 |
start_endpoint, |
233 | 233 |
status=200, |
... | ... | |
242 | 242 |
phonecalls.redirect_url = 'https://portail-agent.publik/' |
243 | 243 |
phonecalls.save() |
244 | 244 | |
245 |
start_endpoint = utils.generic_endpoint_url('phonecalls', 'call-start', slug=phonecalls.slug) |
|
245 |
start_endpoint = tests.utils.generic_endpoint_url('phonecalls', 'call-start', slug=phonecalls.slug)
|
|
246 | 246 |
resp = app.get( |
247 | 247 |
start_endpoint, |
248 | 248 |
status=302, |
tests/test_photon.py | ||
---|---|---|
19 | 19 | |
20 | 20 |
import mock |
21 | 21 |
import pytest |
22 |
import utils |
|
23 | 22 |
from django.core.management import call_command |
24 | 23 |
from httmock import HTTMock, remember_called, response, urlmatch |
25 | 24 |
from requests.exceptions import ConnectionError, HTTPError |
26 | 25 | |
26 |
import tests.utils |
|
27 | 27 |
from passerelle.apps.photon.models import AddressCacheModel, Photon |
28 | 28 | |
29 | 29 |
CONTENT = { |
... | ... | |
93 | 93 | |
94 | 94 |
@pytest.fixture |
95 | 95 |
def photon(db): |
96 |
return utils.setup_access_rights( |
|
96 |
return tests.utils.setup_access_rights(
|
|
97 | 97 |
Photon.objects.create( |
98 | 98 |
slug='test', |
99 | 99 |
service_url='http://example.net/path/', |
... | ... | |
103 | 103 | |
104 | 104 |
@mock.patch('passerelle.utils.Request.get') |
105 | 105 |
def test_photon_search(mocked_get, app, photon): |
106 |
endpoint = utils.generic_endpoint_url('photon', 'search', slug=photon.slug) |
|
107 |
mocked_get.return_value = utils.FakedResponse(content=FAKED_CONTENT, status_code=200) |
|
106 |
endpoint = tests.utils.generic_endpoint_url('photon', 'search', slug=photon.slug)
|
|
107 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKED_CONTENT, status_code=200)
|
|
108 | 108 |
resp = app.get(endpoint, params={'q': 'plop'}, status=200) |
109 | 109 |
assert mocked_get.call_args[0][0].startswith('http://example.net/path/api/?') |
110 | 110 |
data = resp.json[0] |
... | ... | |
169 | 169 |
def raise_for_status(): |
170 | 170 |
raise HTTPError("400 Client Error: Bad Request for url: xxx") |
171 | 171 | |
172 |
response = utils.FakedResponse(content=json.dumps({'title': 'error'}), status_code=400) |
|
172 |
response = tests.utils.FakedResponse(content=json.dumps({'title': 'error'}), status_code=400)
|
|
173 | 173 |
response.raise_for_status = raise_for_status |
174 | 174 |
mocked_get.return_value = response |
175 | 175 |
resp = app.get('/photon/%s/search' % photon.slug, params={'q': 'plop'}, status=200) |
... | ... | |
183 | 183 | |
184 | 184 |
@mock.patch('passerelle.utils.Request.get') |
185 | 185 |
def test_photon_reverse_path(mocked_get, app, photon): |
186 |
mocked_get.return_value = utils.FakedResponse(content=json.dumps({'features': []}), status_code=200) |
|
186 |
mocked_get.return_value = tests.utils.FakedResponse(content=json.dumps({'features': []}), status_code=200)
|
|
187 | 187 |
app.get('/photon/%s/reverse?lon=4.8522272&lat=45.7587414' % photon.slug) |
188 | 188 |
assert mocked_get.call_args[0][0].startswith('http://example.net/path/reverse/?') |
189 | 189 | |
... | ... | |
199 | 199 | |
200 | 200 |
@mock.patch('passerelle.utils.Request.get') |
201 | 201 |
def test_photon_addresses(mocked_get, app, photon): |
202 |
endpoint = utils.generic_endpoint_url('photon', 'addresses', slug=photon.slug) |
|
202 |
endpoint = tests.utils.generic_endpoint_url('photon', 'addresses', slug=photon.slug)
|
|
203 | 203 |
assert endpoint == '/photon/test/addresses' |
204 |
mocked_get.return_value = utils.FakedResponse(content=FAKED_CONTENT, status_code=200) |
|
204 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKED_CONTENT, status_code=200)
|
|
205 | 205 |
resp = app.get(endpoint, params={'q': 'plop'}, status=200) |
206 | 206 |
data = resp.json['data'][0] |
207 | 207 |
assert data['lat'] == '45.7587414' |
... | ... | |
273 | 273 | |
274 | 274 |
@mock.patch('passerelle.utils.Request.get') |
275 | 275 |
def test_photon_addresses_data_change(mocked_get, app, photon): |
276 |
endpoint = utils.generic_endpoint_url('photon', 'addresses', slug=photon.slug) |
|
277 |
mocked_get.return_value = utils.FakedResponse(content=FAKED_CONTENT, status_code=200) |
|
276 |
endpoint = tests.utils.generic_endpoint_url('photon', 'addresses', slug=photon.slug)
|
|
277 |
mocked_get.return_value = tests.utils.FakedResponse(content=FAKED_CONTENT, status_code=200)
|
|
278 | 278 | |
279 | 279 |
# one user selects an address |
280 | 280 |
resp = app.get(endpoint, params={'q': 'plop'}, status=200) |
... | ... | |
284 | 284 |
# another requests the same while upstream data has been updated |
285 | 285 |
new_content = json.loads(FAKED_CONTENT) |
286 | 286 |
new_content['features'][0]['properties']['housenumber'] = 'changed' |
287 |
mocked_get.return_value = utils.FakedResponse(content=json.dumps(new_content), status_code=200) |
|
287 |
mocked_get.return_value = tests.utils.FakedResponse(content=json.dumps(new_content), status_code=200)
|
|
288 | 288 |
resp = app.get(endpoint, params={'q': 'plop'}, status=200) |
289 | 289 | |
290 | 290 |
# first user saves the form, data should not have changed |
tests/test_plone_restapi.py | ||
---|---|---|
19 | 19 |
import os |
20 | 20 | |
21 | 21 |
import pytest |
22 |
import utils |
|
23 | 22 |
from requests.exceptions import ConnectionError |
24 |
from test_manager import login |
|
25 | 23 | |
24 |
import tests.utils |
|
26 | 25 |
from passerelle.apps.plone_restapi.models import PloneRestApi, Query |
27 | 26 |
from passerelle.utils import import_site |
28 | 27 |
from passerelle.utils.jsonresponse import APIError |
28 |
from tests.test_manager import login |
|
29 | 29 | |
30 | 30 |
pytestmark = pytest.mark.django_db |
31 | 31 | |
... | ... | |
51 | 51 | |
52 | 52 |
@pytest.fixture |
53 | 53 |
def connector(): |
54 |
return utils.setup_access_rights( |
|
54 |
return tests.utils.setup_access_rights(
|
|
55 | 55 |
PloneRestApi.objects.create( |
56 | 56 |
slug='my_connector', |
57 | 57 |
service_url='http://www.example.net', |
... | ... | |
66 | 66 | |
67 | 67 |
@pytest.fixture |
68 | 68 |
def token(connector): |
69 |
with utils.mock_url(url=connector.token_ws_url, response=TOKEN_RESPONSE) as mocked: |
|
69 |
with tests.utils.mock_url(url=connector.token_ws_url, response=TOKEN_RESPONSE) as mocked:
|
|
70 | 70 |
yield mocked |
71 | 71 | |
72 | 72 | |
... | ... | |
210 | 210 | |
211 | 211 |
def test_get_token(app, connector): |
212 | 212 |
with pytest.raises(APIError): |
213 |
with utils.mock_url(url=connector.token_ws_url, response=TOKEN_ERROR_RESPONSE, status_code=404): |
|
213 |
with tests.utils.mock_url(url=connector.token_ws_url, response=TOKEN_ERROR_RESPONSE, status_code=404):
|
|
214 | 214 |
connector.get_token() |
215 |
with utils.mock_url(url=connector.token_ws_url, response=TOKEN_RESPONSE) as mocked: |
|
215 |
with tests.utils.mock_url(url=connector.token_ws_url, response=TOKEN_RESPONSE) as mocked:
|
|
216 | 216 |
result = connector.get_token() |
217 | 217 |
assert mocked.handlers[0].call['count'] == 1 |
218 | 218 |
assert 'secret' in mocked.handlers[0].call['requests'][0].body |
... | ... | |
227 | 227 | |
228 | 228 |
def test_check_status(app, connector): |
229 | 229 |
url = connector.service_url + '/@types' |
230 |
with utils.mock_url(url=connector.token_ws_url, response=TOKEN_RESPONSE): |
|
231 |
with utils.mock_url(url=url, response={}): |
|
230 |
with tests.utils.mock_url(url=connector.token_ws_url, response=TOKEN_RESPONSE):
|
|
231 |
with tests.utils.mock_url(url=url, response={}):
|
|
232 | 232 |
connector.check_status() |
233 | 233 | |
234 | 234 |
# idp not responding |
235 |
with utils.mock_url(url=connector.token_ws_url, response={}, status_code=503): |
|
235 |
with tests.utils.mock_url(url=connector.token_ws_url, response={}, status_code=503):
|
|
236 | 236 |
with pytest.raises(APIError): |
237 | 237 |
connector.check_status() |
238 | 238 | |
239 | 239 |
# plone not responding |
240 |
with utils.mock_url(url=connector.token_ws_url, response=TOKEN_RESPONSE): |
|
241 |
with utils.mock_url(url=url, response={}, status_code=503): |
|
240 |
with tests.utils.mock_url(url=connector.token_ws_url, response=TOKEN_RESPONSE):
|
|
241 |
with tests.utils.mock_url(url=url, response={}, status_code=503):
|
|
242 | 242 |
with pytest.raises(APIError): |
243 | 243 |
connector.check_status() |
244 | 244 | |
245 | 245 |
# without idp |
246 | 246 |
connector.token_ws_url = '' |
247 | 247 |
connector.save() |
248 |
with utils.mock_url(url=url, response={}): |
|
248 |
with tests.utils.mock_url(url=url, response={}):
|
|
249 | 249 |
connector.check_status() |
250 | 250 | |
251 | 251 |
# plone not responding |
252 |
with utils.mock_url(url=url, response={}, status_code=503): |
|
252 |
with tests.utils.mock_url(url=url, response={}, status_code=503):
|
|
253 | 253 |
with pytest.raises(APIError): |
254 | 254 |
connector.check_status() |
255 | 255 | |
256 | 256 | |
257 | 257 |
def test_fetch(app, connector, token): |
258 |
endpoint = utils.generic_endpoint_url('plone-restapi', 'fetch', slug=connector.slug) |
|
258 |
endpoint = tests.utils.generic_endpoint_url('plone-restapi', 'fetch', slug=connector.slug)
|
|
259 | 259 |
assert endpoint == '/plone-restapi/my_connector/fetch' |
260 | 260 |
url = connector.service_url + '/braine-l-alleud/dccd85d12cf54b6899dff41e5a56ee7f' |
261 | 261 |
params = { |
... | ... | |
263 | 263 |
'uri': 'braine-l-alleud', |
264 | 264 |
'text_template': '{{ title }} ({{ topics.0.title }})', |
265 | 265 |
} |
266 |
with utils.mock_url(url=url, response=json_get_data('fetch')): |
|
266 |
with tests.utils.mock_url(url=url, response=json_get_data('fetch')):
|
|
267 | 267 |
resp = app.get(endpoint, params=params) |
268 | 268 |
assert not resp.json['err'] |
269 | 269 |
assert resp.json['data']['id'] == 'dccd85d12cf54b6899dff41e5a56ee7f' |
... | ... | |
276 | 276 |
connector.basic_auth_username = 'jsmith' |
277 | 277 |
connector.basic_auth_password = 'secret2' |
278 | 278 |
connector.save() |
279 |
endpoint = utils.generic_endpoint_url('plone-restapi', 'fetch', slug=connector.slug) |
|
279 |
endpoint = tests.utils.generic_endpoint_url('plone-restapi', 'fetch', slug=connector.slug)
|
|
280 | 280 |
assert endpoint == '/plone-restapi/my_connector/fetch' |
281 | 281 |
url = connector.service_url + '/braine-l-alleud/dccd85d12cf54b6899dff41e5a56ee7f' |
282 | 282 |
params = { |
... | ... | |
284 | 284 |
'uri': 'braine-l-alleud', |
285 | 285 |
'text_template': '{{ title }} ({{ topics.0.title }})', |
286 | 286 |
} |
287 |
with utils.mock_url(url=url, response=json_get_data('fetch')) as mocked_get: |
|
287 |
with tests.utils.mock_url(url=url, response=json_get_data('fetch')) as mocked_get:
|
|
288 | 288 |
resp = app.get(endpoint, params=params) |
289 | 289 |
assert mocked_get.handlers[0].call['count'] == 1 |
290 | 290 |
assert 'Basic' in mocked_get.handlers[0].call['requests'][0].headers['Authorization'] |
... | ... | |
297 | 297 |
def test_request_anonymously(app, connector, token): |
298 | 298 |
connector.token_ws_url = '' |
299 | 299 |
connector.save() |
300 |
endpoint = utils.generic_endpoint_url('plone-restapi', 'fetch', slug=connector.slug) |
|
300 |
endpoint = tests.utils.generic_endpoint_url('plone-restapi', 'fetch', slug=connector.slug)
|
|
301 | 301 |
assert endpoint == '/plone-restapi/my_connector/fetch' |
302 | 302 |
url = connector.service_url + '/braine-l-alleud/dccd85d12cf54b6899dff41e5a56ee7f' |
303 | 303 |
params = { |
... | ... | |
305 | 305 |
'uri': 'braine-l-alleud', |
306 | 306 |
'text_template': '{{ title }} ({{ topics.0.title }})', |
307 | 307 |
} |
308 |
with utils.mock_url(url=url, response=json_get_data('fetch')): |
|
308 |
with tests.utils.mock_url(url=url, response=json_get_data('fetch')):
|
|
309 | 309 |
resp = app.get(endpoint, params=params) |
310 | 310 |
assert not resp.json['err'] |
311 | 311 |
assert resp.json['data']['id'] == 'dccd85d12cf54b6899dff41e5a56ee7f' |
... | ... | |
322 | 322 |
], |
323 | 323 |
) |
324 | 324 |
def test_request_error(app, connector, token, exception, status_code, response, err_desc): |
325 |
endpoint = utils.generic_endpoint_url('plone-restapi', 'fetch', slug=connector.slug) |
|
325 |
endpoint = tests.utils.generic_endpoint_url('plone-restapi', 'fetch', slug=connector.slug)
|
|
326 | 326 |
assert endpoint == '/plone-restapi/my_connector/fetch' |
327 | 327 |
url = connector.service_url + '/braine-l-alleud/plop' |
328 | 328 |
params = { |
... | ... | |
330 | 330 |
'uri': 'braine-l-alleud', |
331 | 331 |
'text_template': '{{ title }} ({{ PLONE_type }})', |
332 | 332 |
} |
333 |
with utils.mock_url(url=url, response=response, status_code=status_code, exception=exception): |
|
333 |
with tests.utils.mock_url(url=url, response=response, status_code=status_code, exception=exception):
|
|
334 | 334 |
resp = app.get(endpoint, params=params) |
335 | 335 |
assert resp.json['err'] |
336 | 336 |
assert err_desc in resp.json['err_desc'] |
337 | 337 | |
338 | 338 | |
339 | 339 |
def test_get_content_types(app, connector, token): |
340 |
endpoint = utils.generic_endpoint_url('plone-restapi', 'get_content_types', slug=connector.slug) |
|
340 |
endpoint = tests.utils.generic_endpoint_url('plone-restapi', 'get_content_types', slug=connector.slug)
|
|
341 | 341 |
assert endpoint == '/plone-restapi/my_connector/get_content_types' |
342 | 342 |
url = connector.service_url + '//@types' |
343 |
with utils.mock_url(url=url, response=json_get_data('get_content_types')): |
|
343 |
with tests.utils.mock_url(url=url, response=json_get_data('get_content_types')):
|
|
344 | 344 |
resp = app.get(endpoint) |
345 | 345 |
assert not resp.json['err'] |
346 | 346 |
assert len(resp.json['data']) == 10 |
... | ... | |
348 | 348 |
assert resp.json['data'][2]['text'] == 'Contact' |
349 | 349 | |
350 | 350 |
url = connector.service_url + '/belleville/citoyens/@types' |
351 |
with utils.mock_url(url=url, response=json_get_data('get_content_types')): |
|
351 |
with tests.utils.mock_url(url=url, response=json_get_data('get_content_types')):
|
|
352 | 352 |
resp = app.get(endpoint + '?uri=belleville/citoyens') |
353 | 353 |
assert not resp.json['err'] |
354 | 354 | |
355 | 355 | |
356 | 356 |
def test_get_content_type(app, connector, token): |
357 |
endpoint = utils.generic_endpoint_url('plone-restapi', 'get_content_type', slug=connector.slug) |
|
357 |
endpoint = tests.utils.generic_endpoint_url('plone-restapi', 'get_content_type', slug=connector.slug)
|
|
358 | 358 |
assert endpoint == '/plone-restapi/my_connector/get_content_type' |
359 | 359 |
url = connector.service_url + '/@types/imio.directory.Contact' |
360 | 360 |
params = {'id': 'imio.directory.Contact'} |
361 |
with utils.mock_url(url=url, response=json_get_data('get_content_type')): |
|
361 |
with tests.utils.mock_url(url=url, response=json_get_data('get_content_type')):
|
|
362 | 362 |
resp = app.get(endpoint, params=params) |
363 | 363 |
assert not resp.json['err'] |
364 | 364 |
assert resp.json['data']['title'] == 'Contact' |
... | ... | |
371 | 371 | |
372 | 372 | |
373 | 373 |
def test_get_field_choices(app, connector, token): |
374 |
endpoint = utils.generic_endpoint_url('plone-restapi', 'get_field_choices', slug=connector.slug) |
|
374 |
endpoint = tests.utils.generic_endpoint_url('plone-restapi', 'get_field_choices', slug=connector.slug)
|
|
375 | 375 |
assert endpoint == '/plone-restapi/my_connector/get_field_choices' |
376 | 376 |
url = connector.service_url + '/@vocabularies/imio.smartweb.vocabulary.Topics' |
377 | 377 |
params = {'id': 'imio.smartweb.vocabulary.Topics'} |
378 |
with utils.mock_url(url=url, response=json_get_data('get_field_choices')) as mocked_get: |
|
378 |
with tests.utils.mock_url(url=url, response=json_get_data('get_field_choices')) as mocked_get:
|
|
379 | 379 |
resp = app.get(endpoint, params=params) |
380 | 380 |
assert 'b_size=999999' in mocked_get.handlers[0].call['requests'][1].url |
381 | 381 |
assert not resp.json['err'] |
... | ... | |
385 | 385 | |
386 | 386 | |
387 | 387 |
def test_create(app, connector, token): |
388 |
endpoint = utils.generic_endpoint_url('plone-restapi', 'create', slug=connector.slug) |
|
388 |
endpoint = tests.utils.generic_endpoint_url('plone-restapi', 'create', slug=connector.slug)
|
|
389 | 389 |
assert endpoint == '/plone-restapi/my_connector/create' |
390 | 390 |
url = connector.service_url + '/braine-l-alleud' |
391 | 391 |
payload = { |
... | ... | |
397 | 397 |
'topics/0/token': 'tourism', |
398 | 398 |
'image': {'filename': 'foo.jpg', 'content_type': 'image/jpeg', 'content': '...'}, |
399 | 399 |
} |
400 |
with utils.mock_url(url=url, response=json_get_data('fetch'), status_code=201) as mocked: |
|
400 |
with tests.utils.mock_url(url=url, response=json_get_data('fetch'), status_code=201) as mocked:
|
|
401 | 401 |
resp = app.post_json(endpoint + '?uri=braine-l-alleud&publish=false', params=payload) |
402 | 402 |
body = json.loads(mocked.handlers[0].call['requests'][1].body) |
403 | 403 |
assert body['topics'] == [{'title': 'Tourisme', 'token': 'tourism'}] |
... | ... | |
417 | 417 | |
418 | 418 | |
419 | 419 |
def test_create_and_publish(app, connector, token): |
420 |
endpoint = utils.generic_endpoint_url('plone-restapi', 'create', slug=connector.slug) |
|
420 |
endpoint = tests.utils.generic_endpoint_url('plone-restapi', 'create', slug=connector.slug)
|
|
421 | 421 |
assert endpoint == '/plone-restapi/my_connector/create' |
422 | 422 |
url = connector.service_url + '/braine-l-alleud' |
423 | 423 |
payload = { |
... | ... | |
430 | 430 |
'image': {'filename': 'foo.jpg', 'content_type': 'image/jpeg', 'content': '...'}, |
431 | 431 |
} |
432 | 432 |
publish_url = url + '/%s/@workflow/publish' % 'dccd85d12cf54b6899dff41e5a56ee7f' |
433 |
with utils.mock_url(url=url, response=json_get_data('fetch'), status_code=201) as mocked: |
|
434 |
with utils.mock_url(url=publish_url, response=json_get_data('workflow_publish'), status_code=200): |
|
433 |
with tests.utils.mock_url(url=url, response=json_get_data('fetch'), status_code=201) as mocked: |
|
434 |
with tests.utils.mock_url( |
|
435 |
url=publish_url, response=json_get_data('workflow_publish'), status_code=200 |
|
436 |
): |
|
435 | 437 | |
436 | 438 |
resp = app.post_json(endpoint + '?uri=braine-l-alleud&publish=true', params=payload) |
437 | 439 |
body = json.loads(mocked.handlers[0].call['requests'][1].body) |
... | ... | |
452 | 454 | |
453 | 455 | |
454 | 456 |
def test_create_wrong_payload(app, connector, token): |
455 |
endpoint = utils.generic_endpoint_url('plone-restapi', 'create', slug=connector.slug) |
|
457 |
endpoint = tests.utils.generic_endpoint_url('plone-restapi', 'create', slug=connector.slug)
|
|
456 | 458 |
assert endpoint == '/plone-restapi/my_connector/create' |
457 | 459 |
url = connector.service_url + '/braine-l-alleud' |
458 | 460 |
payload = 'not json' |
... | ... | |
463 | 465 | |
464 | 466 | |
465 | 467 |
def test_update(app, connector, token): |
466 |
endpoint = utils.generic_endpoint_url('plone-restapi', 'update', slug=connector.slug) |
|
468 |
endpoint = tests.utils.generic_endpoint_url('plone-restapi', 'update', slug=connector.slug)
|
|
467 | 469 |
assert endpoint == '/plone-restapi/my_connector/update' |
468 | 470 |
url = connector.service_url + '/braine-l-alleud/dccd85d12cf54b6899dff41e5a56ee7f' |
469 | 471 |
query_string = '?uri=braine-l-alleud&uid=dccd85d12cf54b6899dff41e5a56ee7f' |
... | ... | |
472 | 474 |
'topics/0/token': 'social', |
473 | 475 |
'image': {'filename': 'foo.jpg', 'content_type': 'image/jpeg', 'content': '...'}, |
474 | 476 |
} |
475 |
with utils.mock_url(url=url, response='', status_code=204) as mocked: |
|
477 |
with tests.utils.mock_url(url=url, response='', status_code=204) as mocked:
|
|
476 | 478 |
resp = app.post_json(endpoint + query_string, params=payload) |
477 | 479 |
body = json.loads(mocked.handlers[0].call['requests'][1].body) |
478 | 480 |
assert body['topics'] == [{'token': 'social'}] |
... | ... | |
488 | 490 | |
489 | 491 | |
490 | 492 |
def test_update_wrong_payload(app, connector, token): |
491 |
endpoint = utils.generic_endpoint_url('plone-restapi', 'update', slug=connector.slug) |
|
493 |
endpoint = tests.utils.generic_endpoint_url('plone-restapi', 'update', slug=connector.slug)
|
|
492 | 494 |
assert endpoint == '/plone-restapi/my_connector/update' |
493 | 495 |
url = connector.service_url + '/braine-l-alleud/dccd85d12cf54b6899dff41e5a56ee7f' |
494 | 496 |
query_string = '?uri=braine-l-alleud&uid=dccd85d12cf54b6899dff41e5a56ee7f' |
... | ... | |
500 | 502 | |
501 | 503 | |
502 | 504 |
def test_remove(app, connector, token): |
503 |
endpoint = utils.generic_endpoint_url('plone-restapi', 'remove', slug=connector.slug) |
|
505 |
endpoint = tests.utils.generic_endpoint_url('plone-restapi', 'remove', slug=connector.slug)
|
|
504 | 506 |
assert endpoint == '/plone-restapi/my_connector/remove' |
505 | 507 |
url = connector.service_url + '/braine-l-alleud/dccd85d12cf54b6899dff41e5a56ee7f' |
506 | 508 |
query_string = '?uri=braine-l-alleud&uid=dccd85d12cf54b6899dff41e5a56ee7f' |
507 |
with utils.mock_url(url=url, response='', status_code=204): |
|
509 |
with tests.utils.mock_url(url=url, response='', status_code=204):
|
|
508 | 510 |
resp = app.delete(endpoint + query_string) |
509 | 511 |
assert resp.json['data'] == {'uid': 'dccd85d12cf54b6899dff41e5a56ee7f', 'removed': True} |
510 | 512 |
assert not resp.json['err'] |
511 | 513 | |
512 | 514 | |
513 | 515 |
def test_search(app, connector, token): |
514 |
endpoint = utils.generic_endpoint_url('plone-restapi', 'search', slug=connector.slug) |
|
516 |
endpoint = tests.utils.generic_endpoint_url('plone-restapi', 'search', slug=connector.slug)
|
|
515 | 517 |
assert endpoint == '/plone-restapi/my_connector/search' |
516 | 518 |
url = connector.service_url + '/braine-l-alleud/@search' |
517 | 519 |
params = { |
... | ... | |
522 | 524 |
'limit': 3, |
523 | 525 |
} |
524 | 526 |
qs = {} |
525 |
with utils.mock_url(url=url, response=json_get_data('q_search'), qs=qs): |
|
527 |
with tests.utils.mock_url(url=url, response=json_get_data('q_search'), qs=qs):
|
|
526 | 528 |
resp = app.get(endpoint, params=params) |
527 | 529 |
assert token.handlers[0].call['count'] == 1 |
528 | 530 |
assert qs == {'sort_on': 'UID', 'sort_order': 'descending', 'b_size': '3', 'fullobjects': 'y'} |
... | ... | |
545 | 547 | |
546 | 548 | |
547 | 549 |
def test_search_using_q(app, connector, token): |
548 |
endpoint = utils.generic_endpoint_url('plone-restapi', 'search', slug=connector.slug) |
|
550 |
endpoint = tests.utils.generic_endpoint_url('plone-restapi', 'search', slug=connector.slug)
|
|
549 | 551 |
assert endpoint == '/plone-restapi/my_connector/search' |
550 | 552 |
url = connector.service_url + '/braine-l-alleud/@search' |
551 | 553 |
params = { |
... | ... | |
557 | 559 |
'q': 'Página dentro', |
558 | 560 |
} |
559 | 561 |
qs = {} |
560 |
with utils.mock_url(url=url, response=json_get_data('q_search'), qs=qs): |
|
562 |
with tests.utils.mock_url(url=url, response=json_get_data('q_search'), qs=qs):
|
|
561 | 563 |
resp = app.get(endpoint, params=params) |
562 | 564 |
assert qs == { |
563 | 565 |
'SearchableText': 'Página dentro', |
... | ... | |
585 | 587 | |
586 | 588 | |
587 | 589 |
def test_search_using_id(app, connector, token): |
588 |
endpoint = utils.generic_endpoint_url('plone-restapi', 'search', slug=connector.slug) |
|
590 |
endpoint = tests.utils.generic_endpoint_url('plone-restapi', 'search', slug=connector.slug)
|
|
589 | 591 |
assert endpoint == '/plone-restapi/my_connector/search' |
590 | 592 |
url = connector.service_url + '/braine-l-alleud/@search' |
591 | 593 |
params = { |
... | ... | |
594 | 596 |
'id': '9fbb2afd499e465983434f974fce8404', |
595 | 597 |
} |
596 | 598 |
qs = {} |
597 |
with utils.mock_url(url=url, response=json_get_data('id_search'), qs=qs): |
|
599 |
with tests.utils.mock_url(url=url, response=json_get_data('id_search'), qs=qs):
|
|
598 | 600 |
resp = app.get(endpoint, params=params) |
599 | 601 |
assert qs == {'UID': '9fbb2afd499e465983434f974fce8404', 'fullobjects': 'y'} |
600 | 602 |
assert len(resp.json['data']) == 1 |
... | ... | |
608 | 610 |
'limit': 3, |
609 | 611 |
} |
610 | 612 |
qs = {} |
611 |
with utils.mock_url(url=url, response=json_get_data('q_search'), qs=qs): |
|
613 |
with tests.utils.mock_url(url=url, response=json_get_data('q_search'), qs=qs):
|
|
612 | 614 |
resp = app.get(endpoint, params=params) |
613 | 615 |
assert qs == { |
614 | 616 |
'sort_on': 'UID', |
... | ... | |
630 | 632 |
'q': 'Página dentro', |
631 | 633 |
} |
632 | 634 |
qs = {} |
633 |
with utils.mock_url(url=url, response=json_get_data('q_search'), qs=qs): |
|
635 |
with tests.utils.mock_url(url=url, response=json_get_data('q_search'), qs=qs):
|
|
634 | 636 |
resp = app.get(endpoint, params=params) |
635 | 637 |
assert qs == { |
636 | 638 |
'SearchableText': 'Página dentro', |
... | ... | |
653 | 655 |
'id': '9fbb2afd499e465983434f974fce8404', |
654 | 656 |
} |
655 | 657 |
qs = {} |
656 |
with utils.mock_url(url=url, response=json_get_data('id_search'), qs=qs): |
|
658 |
with tests.utils.mock_url(url=url, response=json_get_data('id_search'), qs=qs):
|
|
657 | 659 |
resp = app.get(endpoint, params=params) |
658 | 660 |
assert qs == { |
659 | 661 |
'UID': '9fbb2afd499e465983434f974fce8404', |
tests/test_proxylogger.py | ||
---|---|---|
6 | 6 | |
7 | 7 |
import pytest |
8 | 8 |
import requests |
9 |
import utils |
|
10 | 9 |
from django.core.exceptions import ValidationError |
11 | 10 |
from django.utils.log import AdminEmailHandler |
12 | 11 |
from django.utils.six import PY2 |
13 | 12 |
from httmock import HTTMock |
14 |
from test_availability import down_mock, up_mock |
|
15 | 13 | |
14 |
import tests.utils |
|
16 | 15 |
from passerelle.apps.feeds.models import Feed |
17 | 16 |
from passerelle.base.models import ProxyLogger, ResourceLog |
18 | 17 |
from passerelle.contrib.stub_invoices.models import StubInvoicesConnector |
19 | 18 |
from passerelle.utils.api import endpoint |
20 | 19 |
from passerelle.utils.jsonresponse import APIError |
20 |
from tests.test_availability import down_mock, up_mock |
|
21 | 21 | |
22 | 22 | |
23 | 23 |
@pytest.fixture |
... | ... | |
302 | 302 |
# default configuration |
303 | 303 |
assert connector.logging_parameters.requests_max_size == None |
304 | 304 |
assert connector.logging_parameters.responses_max_size == None |
305 |
with utils.mock_url(URL, service_response, headers=service_headers): |
|
305 |
with tests.utils.mock_url(URL, service_response, headers=service_headers):
|
|
306 | 306 |
app.post(url, params=user_payload, status=200) |
307 | 307 |
assert len(ResourceLog.objects.all()) == 3 |
308 | 308 | |
... | ... | |
327 | 327 |
connector.set_log_level('DEBUG') |
328 | 328 |
settings.LOGGED_CONTENT_TYPES_MESSAGES = 'foo/bar' # log response content |
329 | 329 |
ResourceLog.objects.all().delete() |
330 |
with utils.mock_url(URL, service_response, headers=service_headers): |
|
330 |
with tests.utils.mock_url(URL, service_response, headers=service_headers):
|
|
331 | 331 |
app.post(url, params=user_payload, status=200) |
332 | 332 |
assert len(ResourceLog.objects.all()) == 3 |
333 | 333 | |
... | ... | |
350 | 350 |
parameters.requests_max_size = 25 |
351 | 351 |
parameters.save() |
352 | 352 |
ResourceLog.objects.all().delete() |
353 |
with utils.mock_url(URL, service_response, headers=service_headers): |
|
353 |
with tests.utils.mock_url(URL, service_response, headers=service_headers):
|
|
354 | 354 |
app.post(url, params=user_payload, status=200) |
355 | 355 |
assert len(ResourceLog.objects.all()) == 3 |
356 | 356 | |
... | ... | |
371 | 371 |
parameters.responses_max_size = 25 |
372 | 372 |
parameters.save() |
373 | 373 |
ResourceLog.objects.all().delete() |
374 |
with utils.mock_url(URL, service_response, headers=service_headers): |
|
374 |
with tests.utils.mock_url(URL, service_response, headers=service_headers):
|
|
375 | 375 |
app.post(url, params=user_payload, status=200) |
376 | 376 |
assert len(ResourceLog.objects.all()) == 3 |
377 | 377 | |
... | ... | |
384 | 384 | |
385 | 385 |
def test_proxy_logger_email_traceback(app, db, email_handler, settings, mailoutbox, connector, monkeypatch): |
386 | 386 |
settings.ADMINS = [('admin', 'admin@example.net')] |
387 |
endpoint_url = utils.generic_endpoint_url('feeds', 'json', slug=connector.slug) |
|
387 |
endpoint_url = tests.utils.generic_endpoint_url('feeds', 'json', slug=connector.slug)
|
|
388 | 388 | |
389 | 389 |
@endpoint() |
390 | 390 |
def json(self, request): |
tests/test_requests.py | ||
---|---|---|
4 | 4 |
import mohawk |
5 | 5 |
import pytest |
6 | 6 |
import requests |
7 |
import utils |
|
8 | 7 |
from django.test import override_settings |
9 | 8 |
from httmock import HTTMock, response, urlmatch |
10 | 9 |
from urllib3.exceptions import ReadTimeoutError |
11 |
from utils import FakedResponse |
|
12 | 10 | |
11 |
import tests.utils |
|
13 | 12 |
from passerelle.utils import CaseInsensitiveDict, Request, log_http_request |
14 | 13 |
from passerelle.utils.http_authenticators import HawkAuth |
14 |
from tests.utils import FakedResponse |
|
15 | 15 | |
16 | 16 | |
17 | 17 |
@pytest.fixture(autouse=True) |
tests/test_rsa13.py | ||
---|---|---|
23 | 23 | |
24 | 24 |
import httmock |
25 | 25 |
import pytest |
26 |
import utils |
|
27 | 26 | |
27 |
import tests.utils |
|
28 | 28 |
from passerelle.contrib.rsa13.models import RSA13Resource |
29 | 29 | |
30 | 30 | |
31 | 31 |
@pytest.fixture |
32 | 32 |
def rsa13(db): |
33 |
return utils.make_resource( |
|
33 |
return tests.utils.make_resource(
|
|
34 | 34 |
RSA13Resource, |
35 | 35 |
title='Test', |
36 | 36 |
slug='test', |
tests/test_sector.py | ||
---|---|---|
20 | 20 |
from stat import ST_MTIME |
21 | 21 | |
22 | 22 |
import pytest |
23 |
import utils |
|
24 | 23 |
import webtest |
25 | 24 |
from django.core.exceptions import ValidationError |
26 | 25 |
from django.core.files import File |
... | ... | |
29 | 28 |
from django.utils.encoding import force_str, force_text |
30 | 29 |
from django.utils.six import StringIO |
31 | 30 |
from django.utils.timezone import now |
32 |
from test_manager import login |
|
33 | 31 | |
32 |
import tests.utils |
|
34 | 33 |
from passerelle.apps.sector.models import Sectorization, SectorResource |
35 | 34 |
from passerelle.base.models import AccessRight |
35 |
from tests.test_manager import login |
|
36 | 36 | |
37 | 37 |
CSV = """street_id,street_name,parity,min_housenumber,max_housenumber,sector_id,sector_name |
38 | 38 |
75114_1912,rue du Château,P,,, gs-moulin, Groupe Scolaire Moulin |
... | ... | |
77 | 77 | |
78 | 78 |
@pytest.fixture |
79 | 79 |
def sector(db): |
80 |
return utils.setup_access_rights( |
|
80 |
return tests.utils.setup_access_rights(
|
|
81 | 81 |
SectorResource.objects.create( |
82 | 82 |
slug='test', |
83 | 83 |
title='title', |
tests/test_sigerly.py | ||
---|---|---|
19 | 19 | |
20 | 20 |
import httmock |
21 | 21 |
import pytest |
22 |
import utils |
|
23 | 22 | |
23 |
import tests.utils |
|
24 | 24 |
from passerelle.contrib.sigerly.models import Sigerly |
25 | 25 | |
26 | 26 |
TEST_BASE_DIR = os.path.join(os.path.dirname(__file__), 'data', 'sigerly') |
... | ... | |
28 | 28 | |
29 | 29 |
@pytest.fixture |
30 | 30 |
def connector(db): |
31 |
return utils.setup_access_rights( |
|
31 |
return tests.utils.setup_access_rights(
|
|
32 | 32 |
Sigerly.objects.create(slug='test', base_url='https://sigerly.example.net') |
33 | 33 |
) |
34 | 34 | |
... | ... | |
39 | 39 | |
40 | 40 | |
41 | 41 |
def get_endpoint(name): |
42 |
return utils.generic_endpoint_url('sigerly', name) |
|
42 |
return tests.utils.generic_endpoint_url('sigerly', name)
|
|
43 | 43 | |
44 | 44 | |
45 | 45 |
@pytest.mark.parametrize( |
tests/test_sms.py | ||
---|---|---|
19 | 19 |
import isodate |
20 | 20 |
import mock |
21 | 21 |
import pytest |
22 |
import utils |
|
23 | 22 |
from django.conf import settings |
24 | 23 |
from django.contrib.contenttypes.models import ContentType |
25 | 24 |
from django.urls import reverse |
26 | 25 |
from django.utils.translation import ugettext as _ |
27 | 26 |
from requests import RequestException |
28 |
from test_manager import login |
|
29 |
from utils import FakedResponse |
|
30 | 27 | |
28 |
import tests.utils |
|
31 | 29 |
from passerelle.apps.choosit.models import ChoositSMSGateway |
32 | 30 |
from passerelle.apps.ovh.models import OVHSMSGateway |
33 | 31 |
from passerelle.apps.sfr_dmc.models import SfrDmcGateway |
34 | 32 |
from passerelle.base.models import AccessRight, ApiUser, Job, ResourceLog |
35 | 33 |
from passerelle.sms.models import SMSLog, SMSResource |
36 | 34 |
from passerelle.utils.jsonresponse import APIError |
35 |
from tests.test_manager import login |
|
36 |
from tests.utils import FakedResponse |
|
37 | 37 | |
38 | 38 |
pytestmark = pytest.mark.django_db |
39 | 39 | |
... | ... | |
165 | 165 | |
166 | 166 |
# perform job |
167 | 167 |
freezer.move_to('2019-01-01 01:00:03') |
168 |
with utils.mock_url( |
|
168 |
with tests.utils.mock_url(
|
|
169 | 169 |
connector.URL, test_vector.get('response', ''), test_vector.get('status_code', 200) |
170 | 170 |
): |
171 | 171 |
connector.jobs() |
... | ... | |
196 | 196 |
assert Job.objects.exists() |
197 | 197 |
assert Job.objects.get().status == 'registered' |
198 | 198 |
assert not Job.objects.get().after_timestamp |
199 |
with utils.mock_url( |
|
199 |
with tests.utils.mock_url(
|
|
200 | 200 |
url=connector.URL, |
201 | 201 |
response={'status': 429, 'message': 'Too much requests.\nPlease retry in 3 seconds.'}, |
202 | 202 |
): |
... | ... | |
204 | 204 |
assert Job.objects.get().status == 'registered' |
205 | 205 |
assert Job.objects.get().after_timestamp |
206 | 206 | |
207 |
with utils.mock_url(url=connector.URL, response={'status': 100, 'credit_left': 22}): |
|
207 |
with tests.utils.mock_url(url=connector.URL, response={'status': 100, 'credit_left': 22}):
|
|
208 | 208 |
connector.jobs() |
209 | 209 |
assert Job.objects.get().status == 'registered' |
210 | 210 | |
211 | 211 |
freezer.move_to('2019-01-01 00:00:11') |
212 |
with utils.mock_url(url=connector.URL, response={'status': 100, 'creditLeft': 22}): |
|
212 |
with tests.utils.mock_url(url=connector.URL, response={'status': 100, 'creditLeft': 22}):
|
|
213 | 213 |
connector.jobs() |
214 | 214 |
assert Job.objects.get().status == 'completed' |
215 | 215 |
assert SMSLog.objects.exists() |
... | ... | |
411 | 411 |
} |
412 | 412 |
base_url = connector.API_URL % {'serviceName': 'sms-test42'} |
413 | 413 |
url = base_url + 'jobs/' |
414 |
with utils.mock_url(url, resp, 200) as mocked: |
|
414 |
with tests.utils.mock_url(url, resp, 200) as mocked:
|
|
415 | 415 |
connector.jobs() |
416 | 416 |
job = Job.objects.get(id=job_id) |
417 | 417 |
assert job.status == 'completed' |
... | ... | |
469 | 469 |
'creditsLeft': 123, |
470 | 470 |
} |
471 | 471 |
ovh_url = connector.API_URL % {'serviceName': 'sms-test42'} |
472 |
with utils.mock_url(ovh_url, resp, 200) as mocked: |
|
472 |
with tests.utils.mock_url(ovh_url, resp, 200) as mocked:
|
|
473 | 473 |
connector.jobs() |
474 | 474 |
connector.refresh_from_db() |
475 | 475 |
assert connector.credit_left == 123 |
... | ... | |
481 | 481 |
resp = { |
482 | 482 |
'creditsLeft': 456, |
483 | 483 |
} |
484 |
with utils.mock_url(ovh_url, resp, 200) as mocked: |
|
484 |
with tests.utils.mock_url(ovh_url, resp, 200) as mocked:
|
|
485 | 485 |
connector.hourly() |
486 | 486 |
assert connector.credit_left == 456 |
487 | 487 | |
... | ... | |
507 | 507 |
freezer.move_to('2019-01-01 00:00:00') |
508 | 508 |
resp = {'creditsLeft': 101} |
509 | 509 |
ovh_url = connector.API_URL % {'serviceName': 'sms-test42'} |
510 |
with utils.mock_url(ovh_url, resp, 200) as mocked: |
|
510 |
with tests.utils.mock_url(ovh_url, resp, 200) as mocked:
|
|
511 | 511 |
connector.hourly() |
512 | 512 |
assert len(mailoutbox) == 0 |
513 | 513 | |
514 | 514 |
resp = {'creditsLeft': 99} |
515 | 515 |
ovh_url = connector.API_URL % {'serviceName': 'sms-test42'} |
516 |
with utils.mock_url(ovh_url, resp, 200) as mocked: |
|
516 |
with tests.utils.mock_url(ovh_url, resp, 200) as mocked:
|
|
517 | 517 |
connector.hourly() |
518 | 518 |
assert len(mailoutbox) == 1 |
519 | 519 | |
... | ... | |
530 | 530 |
freezer.move_to('2019-01-01 12:00:00') |
531 | 531 |
resp = {'creditsLeft': 99} |
532 | 532 |
ovh_url = connector.API_URL % {'serviceName': 'sms-test42'} |
533 |
with utils.mock_url(ovh_url, resp, 200) as mocked: |
|
533 |
with tests.utils.mock_url(ovh_url, resp, 200) as mocked:
|
|
534 | 534 |
connector.hourly() |
535 | 535 |
assert len(mailoutbox) == 0 |
536 | 536 | |
537 | 537 |
freezer.move_to('2019-01-02 01:00:07') |
538 |
with utils.mock_url(ovh_url, resp, 200) as mocked: |
|
538 |
with tests.utils.mock_url(ovh_url, resp, 200) as mocked:
|
|
539 | 539 |
connector.hourly() |
540 | 540 |
assert len(mailoutbox) == 1 |
541 | 541 | |
... | ... | |
558 | 558 |
'consumerKey': 'xyz', |
559 | 559 |
'validationUrl': 'https://eu.api.ovh.com/auth/?credentialToken=iQ1joJE', |
560 | 560 |
} |
561 |
with utils.mock_url(ovh_request_token_url, ovh_response, 302) as mocked: |
|
561 |
with tests.utils.mock_url(ovh_request_token_url, ovh_response, 302) as mocked:
|
|
562 | 562 |
resp = resp.click('request access') |
563 | 563 |
assert resp.url == 'https://eu.api.ovh.com/auth/?credentialToken=iQ1joJE' |
564 | 564 | |
... | ... | |
587 | 587 |
ovh_request_token_url = 'https://eu.api.ovh.com/1.0/auth/credential' |
588 | 588 |
ovh_response = {'message': 'Invalid application key'} |
589 | 589 | |
590 |
with utils.mock_url(ovh_request_token_url, ovh_response, 401) as mocked: |
|
590 |
with tests.utils.mock_url(ovh_request_token_url, ovh_response, 401) as mocked:
|
|
591 | 591 |
resp = resp.click('request access').follow() |
592 | 592 |
assert 'error requesting token: Invalid application key.' in resp.text |
593 | 593 | |
594 | 594 |
ovh_response = 'not-json' |
595 |
with utils.mock_url(ovh_request_token_url, ovh_response, 401) as mocked: |
|
595 |
with tests.utils.mock_url(ovh_request_token_url, ovh_response, 401) as mocked:
|
|
596 | 596 |
resp = resp.click('request access').follow() |
597 | 597 |
assert 'error requesting token: bad JSON response' in resp.text |
598 | 598 |
tests/test_solis.py | ||
---|---|---|
2 | 2 | |
3 | 3 |
import mock |
4 | 4 |
import pytest |
5 |
import utils |
|
6 | 5 |
from django.contrib.contenttypes.models import ContentType |
7 | 6 |
from django.core.files import File |
8 | 7 |
from django.utils.six import StringIO |
9 | 8 | |
9 |
import tests.utils |
|
10 | 10 |
from passerelle.apps.solis.models import Solis, SolisAPALink, SolisRSALink, unflat |
11 | 11 |
from passerelle.base.models import AccessRight, ApiUser |
12 | 12 | |
... | ... | |
88 | 88 | |
89 | 89 |
def test_solis_restricted_access(app, solis): |
90 | 90 |
for service in ('apa-link', 'apa-unlink', 'rsa-link', 'rsa-unlink'): |
91 |
endpoint = utils.generic_endpoint_url('solis', service, slug=solis.slug) |
|
91 |
endpoint = tests.utils.generic_endpoint_url('solis', service, slug=solis.slug)
|
|
92 | 92 |
assert endpoint == '/solis/test/%s' % service |
93 | 93 |
with mock.patch('passerelle.utils.Request.post') as requests_post: |
94 | 94 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
... | ... | |
99 | 99 |
resp = app.get(endpoint, status=405) |
100 | 100 |
assert requests_get.call_count == 0 |
101 | 101 |
for service in ('apa-links', 'apa-user-info', 'apa-users', 'rsa-links', 'rsa-user-info'): |
102 |
endpoint = utils.generic_endpoint_url('solis', service, slug=solis.slug) |
|
102 |
endpoint = tests.utils.generic_endpoint_url('solis', service, slug=solis.slug)
|
|
103 | 103 |
assert endpoint == '/solis/test/%s' % service |
104 | 104 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
105 | 105 |
with mock.patch('passerelle.utils.Request.post') as requests_post: |
... | ... | |
114 | 114 |
@pytest.fixture |
115 | 115 |
def ping_response(): |
116 | 116 |
response_request = mock.Mock(headers={'Accept': '*/*'}, body=None) |
117 |
return utils.FakedResponse( |
|
117 |
return tests.utils.FakedResponse(
|
|
118 | 118 |
headers={'Content-Type': 'text/plain'}, status_code=200, request=response_request |
119 | 119 |
) |
120 | 120 | |
... | ... | |
127 | 127 |
codename='can_access', apiuser=api, resource_type=obj_type, resource_pk=solis.pk |
128 | 128 |
) |
129 | 129 | |
130 |
endpoint = utils.generic_endpoint_url('solis', 'ping', slug=solis.slug) |
|
130 |
endpoint = tests.utils.generic_endpoint_url('solis', 'ping', slug=solis.slug)
|
|
131 | 131 |
with mock.patch('passerelle.utils.RequestSession.request') as requests_get: |
132 | 132 |
for bad_content in ( |
133 | 133 |
'error', |
... | ... | |
198 | 198 |
# link |
199 | 199 |
with mock.patch('passerelle.utils.Request.post') as requests_post: # get solis token |
200 | 200 |
with mock.patch('passerelle.utils.Request.get') as requests_get: # get solis informations |
201 |
endpoint = utils.generic_endpoint_url('solis', 'apa-link', slug=solis.slug) |
|
201 |
endpoint = tests.utils.generic_endpoint_url('solis', 'apa-link', slug=solis.slug)
|
|
202 | 202 |
for params in (None, '', []): |
203 | 203 |
resp = app.post_json(endpoint, params=params, status=200) |
204 | 204 |
assert requests_post.call_count == 0 |
... | ... | |
216 | 216 |
assert resp.json['err'] == 1 |
217 | 217 |
assert 'missing user_id/code credentials' in resp.json['err_desc'] |
218 | 218 | |
219 |
requests_post.return_value = utils.FakedResponse(content=APATOKEN_403, status_code=403) |
|
219 |
requests_post.return_value = tests.utils.FakedResponse(content=APATOKEN_403, status_code=403)
|
|
220 | 220 |
resp = app.post_json( |
221 | 221 |
endpoint, params={'user_id': 'x', 'code': 'x', 'name_id': NAMEID}, status=200 |
222 | 222 |
) |
... | ... | |
227 | 227 | |
228 | 228 |
assert SolisAPALink.objects.count() == 0 |
229 | 229 | |
230 |
requests_post.return_value = utils.FakedResponse(content=APATOKEN, status_code=200) |
|
231 |
requests_get.return_value = utils.FakedResponse( |
|
230 |
requests_post.return_value = tests.utils.FakedResponse(content=APATOKEN, status_code=200)
|
|
231 |
requests_get.return_value = tests.utils.FakedResponse(
|
|
232 | 232 |
content=APAINFOS['exportDonneesIndividu'], status_code=200 |
233 | 233 |
) |
234 | 234 |
resp = app.post_json( |
... | ... | |
279 | 279 |
'Mme Pecile PYPPENNE (NPYNEZ)', |
280 | 280 |
'Mme Pecile PYPPENNE (NPYNEZ)', |
281 | 281 |
] |
282 |
endpoint = utils.generic_endpoint_url('solis', 'apa-links', slug=solis.slug) |
|
282 |
endpoint = tests.utils.generic_endpoint_url('solis', 'apa-links', slug=solis.slug)
|
|
283 | 283 |
resp = app.get(endpoint, status=400) # missing name_id |
284 | 284 |
assert resp.json['err'] == 1 |
285 | 285 |
endpoint += '?name_id=%s' % NAMEID |
... | ... | |
292 | 292 |
changed_name = APAINFOS['exportDonneesIndividu'].replace('PYPPENNE', 'PEPONE') |
293 | 293 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
294 | 294 |
with mock.patch('passerelle.utils.Request.post') as requests_post: |
295 |
requests_post.return_value = utils.FakedResponse(content=APATOKEN, status_code=200) |
|
296 |
requests_get.return_value = utils.FakedResponse(content=changed_name, status_code=200) |
|
297 |
endpoint = utils.generic_endpoint_url('solis', 'apa-user-info', slug=solis.slug) |
|
295 |
requests_post.return_value = tests.utils.FakedResponse(content=APATOKEN, status_code=200)
|
|
296 |
requests_get.return_value = tests.utils.FakedResponse(content=changed_name, status_code=200)
|
|
297 |
endpoint = tests.utils.generic_endpoint_url('solis', 'apa-user-info', slug=solis.slug)
|
|
298 | 298 |
endpoint += '?name_id=%s&user_id=42' % NAMEID |
299 | 299 |
resp = app.get(endpoint, status=200) |
300 | 300 |
assert resp.json['err'] == 0 |
... | ... | |
306 | 306 |
for apa_endpoint in APAINFOS: |
307 | 307 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
308 | 308 |
with mock.patch('passerelle.utils.Request.post') as requests_post: |
309 |
requests_post.return_value = utils.FakedResponse(content=APATOKEN, status_code=200) |
|
309 |
requests_post.return_value = tests.utils.FakedResponse(content=APATOKEN, status_code=200)
|
|
310 | 310 | |
311 |
endpoint_base = utils.generic_endpoint_url('solis', 'apa-user-info', slug=solis.slug) |
|
311 |
endpoint_base = tests.utils.generic_endpoint_url('solis', 'apa-user-info', slug=solis.slug)
|
|
312 | 312 |
resp = app.get(endpoint_base, status=400) # missing name_id |
313 | 313 |
assert resp.json['err'] == 1 |
314 | 314 | |
315 | 315 |
endpoint = endpoint_base + '?name_id=%s&user_id=53&information=%s' % (NAMEID, apa_endpoint) |
316 |
requests_get.return_value = utils.FakedResponse( |
|
316 |
requests_get.return_value = tests.utils.FakedResponse(
|
|
317 | 317 |
content=APAINFOS[apa_endpoint], status_code=200 |
318 | 318 |
) |
319 | 319 |
resp = app.get(endpoint, status=200) |
... | ... | |
324 | 324 |
assert resp.json['data'] |
325 | 325 | |
326 | 326 |
# solis api crash |
327 |
requests_get.return_value = utils.FakedResponse(content='boum', status_code=500) |
|
327 |
requests_get.return_value = tests.utils.FakedResponse(content='boum', status_code=500)
|
|
328 | 328 |
resp = app.get(endpoint, status=200) |
329 | 329 |
assert requests_post.call_count == 2 # get a token |
330 | 330 |
assert requests_get.call_count == 2 # get informations |
... | ... | |
333 | 333 |
assert resp.json['err_desc'].startswith('error status:500') |
334 | 334 |
assert resp.json['data'] == {'json_content': None, 'status_code': 500} |
335 | 335 | |
336 |
requests_get.return_value = utils.FakedResponse(content='{"error":"foobar"}', status_code=500) |
|
336 |
requests_get.return_value = tests.utils.FakedResponse( |
|
337 |
content='{"error":"foobar"}', status_code=500 |
|
338 |
) |
|
337 | 339 |
resp = app.get(endpoint, status=200) |
338 | 340 |
assert resp.json['err'] == 1 |
339 | 341 |
assert resp.json['err_desc'].startswith('error status:500') |
... | ... | |
350 | 352 |
# get info about a specific request |
351 | 353 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
352 | 354 |
with mock.patch('passerelle.utils.Request.post') as requests_post: |
353 |
requests_post.return_value = utils.FakedResponse(content=APATOKEN, status_code=200) |
|
354 |
endpoint_base = utils.generic_endpoint_url('solis', 'apa-user-info', slug=solis.slug) |
|
355 |
requests_post.return_value = tests.utils.FakedResponse(content=APATOKEN, status_code=200)
|
|
356 |
endpoint_base = tests.utils.generic_endpoint_url('solis', 'apa-user-info', slug=solis.slug)
|
|
355 | 357 | |
356 | 358 |
# via demandeUnitaire |
357 | 359 |
endpoint = endpoint_base + '?name_id=%s&user_id=53&information=demandeUnitaire&index=42' % NAMEID |
358 |
requests_get.return_value = utils.FakedResponse(content=APAREQUEST, status_code=200) |
|
360 |
requests_get.return_value = tests.utils.FakedResponse(content=APAREQUEST, status_code=200)
|
|
359 | 361 |
resp = app.get(endpoint, status=200) |
360 | 362 |
assert requests_post.call_count == 1 # get a token |
361 | 363 |
assert requests_get.call_count == 1 # get demandeUnitaire |
... | ... | |
367 | 369 | |
368 | 370 |
requests_post.reset_mock() |
369 | 371 |
requests_get.reset_mock() |
370 |
requests_get.return_value = utils.FakedResponse(content='nothing here', status_code=404) |
|
372 |
requests_get.return_value = tests.utils.FakedResponse(content='nothing here', status_code=404)
|
|
371 | 373 |
resp = app.get(endpoint, status=200) |
372 | 374 |
assert requests_post.call_count == 1 # get a token |
373 | 375 |
assert requests_get.call_count == 1 # get demandeUnitaire |
... | ... | |
398 | 400 |
NAMEID, |
399 | 401 |
information, |
400 | 402 |
) |
401 |
requests_get.return_value = utils.FakedResponse( |
|
403 |
requests_get.return_value = tests.utils.FakedResponse(
|
|
402 | 404 |
content=APAINFOS[information], status_code=200 |
403 | 405 |
) |
404 | 406 |
resp = app.get(endpoint, status=200) |
... | ... | |
423 | 425 |
change_info = APAINFOS['exportDonneesIndividu'].replace('PYPPENNE', 'PEPPYNE') |
424 | 426 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
425 | 427 |
with mock.patch('passerelle.utils.Request.post') as requests_post: |
426 |
requests_post.return_value = utils.FakedResponse(content=APATOKEN, status_code=200) |
|
427 |
requests_get.return_value = utils.FakedResponse(content=change_info, status_code=200) |
|
428 |
endpoint = utils.generic_endpoint_url('solis', 'apa-users', slug=solis.slug) |
|
428 |
requests_post.return_value = tests.utils.FakedResponse(content=APATOKEN, status_code=200)
|
|
429 |
requests_get.return_value = tests.utils.FakedResponse(content=change_info, status_code=200)
|
|
430 |
endpoint = tests.utils.generic_endpoint_url('solis', 'apa-users', slug=solis.slug)
|
|
429 | 431 |
endpoint += '?name_id=%s' % NAMEID |
430 | 432 |
resp = app.get(endpoint, status=200) |
431 | 433 |
assert resp.json['err'] == 0 |
... | ... | |
441 | 443 |
] |
442 | 444 | |
443 | 445 |
# unlink |
444 |
endpoint = utils.generic_endpoint_url('solis', 'apa-unlink', slug=solis.slug) |
|
446 |
endpoint = tests.utils.generic_endpoint_url('solis', 'apa-unlink', slug=solis.slug)
|
|
445 | 447 |
for bad_params in ({}, {'user_id': '42'}, {'name_id': NAMEID}): |
446 | 448 |
resp = app.post_json(endpoint, params=bad_params, status=200) |
447 | 449 |
assert resp.json['err'] == 1 |
... | ... | |
466 | 468 |
assert SolisAPALink.objects.count() == 1 |
467 | 469 | |
468 | 470 |
# can not get informations from unlinked user |
469 |
endpoint = utils.generic_endpoint_url('solis', 'apa-user-info', slug=solis.slug) |
|
471 |
endpoint = tests.utils.generic_endpoint_url('solis', 'apa-user-info', slug=solis.slug)
|
|
470 | 472 |
endpoint += '?name_id=%s&user_id=42' % NAMEID |
471 | 473 |
resp = app.get(endpoint, status=200) |
472 | 474 |
assert resp.json['err'] == 1 |
... | ... | |
483 | 485 |
) |
484 | 486 | |
485 | 487 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
486 |
requests_get.return_value = utils.FakedResponse(content=DEPARTEMENTS, status_code=200) |
|
487 |
url = utils.generic_endpoint_url('solis', 'referential', slug=solis.slug) |
|
488 |
requests_get.return_value = tests.utils.FakedResponse(content=DEPARTEMENTS, status_code=200)
|
|
489 |
url = tests.utils.generic_endpoint_url('solis', 'referential', slug=solis.slug)
|
|
488 | 490 | |
489 | 491 |
resp = app.get(url + '/trans/departement/', status=200) |
490 | 492 |
assert requests_get.call_count == 1 |
... | ... | |
533 | 535 |
assert 'codePays=79' in called_url |
534 | 536 |
assert 'foo=bar' not in called_url |
535 | 537 | |
536 |
requests_get.return_value = utils.FakedResponse( |
|
538 |
requests_get.return_value = tests.utils.FakedResponse(
|
|
537 | 539 |
content='{"nada":0}', status_code=404, reason='Not found' |
538 | 540 |
) |
539 | 541 |
resp = app.get(url + '/foo/bar/', status=200) |
... | ... | |
542 | 544 |
assert resp.json['err_desc'] == "error status:404 'Not found', content:'{\"nada\":0}'" |
543 | 545 |
assert resp.json['data'] == {'json_content': {'nada': 0}, 'status_code': 404} |
544 | 546 | |
545 |
requests_get.return_value = utils.FakedResponse(content='crash', status_code=500, reason='boum') |
|
547 |
requests_get.return_value = tests.utils.FakedResponse(content='crash', status_code=500, reason='boum')
|
|
546 | 548 |
resp = app.get(url + '/foo/bar/', status=200) |
547 | 549 |
assert requests_get.call_args[0][0].endswith('/solisapi/referentiels/foo/bar') |
548 | 550 |
assert resp.json['err'] == 1 |
... | ... | |
550 | 552 |
assert resp.json['data'] == {'json_content': None, 'status_code': 500} |
551 | 553 | |
552 | 554 |
# optimized trans/lieu search |
553 |
requests_get.return_value = utils.FakedResponse(content='{"lieux":[]}', status_code=200) |
|
555 |
requests_get.return_value = tests.utils.FakedResponse(content='{"lieux":[]}', status_code=200)
|
|
554 | 556 |
resp = app.get(url + '/trans/lieu/', status=200) |
555 | 557 |
assert requests_get.call_args[0][0].endswith('/solisapi/referentiels/trans/lieu') |
556 | 558 |
resp = app.get(url + '/trans/lieu/?codeDepartement=1&codeCommune=2&q=search', status=200) |
... | ... | |
569 | 571 |
) |
570 | 572 | |
571 | 573 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
572 |
requests_get.return_value = utils.FakedResponse(content=CIVI_INDIVIDU, status_code=200) |
|
573 |
url = utils.generic_endpoint_url('solis', 'referential-item', slug=solis.slug) |
|
574 |
requests_get.return_value = tests.utils.FakedResponse(content=CIVI_INDIVIDU, status_code=200)
|
|
575 |
url = tests.utils.generic_endpoint_url('solis', 'referential-item', slug=solis.slug)
|
|
574 | 576 |
resp = app.get(url + '/civi/individu/4373/', status=200) |
575 | 577 |
assert requests_get.call_count == 1 |
576 | 578 |
assert requests_get.call_args[0][0].endswith('/solisapi/referentiels/civi/individu/4373/') |
577 | 579 |
assert resp.json['err'] == 0 |
578 | 580 |
assert resp.json['data']['etatCivil']['nom'] == 'NOM' |
579 | 581 | |
580 |
requests_get.return_value = utils.FakedResponse( |
|
582 |
requests_get.return_value = tests.utils.FakedResponse(
|
|
581 | 583 |
content='{"nada":0}', status_code=404, reason='Not found' |
582 | 584 |
) |
583 |
url = utils.generic_endpoint_url('solis', 'referential-item', slug=solis.slug) |
|
585 |
url = tests.utils.generic_endpoint_url('solis', 'referential-item', slug=solis.slug)
|
|
584 | 586 |
resp = app.get(url + '/civi/individu/424242/', status=200) |
585 | 587 |
assert requests_get.call_args[0][0].endswith('/solisapi/referentiels/civi/individu/424242/') |
586 | 588 |
assert resp.json['err'] == 1 |
587 | 589 |
assert resp.json['err_desc'] == "error status:404 'Not found', content:'{\"nada\":0}'" |
588 | 590 |
assert resp.json['data'] == {'json_content': {'nada': 0}, 'status_code': 404} |
589 | 591 | |
590 |
requests_get.return_value = utils.FakedResponse(content='["not a dict"]', status_code=200) |
|
591 |
url = utils.generic_endpoint_url('solis', 'referential-item', slug=solis.slug) |
|
592 |
requests_get.return_value = tests.utils.FakedResponse(content='["not a dict"]', status_code=200)
|
|
593 |
url = tests.utils.generic_endpoint_url('solis', 'referential-item', slug=solis.slug)
|
|
592 | 594 |
resp = app.get(url + '/civi/individu/0/', status=200) |
593 | 595 |
assert requests_get.call_args[0][0].endswith('/solisapi/referentiels/civi/individu/0/') |
594 | 596 |
assert resp.json['err'] == 1 |
... | ... | |
612 | 614 |
with mock.patch('passerelle.utils.Request.post') as requests_post: |
613 | 615 | |
614 | 616 |
def integration_ok(*args, **kwargs): |
615 |
return utils.FakedResponse(content='', status_code=204) |
|
617 |
return tests.utils.FakedResponse(content='', status_code=204)
|
|
616 | 618 | |
617 |
requests_post.return_value = utils.FakedResponse(content='', status_code=204) |
|
619 |
requests_post.return_value = tests.utils.FakedResponse(content='', status_code=204)
|
|
618 | 620 |
# requests_post.side_effect = [utils.FakedResponse(content='', status_code=204)] |
619 |
url = utils.generic_endpoint_url('solis', 'apa-integration', slug=solis.slug) |
|
621 |
url = tests.utils.generic_endpoint_url('solis', 'apa-integration', slug=solis.slug)
|
|
620 | 622 | |
621 | 623 |
demande = { |
622 | 624 |
"beneficiaire_demande_aide": "APAD", |
... | ... | |
656 | 658 |
# add files |
657 | 659 |
requests_post.reset_mock() |
658 | 660 |
requests_post.side_effect = [ |
659 |
utils.FakedResponse(content='{"id": "foo", "nbFichiersAcceptes": 3}', status_code=200), |
|
660 |
utils.FakedResponse(content='', status_code=204), |
|
661 |
tests.utils.FakedResponse(content='{"id": "foo", "nbFichiersAcceptes": 3}', status_code=200),
|
|
662 |
tests.utils.FakedResponse(content='', status_code=204),
|
|
661 | 663 |
] |
662 | 664 |
demande['file:etat_civil_001.pdf'] = { |
663 | 665 |
'content': 'JVBERmZha2U=', |
... | ... | |
722 | 724 |
# bad file |
723 | 725 |
requests_post.reset_mock() |
724 | 726 |
requests_post.side_effect = [ |
725 |
utils.FakedResponse(content='{"id": "foo", "nbFichiersAcceptes": 0}', status_code=200), |
|
726 |
utils.FakedResponse(content='', status_code=204), |
|
727 |
tests.utils.FakedResponse(content='{"id": "foo", "nbFichiersAcceptes": 0}', status_code=200),
|
|
728 |
tests.utils.FakedResponse(content='', status_code=204),
|
|
727 | 729 |
] |
728 | 730 |
resp = app.post_json(url, params=demande, status=200) |
729 | 731 |
requests_post.assert_called_once() # don't try to post request |
... | ... | |
734 | 736 |
# error on sending file |
735 | 737 |
requests_post.reset_mock() |
736 | 738 |
requests_post.side_effect = [ |
737 |
utils.FakedResponse(content='{"error": 1}', status_code=500), |
|
738 |
utils.FakedResponse(content='', status_code=204), |
|
739 |
tests.utils.FakedResponse(content='{"error": 1}', status_code=500),
|
|
740 |
tests.utils.FakedResponse(content='', status_code=204),
|
|
739 | 741 |
] |
740 | 742 |
resp = app.post_json(url, params=demande, status=200) |
741 | 743 |
requests_post.assert_called_once() # don't try to post request |
... | ... | |
754 | 756 |
# link |
755 | 757 |
with mock.patch('passerelle.utils.Request.post') as requests_post: # get solis token |
756 | 758 |
with mock.patch('passerelle.utils.Request.get') as requests_get: # get solis informations |
757 |
endpoint = utils.generic_endpoint_url('solis', 'rsa-link', slug=solis.slug) |
|
759 |
endpoint = tests.utils.generic_endpoint_url('solis', 'rsa-link', slug=solis.slug)
|
|
758 | 760 |
for params in (None, '', []): |
759 | 761 |
resp = app.post_json(endpoint, params=params, status=200) |
760 | 762 |
assert requests_post.call_count == 0 |
... | ... | |
779 | 781 |
assert resp.json['err'] == 1 |
780 | 782 |
assert 'missing user_id/code credentials' in resp.json['err_desc'] |
781 | 783 | |
782 |
requests_post.return_value = utils.FakedResponse(content=RSATOKEN_403, status_code=403) |
|
784 |
requests_post.return_value = tests.utils.FakedResponse(content=RSATOKEN_403, status_code=403)
|
|
783 | 785 |
resp = app.post_json( |
784 | 786 |
endpoint, params={'user_id': 'x', 'code': 'x', 'name_id': NAMEID}, status=200 |
785 | 787 |
) |
... | ... | |
790 | 792 | |
791 | 793 |
assert SolisRSALink.objects.count() == 0 |
792 | 794 | |
793 |
requests_post.return_value = utils.FakedResponse(content=RSATOKEN, status_code=200) |
|
794 |
requests_get.return_value = utils.FakedResponse(content=CIVI_INDIVIDU, status_code=200) |
|
795 |
requests_post.return_value = tests.utils.FakedResponse(content=RSATOKEN, status_code=200)
|
|
796 |
requests_get.return_value = tests.utils.FakedResponse(content=CIVI_INDIVIDU, status_code=200)
|
|
795 | 797 |
resp = app.post_json( |
796 | 798 |
endpoint, params={'name_id': NAMEID, 'user_id': '4273', 'code': 'foo'}, status=200 |
797 | 799 |
) |
... | ... | |
851 | 853 |
# verify recorded names after link |
852 | 854 |
assert [x['text'] for x in SolisRSALink.objects.values('text')] == ['MME Prenom NOM', 'MME Prenom NOM'] |
853 | 855 | |
854 |
endpoint = utils.generic_endpoint_url('solis', 'rsa-links', slug=solis.slug) |
|
856 |
endpoint = tests.utils.generic_endpoint_url('solis', 'rsa-links', slug=solis.slug)
|
|
855 | 857 |
resp = app.get(endpoint, status=400) # missing name_id |
856 | 858 |
assert resp.json['err'] == 1 |
857 | 859 |
endpoint += '?name_id=%s' % NAMEID |
... | ... | |
864 | 866 |
changed_name = CIVI_INDIVIDU.replace('Prenom', 'Postnom') |
865 | 867 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
866 | 868 |
with mock.patch('passerelle.utils.Request.post') as requests_post: |
867 |
requests_post.return_value = utils.FakedResponse(content=RSATOKEN, status_code=200) |
|
868 |
requests_get.return_value = utils.FakedResponse(content=changed_name, status_code=200) |
|
869 |
endpoint = utils.generic_endpoint_url('solis', 'rsa-user-info', slug=solis.slug) |
|
869 |
requests_post.return_value = tests.utils.FakedResponse(content=RSATOKEN, status_code=200)
|
|
870 |
requests_get.return_value = tests.utils.FakedResponse(content=changed_name, status_code=200)
|
|
871 |
endpoint = tests.utils.generic_endpoint_url('solis', 'rsa-user-info', slug=solis.slug)
|
|
870 | 872 |
endpoint += '?name_id=%s&user_id=4242' % NAMEID |
871 | 873 |
resp = app.get(endpoint, status=200) |
872 | 874 |
assert resp.json['err'] == 0 |
... | ... | |
877 | 879 |
# get referential for a linked user |
878 | 880 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
879 | 881 |
with mock.patch('passerelle.utils.Request.post') as requests_post: |
880 |
requests_post.return_value = utils.FakedResponse(content=RSATOKEN, status_code=200) |
|
882 |
requests_post.return_value = tests.utils.FakedResponse(content=RSATOKEN, status_code=200)
|
|
881 | 883 | |
882 |
endpoint_base = utils.generic_endpoint_url('solis', 'rsa-user-info', slug=solis.slug) |
|
884 |
endpoint_base = tests.utils.generic_endpoint_url('solis', 'rsa-user-info', slug=solis.slug)
|
|
883 | 885 |
resp = app.get(endpoint_base, status=400) # missing name_id |
884 | 886 |
assert resp.json['err'] == 1 |
885 | 887 | |
886 | 888 |
endpoint = endpoint_base + '?name_id=%s&user_id=4242&information=allocataires' % NAMEID |
887 |
requests_get.return_value = utils.FakedResponse(content=RSAALLOCATAIRES, status_code=200) |
|
889 |
requests_get.return_value = tests.utils.FakedResponse(content=RSAALLOCATAIRES, status_code=200)
|
|
888 | 890 |
resp = app.get(endpoint, status=200) |
889 | 891 |
assert requests_post.call_count == 1 # get a token |
890 | 892 |
assert requests_get.call_count == 1 # get informations |
... | ... | |
893 | 895 |
assert resp.json['data'] |
894 | 896 | |
895 | 897 |
# solis api crash |
896 |
requests_get.return_value = utils.FakedResponse(content='boum', status_code=500) |
|
898 |
requests_get.return_value = tests.utils.FakedResponse(content='boum', status_code=500)
|
|
897 | 899 |
resp = app.get(endpoint, status=200) |
898 | 900 |
assert requests_post.call_count == 2 # get a token |
899 | 901 |
assert requests_get.call_count == 2 # get informations |
... | ... | |
902 | 904 |
assert resp.json['err_desc'].startswith('error status:500') |
903 | 905 |
assert resp.json['data'] == {'json_content': None, 'status_code': 500} |
904 | 906 | |
905 |
requests_get.return_value = utils.FakedResponse(content='{"error":"foobar"}', status_code=500) |
|
907 |
requests_get.return_value = tests.utils.FakedResponse( |
|
908 |
content='{"error":"foobar"}', status_code=500 |
|
909 |
) |
|
906 | 910 |
resp = app.get(endpoint, status=200) |
907 | 911 |
assert resp.json['err'] == 1 |
908 | 912 |
assert resp.json['err_desc'].startswith('error status:500') |
... | ... | |
919 | 923 |
# get actions, with filters |
920 | 924 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
921 | 925 |
with mock.patch('passerelle.utils.Request.post') as requests_post: |
922 |
requests_post.return_value = utils.FakedResponse(content=RSATOKEN, status_code=200) |
|
923 |
endpoint_base = utils.generic_endpoint_url('solis', 'rsa-user-info', slug=solis.slug) |
|
926 |
requests_post.return_value = tests.utils.FakedResponse(content=RSATOKEN, status_code=200)
|
|
927 |
endpoint_base = tests.utils.generic_endpoint_url('solis', 'rsa-user-info', slug=solis.slug)
|
|
924 | 928 |
endpoint = endpoint_base + '?name_id=%s&user_id=4242&information=actions' % NAMEID |
925 |
requests_get.return_value = utils.FakedResponse(content=RSA_ACTIONS, status_code=200) |
|
929 |
requests_get.return_value = tests.utils.FakedResponse(content=RSA_ACTIONS, status_code=200)
|
|
926 | 930 |
resp = app.get(endpoint, status=200) |
927 | 931 |
assert requests_post.call_count == 1 # get a token |
928 | 932 |
assert requests_get.call_count == 1 # get actions |
... | ... | |
952 | 956 | |
953 | 957 |
requests_get.reset_mock() |
954 | 958 |
requests_get.side_effect = [ |
955 |
utils.FakedResponse(status_code=200, content=RSA_ACTIONS), # base info |
|
956 |
utils.FakedResponse(status_code=200, content='{"nom":"Structure1"}'), # link 1 |
|
957 |
utils.FakedResponse(status_code=200, content='{"nom":"Structure2"}'), # link 2 |
|
959 |
tests.utils.FakedResponse(status_code=200, content=RSA_ACTIONS), # base info
|
|
960 |
tests.utils.FakedResponse(status_code=200, content='{"nom":"Structure1"}'), # link 1
|
|
961 |
tests.utils.FakedResponse(status_code=200, content='{"nom":"Structure2"}'), # link 2
|
|
958 | 962 |
] |
959 | 963 |
filtered = endpoint + '&links' |
960 | 964 |
resp = app.get(filtered, status=200) |
... | ... | |
968 | 972 |
# get referential for a linked user with links |
969 | 973 |
with mock.patch('passerelle.utils.Request.get') as requests_get: |
970 | 974 |
with mock.patch('passerelle.utils.Request.post') as requests_post: |
971 |
requests_post.return_value = utils.FakedResponse(content=RSATOKEN, status_code=200) |
|
972 |
endpoint_base = utils.generic_endpoint_url('solis', 'rsa-user-info', slug=solis.slug) |
|
975 |
requests_post.return_value = tests.utils.FakedResponse(content=RSATOKEN, status_code=200)
|
|
976 |
endpoint_base = tests.utils.generic_endpoint_url('solis', 'rsa-user-info', slug=solis.slug)
|
|
973 | 977 | |
974 | 978 |
requests_get.side_effect = [ |
975 |
utils.FakedResponse(status_code=200, content=RSAALLOCATAIRES), # base info |
|
976 |
utils.FakedResponse(status_code=200, content=CIVI_INDIVIDU), # link 1 |
|
977 |
utils.FakedResponse(status_code=200, content=CIVI_INDIVIDU), |
|
979 |
tests.utils.FakedResponse(status_code=200, content=RSAALLOCATAIRES), # base info
|
|
980 |
tests.utils.FakedResponse(status_code=200, content=CIVI_INDIVIDU), # link 1
|
|
981 |
tests.utils.FakedResponse(status_code=200, content=CIVI_INDIVIDU),
|
|
978 | 982 |
] # link 2 |
979 | 983 |
endpoint = endpoint_base + '?name_id=%s&user_id=4242&information=allocataires&links' % NAMEID |
980 | 984 |
resp = app.get(endpoint, status=200) |
... | ... | |
988 | 992 |
requests_post.reset_mock() |
989 | 993 |
requests_get.reset_mock() |
990 | 994 |
requests_get.side_effect = [ |
991 |
utils.FakedResponse(status_code=200, content=RSA_3LINKS), # base info |
|
992 |
utils.FakedResponse(status_code=200, content=CIVI_INDIVIDU), # link 1 |
|
993 |
utils.FakedResponse(status_code=200, content=CIVI_INDIVIDU), # link 2.1 |
|
994 |
utils.FakedResponse(status_code=200, content=CIVI_INDIVIDU), |
|
995 |
tests.utils.FakedResponse(status_code=200, content=RSA_3LINKS), # base info
|
|
996 |
tests.utils.FakedResponse(status_code=200, content=CIVI_INDIVIDU), # link 1
|
|
997 |
tests.utils.FakedResponse(status_code=200, content=CIVI_INDIVIDU), # link 2.1
|
|
998 |
tests.utils.FakedResponse(status_code=200, content=CIVI_INDIVIDU),
|
|
995 | 999 |
] # link 2.2 |
996 | 1000 |
endpoint = endpoint_base + '?name_id=%s&user_id=4242&information=evaluations&links' % NAMEID |
997 | 1001 |
resp = app.get(endpoint, status=200) |
... | ... | |
1006 | 1010 |
requests_post.reset_mock() |
1007 | 1011 |
requests_get.reset_mock() |
1008 | 1012 |
requests_get.side_effect = [ |
1009 |
utils.FakedResponse(status_code=200, content=RSAALLOCATAIRES), # base info |
|
1010 |
utils.FakedResponse(status_code=200, content=CIVI_INDIVIDU), |
|
1013 |
tests.utils.FakedResponse(status_code=200, content=RSAALLOCATAIRES), # base info
|
|
1014 |
tests.utils.FakedResponse(status_code=200, content=CIVI_INDIVIDU),
|
|
1011 | 1015 |
] # link 1 |
1012 | 1016 |
endpoint = ( |
1013 | 1017 |
endpoint_base |
... | ... | |
1024 | 1028 |
requests_post.reset_mock() |
1025 | 1029 |
requests_get.reset_mock() |
1026 | 1030 |
requests_get.side_effect = [ |
1027 |
utils.FakedResponse(status_code=200, content=RSAALLOCATAIRES), # base info |
|
1028 |
utils.FakedResponse(status_code=404, content='{"foo": "bar"}'), # link 1 |
|
1029 |
utils.FakedResponse(status_code=500, content='boom'), |
|
1031 |
tests.utils.FakedResponse(status_code=200, content=RSAALLOCATAIRES), # base info
|
|
1032 |
tests.utils.FakedResponse(status_code=404, content='{"foo": "bar"}'), # link 1
|
|
1033 |
tests.utils.FakedResponse(status_code=500, content='boom'),
|
|
1030 | 1034 |
] # link 2 |
1031 | 1035 |
endpoint = endpoint_base + '?name_id=%s&user_id=4242&information=allocataires&links' % NAMEID |
1032 | 1036 |
resp = app.get(endpoint, status=200) |
... | ... | |
1043 | 1047 |
): |
1044 | 1048 |
requests_post.reset_mock() |
1045 | 1049 |
requests_get.reset_mock() |
1046 |
requests_get.side_effect = [utils.FakedResponse(status_code=200, content=content)] |
|
1050 |
requests_get.side_effect = [tests.utils.FakedResponse(status_code=200, content=content)]
|
|
1047 | 1051 |
endpoint = endpoint_base + '?name_id=%s&user_id=4242&information=allocataires&links' % NAMEID |
1048 | 1052 |
resp = app.get(endpoint, status=200) |
1049 | 1053 |
assert requests_post.call_count == 1 # get a token |
... | ... | |
1053 | 1057 |
assert 'content' not in resp.json['data']['rsa_links']['etatCivil'] |
1054 | 1058 | |
1055 | 1059 |
# unlink |
1056 |
endpoint = utils.generic_endpoint_url('solis', 'rsa-unlink', slug=solis.slug) |
|
1060 |
endpoint = tests.utils.generic_endpoint_url('solis', 'rsa-unlink', slug=solis.slug)
|
|
1057 | 1061 |
for bad_params in ({}, {'user_id': '4273'}, {'name_id': NAMEID}): |
1058 | 1062 |
resp = app.post_json(endpoint, params=bad_params, status=200) |
1059 | 1063 |
assert resp.json['err'] == 1 |
... | ... | |
1078 | 1082 |
assert SolisRSALink.objects.count() == 1 |
1079 | 1083 | |
1080 | 1084 |
# can not get informations from unlinked user |
1081 |
endpoint = utils.generic_endpoint_url('solis', 'rsa-user-info', slug=solis.slug) |
|
1085 |
endpoint = tests.utils.generic_endpoint_url('solis', 'rsa-user-info', slug=solis.slug)
|
|
1082 | 1086 |
endpoint += '?name_id=%s&user_id=4242' % NAMEID |
1083 | 1087 |
resp = app.get(endpoint, status=200) |
1084 | 1088 |
assert resp.json['err'] == 1 |
tests/test_solis_afi_mss.py | ||
---|---|---|
20 | 20 | |
21 | 21 |
import mock |
22 | 22 |
import pytest |
23 |
import utils |
|
24 | 23 |
from django.utils.encoding import force_text |
25 | 24 | |
25 |
import tests.utils |
|
26 | 26 |
from passerelle.contrib.solis_afi_mss.models import SolisAfiMss |
27 | 27 |
from passerelle.utils.jsonresponse import APIError |
28 | 28 | |
29 | 29 | |
30 | 30 |
@pytest.fixture |
31 | 31 |
def connector(db): |
32 |
return utils.setup_access_rights( |
|
32 |
return tests.utils.setup_access_rights(
|
|
33 | 33 |
SolisAfiMss.objects.create( |
34 | 34 |
slug='test', |
35 | 35 |
base_url='https://solis-afi-mss.example.net/', |
... | ... | |
54 | 54 | |
55 | 55 | |
56 | 56 |
def response(status_code, content): |
57 |
return utils.FakedResponse(content=content, status_code=status_code) |
|
57 |
return tests.utils.FakedResponse(content=content, status_code=status_code)
|
|
58 | 58 | |
59 | 59 | |
60 | 60 |
IS_ALIVE = response(200, json_get_data('isAlive')) |
... | ... | |
83 | 83 | |
84 | 84 | |
85 | 85 |
def get_endpoint(name): |
86 |
return utils.generic_endpoint_url('solis-afi-mss', name) |
|
86 |
return tests.utils.generic_endpoint_url('solis-afi-mss', name)
|
|
87 | 87 | |
88 | 88 | |
89 | 89 |
@mock.patch('passerelle.utils.Request.get') |
tests/test_strasbourg_eu.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 | |
3 | 3 |
import pytest |
4 |
import utils |
|
5 | 4 |
from django.contrib.contenttypes.models import ContentType |
6 | 5 |
from httmock import HTTMock, all_requests |
7 | 6 | |
7 |
import tests.utils |
|
8 | 8 |
from passerelle.base.models import AccessRight, ApiUser |
9 | 9 |
from passerelle.contrib.strasbourg_eu.models import StrasbourgEu |
10 | 10 | |
... | ... | |
183 | 183 | |
184 | 184 | |
185 | 185 |
def test_interests(app, strasbourg_eu): |
186 |
endpoint = utils.generic_endpoint_url('strasbourg-eu', 'interests', slug=strasbourg_eu.slug) |
|
186 |
endpoint = tests.utils.generic_endpoint_url('strasbourg-eu', 'interests', slug=strasbourg_eu.slug)
|
|
187 | 187 |
with HTTMock(interests_mock): |
188 | 188 |
resp = app.get(endpoint) |
189 | 189 |
assert len(resp.json['data']) == 2 |
... | ... | |
214 | 214 | |
215 | 215 | |
216 | 216 |
def test_notifications(app, strasbourg_eu, caplog): |
217 |
endpoint = utils.generic_endpoint_url('strasbourg-eu', 'notifications', slug=strasbourg_eu.slug) |
|
217 |
endpoint = tests.utils.generic_endpoint_url('strasbourg-eu', 'notifications', slug=strasbourg_eu.slug)
|
|
218 | 218 | |
219 | 219 |
with HTTMock(notifications_mock): |
220 | 220 |
resp = app.get(endpoint, status=400) |
... | ... | |
254 | 254 | |
255 | 255 | |
256 | 256 |
def test_favorites(app, strasbourg_eu): |
257 |
endpoint = utils.generic_endpoint_url('strasbourg-eu', 'favorites', slug=strasbourg_eu.slug) |
|
257 |
endpoint = tests.utils.generic_endpoint_url('strasbourg-eu', 'favorites', slug=strasbourg_eu.slug)
|
|
258 | 258 |
with HTTMock(favorites_mock): |
259 | 259 |
resp = app.get(endpoint, status=400) |
260 | 260 |
resp = app.get(endpoint + '?name_id=xxx') |
tests/test_tcl.py | ||
---|---|---|
2 | 2 | |
3 | 3 |
import mock |
4 | 4 |
import pytest |
5 |
import utils |
|
6 | 5 |
from django.utils.six.moves.urllib import parse as urlparse |
7 | 6 | |
7 |
import tests.utils |
|
8 | 8 |
from passerelle.contrib.tcl.models import Line, Stop, Tcl |
9 | 9 | |
10 | 10 |
LIGNE_BUS = { |
... | ... | |
114 | 114 | |
115 | 115 |
@pytest.fixture |
116 | 116 |
def connector(db): |
117 |
return utils.setup_access_rights(Tcl.objects.create(slug='test')) |
|
117 |
return tests.utils.setup_access_rights(Tcl.objects.create(slug='test'))
|
|
118 | 118 | |
119 | 119 | |
120 | 120 |
def tcl_responses(url, **kwargs): |
... | ... | |
125 | 125 |
'/geojson/tclarret': ARRETS, |
126 | 126 |
'/tclpassagearret': PASSAGES, |
127 | 127 |
}.get(urlparse.urlparse(url).path) |
128 |
return utils.FakedResponse(json=lambda: copy.deepcopy(content), status_code=200) |
|
128 |
return tests.utils.FakedResponse(json=lambda: copy.deepcopy(content), status_code=200)
|
|
129 | 129 | |
130 | 130 | |
131 | 131 |
@mock.patch('passerelle.utils.Request.get') |
... | ... | |
150 | 150 |
def test_stop_info(mocked_get, app, connector): |
151 | 151 |
mocked_get.side_effect = tcl_responses |
152 | 152 |
connector.daily() |
153 |
endpoint = utils.generic_endpoint_url('tcl', 'stop', slug=connector.slug) |
|
153 |
endpoint = tests.utils.generic_endpoint_url('tcl', 'stop', slug=connector.slug)
|
|
154 | 154 |
assert endpoint == '/tcl/test/stop' |
155 | 155 |
resp = app.get(endpoint + '/46026') |
156 | 156 |
assert resp.json['data']['nom'] == 'Place Guichard' |
tests/test_teamnet_axel.py | ||
---|---|---|
1 | 1 |
import mock |
2 | 2 |
import pytest |
3 |
import utils |
|
4 | 3 |
from requests.exceptions import ConnectionError |
5 | 4 | |
5 |
import tests.utils |
|
6 | 6 |
from passerelle.contrib.teamnet_axel.models import Link, TeamnetAxel |
7 | 7 |
from passerelle.utils.jsonresponse import APIError |
8 | 8 | |
9 | 9 | |
10 | 10 |
@pytest.fixture |
11 | 11 |
def setup(db): |
12 |
return utils.make_resource( |
|
12 |
return tests.utils.make_resource(
|
|
13 | 13 |
TeamnetAxel, |
14 | 14 |
**{ |
15 | 15 |
'slug': 'test', |
tests/test_toulouse_axel.py | ||
---|---|---|
29 | 29 |
import jsonschema |
30 | 30 |
import mock |
31 | 31 |
import pytest |
32 |
import utils |
|
33 | 32 |
import xmlschema |
34 | 33 |
from django.core.cache import cache |
35 | 34 | |
35 |
import tests.utils |
|
36 | 36 |
from passerelle.contrib.toulouse_axel import schemas |
37 | 37 |
from passerelle.contrib.toulouse_axel.models import Link, Lock, ToulouseAxel |
38 | 38 |
from passerelle.contrib.toulouse_axel.utils import ( |
... | ... | |
50 | 50 | |
51 | 51 |
@pytest.fixture |
52 | 52 |
def resource(db): |
53 |
return utils.make_resource( |
|
53 |
return tests.utils.make_resource(
|
|
54 | 54 |
ToulouseAxel, slug='test', wsdl_url='http://example.net/AXEL_WS/AxelWS.php?wsdl' |
55 | 55 |
) |
56 | 56 |
tests/test_toulouse_smart.py | ||
---|---|---|
28 | 28 |
import lxml.etree as ET |
29 | 29 |
import mock |
30 | 30 |
import pytest |
31 |
import utils |
|
32 | 31 |
from django.db import connection |
33 | 32 |
from django.db.migrations.executor import MigrationExecutor |
34 | 33 |
from django.utils.encoding import force_text |
35 | 34 |
from requests.exceptions import ReadTimeout |
36 |
from test_manager import login |
|
37 | 35 | |
36 |
import tests.utils |
|
38 | 37 |
from passerelle.base.models import Job |
39 | 38 |
from passerelle.contrib.toulouse_smart.models import ( |
40 | 39 |
SmartRequest, |
... | ... | |
42 | 41 |
WcsRequest, |
43 | 42 |
WcsRequestFile, |
44 | 43 |
) |
44 |
from tests.test_manager import login |
|
45 | 45 | |
46 | 46 |
TEST_BASE_DIR = os.path.join(os.path.dirname(__file__), 'data', 'toulouse_smart') |
47 | 47 | |
... | ... | |
50 | 50 |
def smart(db, settings): |
51 | 51 |
settings.TIME_ZONE = 'Europe/Paris' |
52 | 52 |
settings.USE_TZ = True |
53 |
return utils.make_resource( |
|
53 |
return tests.utils.make_resource(
|
|
54 | 54 |
ToulouseSmartResource, |
55 | 55 |
title='Test', |
56 | 56 |
slug='test', |
... | ... | |
683 | 683 |
@mock.patch('passerelle.utils.RequestSession.request') |
684 | 684 |
@mock.patch("django.db.models.fields.UUIDField.get_default", return_value=UUID) |
685 | 685 |
def test_create_intervention_timeout(mocked_uuid, mocked_get, app, freezer, smart): |
686 |
from utils import FakedResponse |
|
686 |
from tests.utils import FakedResponse
|
|
687 | 687 | |
688 | 688 |
mocked_get.side_effect = [ |
689 | 689 |
FakedResponse( |
tests/test_vivaticket.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
import mock |
3 | 3 |
import pytest |
4 |
import utils |
|
5 | 4 | |
5 |
import tests.utils |
|
6 | 6 |
from passerelle.apps.vivaticket.models import VivaTicket |
7 | 7 |
from passerelle.utils.jsonresponse import APIError |
8 | 8 | |
... | ... | |
216 | 216 | |
217 | 217 |
@pytest.fixture |
218 | 218 |
def connector(db): |
219 |
return utils.setup_access_rights( |
|
219 |
return tests.utils.setup_access_rights(
|
|
220 | 220 |
VivaTicket.objects.create( |
221 | 221 |
slug='test', login='foo', password='bar', url='http://example.net/vivaticket' |
222 | 222 |
) |
... | ... | |
226 | 226 |
@mock.patch('passerelle.utils.Request.post') |
227 | 227 |
def test_get_api_key(mocked_post, app, connector): |
228 | 228 |
with pytest.raises(APIError): |
229 |
mocked_post.return_value = utils.FakedResponse(content=ERROR_RESPONSE, ok=False) |
|
229 |
mocked_post.return_value = tests.utils.FakedResponse(content=ERROR_RESPONSE, ok=False)
|
|
230 | 230 |
connector.get_apikey() |
231 |
mocked_post.return_value = utils.FakedResponse(content=KEY_RESPONSE, ok=True) |
|
231 |
mocked_post.return_value = tests.utils.FakedResponse(content=KEY_RESPONSE, ok=True)
|
|
232 | 232 |
connector.get_apikey() |
233 | 233 |
assert mocked_post.call_count == 2 |
234 | 234 |
assert "Connect/PostConnect" in mocked_post.call_args[0][0] |
... | ... | |
244 | 244 |
@mock.patch('passerelle.utils.Request.post') |
245 | 245 |
@mock.patch('passerelle.utils.Request.get') |
246 | 246 |
def test_get_events(mocked_get, mocked_post, app, connector): |
247 |
mocked_get.return_value = utils.FakedResponse(content=EVENTS_RESPONSE, status_code=200) |
|
248 |
mocked_post.return_value = utils.FakedResponse(content=KEY_RESPONSE, status_code=200) |
|
249 |
result = utils.endpoint_get('/vivaticket/test/events', app, connector, 'events') |
|
247 |
mocked_get.return_value = tests.utils.FakedResponse(content=EVENTS_RESPONSE, status_code=200)
|
|
248 |
mocked_post.return_value = tests.utils.FakedResponse(content=KEY_RESPONSE, status_code=200)
|
|
249 |
result = tests.utils.endpoint_get('/vivaticket/test/events', app, connector, 'events')
|
|
250 | 250 |
assert mocked_post.call_count == 1 |
251 | 251 |
assert mocked_get.call_args[1]['params']['key'] == "86569D0CA1B1CBEF8D77DD5BDC9F5CBAE5C99074" |
252 | 252 |
assert 'data' in result.json |
... | ... | |
258 | 258 |
@mock.patch('passerelle.utils.Request.post') |
259 | 259 |
@mock.patch('passerelle.utils.Request.get') |
260 | 260 |
def test_get_events_with_expired_key(mocked_get, mocked_post, app, connector): |
261 |
mocked_get.return_value = utils.FakedResponse(content=EVENTS_RESPONSE, status_code=401) |
|
262 |
mocked_post.return_value = utils.FakedResponse(content=KEY_RESPONSE, status_code=200) |
|
263 |
utils.endpoint_get('/vivaticket/test/events', app, connector, 'events') |
|
261 |
mocked_get.return_value = tests.utils.FakedResponse(content=EVENTS_RESPONSE, status_code=401)
|
|
262 |
mocked_post.return_value = tests.utils.FakedResponse(content=KEY_RESPONSE, status_code=200)
|
|
263 |
tests.utils.endpoint_get('/vivaticket/test/events', app, connector, 'events')
|
|
264 | 264 |
assert mocked_post.call_count == 2 |
265 | 265 | |
266 | 266 | |
267 | 267 |
@mock.patch('passerelle.utils.Request.post') |
268 | 268 |
@mock.patch('passerelle.utils.Request.get') |
269 | 269 |
def test_get_rooms(mocked_get, mocked_post, app, connector): |
270 |
mocked_get.return_value = utils.FakedResponse(content=ROOMS_RESPONSE, status_code=200) |
|
271 |
mocked_post.return_value = utils.FakedResponse(content=KEY_RESPONSE, status_code=200) |
|
272 |
result = utils.endpoint_get('/vivaticket/test/rooms', app, connector, 'rooms') |
|
270 |
mocked_get.return_value = tests.utils.FakedResponse(content=ROOMS_RESPONSE, status_code=200)
|
|
271 |
mocked_post.return_value = tests.utils.FakedResponse(content=KEY_RESPONSE, status_code=200)
|
|
272 |
result = tests.utils.endpoint_get('/vivaticket/test/rooms', app, connector, 'rooms')
|
|
273 | 273 |
assert mocked_get.call_args[1]['params']['key'] == '86569D0CA1B1CBEF8D77DD5BDC9F5CBAE5C99074' |
274 | 274 |
assert 'data' in result.json |
275 | 275 |
for item in result.json['data']: |
276 | 276 |
assert 'id' in item |
277 | 277 |
assert 'text' in item |
278 |
result = utils.endpoint_get('/vivaticket/test/rooms', app, connector, 'rooms', params={'event': '02'}) |
|
278 |
result = tests.utils.endpoint_get( |
|
279 |
'/vivaticket/test/rooms', app, connector, 'rooms', params={'event': '02'} |
|
280 |
) |
|
279 | 281 |
assert mocked_get.call_args[1]['params']['eventCategory'] == '02' |
280 | 282 | |
281 | 283 | |
282 | 284 |
@mock.patch('passerelle.utils.Request.post') |
283 | 285 |
@mock.patch('passerelle.utils.Request.get') |
284 | 286 |
def test_get_themes(mocked_get, mocked_post, app, connector): |
285 |
mocked_get.return_value = utils.FakedResponse(content=ROOMS_RESPONSE, status_code=200) |
|
286 |
mocked_post.return_value = utils.FakedResponse(content=KEY_RESPONSE, status_code=200) |
|
287 |
result = utils.endpoint_get('/vivaticket/test/themes', app, connector, 'themes') |
|
287 |
mocked_get.return_value = tests.utils.FakedResponse(content=ROOMS_RESPONSE, status_code=200)
|
|
288 |
mocked_post.return_value = tests.utils.FakedResponse(content=KEY_RESPONSE, status_code=200)
|
|
289 |
result = tests.utils.endpoint_get('/vivaticket/test/themes', app, connector, 'themes')
|
|
288 | 290 |
assert mocked_get.call_args[1]['params']['key'] == '86569D0CA1B1CBEF8D77DD5BDC9F5CBAE5C99074' |
289 | 291 |
assert 'data' in result.json |
290 | 292 |
for item in result.json['data']: |
291 | 293 |
assert 'id' in item |
292 | 294 |
assert 'text' in item |
293 |
result = utils.endpoint_get('/vivaticket/test/themes', app, connector, 'themes', params={'room': '001'}) |
|
295 |
result = tests.utils.endpoint_get( |
|
296 |
'/vivaticket/test/themes', app, connector, 'themes', params={'room': '001'} |
|
297 |
) |
|
294 | 298 |
assert mocked_get.call_args[1]['params']['room'] == '001' |
295 | 299 | |
296 | 300 | |
297 | 301 |
@mock.patch('passerelle.utils.Request.post') |
298 | 302 |
@mock.patch('passerelle.utils.Request.get') |
299 | 303 |
def test_get_school_levels(mocked_get, mocked_post, app, connector): |
300 |
mocked_get.return_value = utils.FakedResponse(content=SCHOOL_LEVELS_RESPONSE, status_code=200) |
|
301 |
mocked_post.return_value = utils.FakedResponse(content=KEY_RESPONSE, status_code=200) |
|
302 |
result = utils.endpoint_get('/vivaticket/test/school-levels', app, connector, 'school-levels') |
|
304 |
mocked_get.return_value = tests.utils.FakedResponse(content=SCHOOL_LEVELS_RESPONSE, status_code=200)
|
|
305 |
mocked_post.return_value = tests.utils.FakedResponse(content=KEY_RESPONSE, status_code=200)
|
|
306 |
result = tests.utils.endpoint_get('/vivaticket/test/school-levels', app, connector, 'school-levels')
|
|
303 | 307 |
assert mocked_get.call_args[1]['params']['key'] == '86569D0CA1B1CBEF8D77DD5BDC9F5CBAE5C99074' |
304 | 308 |
assert 'data' in result.json |
305 | 309 |
for item in result.json['data']: |
... | ... | |
311 | 315 |
@mock.patch('passerelle.utils.Request.put') |
312 | 316 |
@mock.patch('passerelle.utils.Request.get') |
313 | 317 |
def test_get_or_create_contact(mocked_get, mocked_put, mocked_post, app, connector): |
314 |
mocked_get.return_value = utils.FakedResponse(content='', ok=False) |
|
318 |
mocked_get.return_value = tests.utils.FakedResponse(content='', ok=False)
|
|
315 | 319 |
mocked_post.side_effect = [ |
316 |
utils.FakedResponse(content=KEY_RESPONSE, status_code=200), |
|
317 |
utils.FakedResponse( |
|
320 |
tests.utils.FakedResponse(content=KEY_RESPONSE, status_code=200),
|
|
321 |
tests.utils.FakedResponse(
|
|
318 | 322 |
content='{"InternalCode": "0000000273", "ReturnCode": 0, "Error": null}', status_code=200 |
319 | 323 |
), |
320 | 324 |
] |
... | ... | |
325 | 329 |
assert mocked_post.call_args[1]['json']['Key'] == '86569D0CA1B1CBEF8D77DD5BDC9F5CBAE5C99074' |
326 | 330 |
assert mocked_post.call_args[1]['json']['Contact']['Email'] == 'foo@example.com' |
327 | 331 |
assert mocked_post.call_args[1]['json']['Contact']['ExternalCode'] == 'b48def645758b95537d4' |
328 |
mocked_post.return_value = utils.FakedResponse( |
|
332 |
mocked_post.return_value = tests.utils.FakedResponse(
|
|
329 | 333 |
content='{"InternalCode": "0000000273", "ReturnCode": 0, "Error": null}', status_code=200 |
330 | 334 |
) |
331 |
mocked_get.return_value = utils.FakedResponse(content=CONTACT_RESPONSE, ok=True) |
|
332 |
mocked_put.return_value = utils.FakedResponse(content='', status_code=204) |
|
335 |
mocked_get.return_value = tests.utils.FakedResponse(content=CONTACT_RESPONSE, ok=True)
|
|
336 |
mocked_put.return_value = tests.utils.FakedResponse(content='', status_code=204)
|
|
333 | 337 |
connector.get_or_create_contact({'email': 'foo@example.com'}) |
334 | 338 |
mocked_put.assert_called() |
335 | 339 |
assert mocked_put.call_args[1]['params']['id'] == '0000000273' |
... | ... | |
341 | 345 |
@mock.patch('passerelle.utils.Request.put') |
342 | 346 |
@mock.patch('passerelle.utils.Request.get') |
343 | 347 |
def test_book(mocked_get, mocked_put, mocked_post, app, connector): |
344 |
mocked_get.return_value = utils.FakedResponse(content=CONTACT_RESPONSE, status_code=200) |
|
345 |
url = utils.generic_endpoint_url('vivaticket', 'book') |
|
348 |
mocked_get.return_value = tests.utils.FakedResponse(content=CONTACT_RESPONSE, status_code=200)
|
|
349 |
url = tests.utils.generic_endpoint_url('vivaticket', 'book')
|
|
346 | 350 |
payload = {'id': 'formid', 'email': 'foo@example.com'} |
347 | 351 |
response = app.post_json(url, params=payload, status=400) |
348 | 352 |
payload['start_datetime'] = '2019-01-15' |
... | ... | |
361 | 365 |
payload['end_datetime'] = '2019-01-15T11:00' |
362 | 366 |
# first return the API key, then the result of the booking creation |
363 | 367 |
mocked_post.side_effect = [ |
364 |
utils.FakedResponse(content=KEY_RESPONSE, status_code=200), |
|
365 |
utils.FakedResponse(content=BOOKING_RESPONSE), |
|
368 |
tests.utils.FakedResponse(content=KEY_RESPONSE, status_code=200),
|
|
369 |
tests.utils.FakedResponse(content=BOOKING_RESPONSE),
|
|
366 | 370 |
Exception(), |
367 | 371 |
] |
368 | 372 |
response = app.post_json(url, params=payload) |
... | ... | |
379 | 383 | |
380 | 384 |
# no more need to fake key response because the key is in cache |
381 | 385 |
mocked_post.side_effect = [ |
382 |
utils.FakedResponse(text='This external booking code already exists.', ok=False) |
|
386 |
tests.utils.FakedResponse(text='This external booking code already exists.', ok=False)
|
|
383 | 387 |
] |
384 | 388 |
response = app.post_json(url, params=payload) |
385 | 389 |
assert response.json['err'] == 1 |
tests/wcs/test_sp_fr.py | ||
---|---|---|
17 | 17 | |
18 | 18 |
import mock |
19 | 19 |
import pytest |
20 |
import utils |
|
21 | 20 | |
21 |
import tests.utils |
|
22 | 22 |
from passerelle.apps.sp_fr.models import Resource |
23 | 23 |
from passerelle.utils.sftp import SFTP |
24 | 24 |
from passerelle.utils.wcs import FormDefRef, get_wcs_choices |
... | ... | |
43 | 43 |
} |
44 | 44 |
} |
45 | 45 |
} |
46 |
yield utils.make_resource( |
|
46 |
yield tests.utils.make_resource(
|
|
47 | 47 |
Resource, |
48 | 48 |
title='Test 1', |
49 | 49 |
slug='test1', |
50 |
- |