grenoble_gru: PEP8ness, code style (#30458)
This commit is contained in:
parent
f581c082a8
commit
ddffadf025
|
@ -42,6 +42,7 @@ RESPONSE_CODES = {
|
|||
'23': _('Demand already exists')
|
||||
}
|
||||
|
||||
|
||||
def xml2dict(element):
|
||||
data = {}
|
||||
for attr in element.keys():
|
||||
|
@ -110,7 +111,8 @@ class GrenobleGRU(BaseResource):
|
|||
|
||||
# comments
|
||||
'obs_demande_urgente': 1 if data.get('urgent_demand') is True else 0,
|
||||
'obs_type_dysfonctionnement': check_value(data, 'dysfonction_type', self.types('//typeDysfonctionnement', True)),
|
||||
'obs_type_dysfonctionnement': check_value(
|
||||
data, 'dysfonction_type', self.types('//typeDysfonctionnement', True)),
|
||||
'obs_motif': check_value(data, 'intervention_reason', self.types('//motif', True)),
|
||||
'obs_description_probleme': data.get('comment_description', ''),
|
||||
}
|
||||
|
@ -138,8 +140,14 @@ class GrenobleGRU(BaseResource):
|
|||
cache.set(cache_key, xml_content, 3600)
|
||||
if as_list:
|
||||
return [el.find('identifiant').text for el in root.xpath(path)]
|
||||
return {'data': [{'id': el.find('identifiant').text, 'text': el.find('libelle').text} for el in root.xpath(path)]}
|
||||
|
||||
return {
|
||||
'data': [
|
||||
{
|
||||
'id': el.find('identifiant').text,
|
||||
'text': el.find('libelle').text
|
||||
} for el in root.xpath(path)
|
||||
]
|
||||
}
|
||||
|
||||
@endpoint(name='contact-modes', perm='can_access', description=_('Lists contact modes'))
|
||||
def contact_modes(self, request, *args, **kwargs):
|
||||
|
@ -185,7 +193,7 @@ class GrenobleGRU(BaseResource):
|
|||
return {'data': 'Demand successfully created'}
|
||||
|
||||
@endpoint(name='demand', perm='can_access', methods=['post'], description=_('Add attachment to a demand'),
|
||||
pattern='(?P<demand_id>[\w-]+)/add-attachment/$',)
|
||||
pattern=r'(?P<demand_id>[\w-]+)/add-attachment/$',)
|
||||
def add_attachment_to_demand(self, request, demand_id, **kwargs):
|
||||
data = json.loads(request.body)
|
||||
if 'file' not in data:
|
||||
|
@ -211,7 +219,7 @@ class GrenobleGRU(BaseResource):
|
|||
return False
|
||||
|
||||
@endpoint(name='demand', perm='can_access', description=_('Get demand'),
|
||||
pattern='(?P<demand_id>[\w-]+)/$')
|
||||
pattern=r'(?P<demand_id>[\w-]+)/$')
|
||||
def get_demand(self, request, demand_id, **kwargs):
|
||||
payload = {'dem_tiers_id': demand_id}
|
||||
response = self.request('ws_get_demande.php', payload)
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
import os
|
||||
import mock
|
||||
import pytest
|
||||
import six
|
||||
|
||||
import utils
|
||||
|
||||
|
@ -28,8 +29,10 @@ from passerelle.contrib.grenoble_gru.models import GrenobleGRU
|
|||
|
||||
@pytest.fixture
|
||||
def setup(db):
|
||||
return utils.setup_access_rights(GrenobleGRU.objects.create(slug='test',
|
||||
base_url='https://itvvoirie-test.lametro.fr'))
|
||||
return utils.setup_access_rights(
|
||||
GrenobleGRU.objects.create(
|
||||
slug='test',
|
||||
base_url='https://itvvoirie-test.lametro.fr'))
|
||||
|
||||
|
||||
BASIC_PAYLOAD = {
|
||||
|
@ -115,32 +118,46 @@ Création de la demande via le webService de la commune de Grenoble
|
|||
|
||||
@pytest.fixture(params=['01', '02', '10', '20', '21', '23', '4242'])
|
||||
def remote_response(request):
|
||||
text = unicode(request.param)
|
||||
text = six.text_type(request.param)
|
||||
return utils.FakedResponse(index=request.param_index, text=text)
|
||||
|
||||
|
||||
def test_contact_mode_typologies_list_with_invalid_xml(app, setup):
|
||||
with mock.patch('passerelle.utils.Request.post') as request_post:
|
||||
response = mock.Mock()
|
||||
types_filename = os.path.join(os.path.dirname(__file__), 'data', 'grenoble_gru_typologies.xml')
|
||||
types = file(types_filename).read()
|
||||
types = open(types_filename).read()
|
||||
response.content = types.replace('Courrier', 'Courrier & autres')
|
||||
request_post.return_value = response
|
||||
endpoint = reverse('generic-endpoint', kwargs={'connector': 'grenoble-gru',
|
||||
'slug': setup.slug, 'endpoint': 'contact-modes'})
|
||||
endpoint = reverse(
|
||||
'generic-endpoint',
|
||||
kwargs={
|
||||
'connector': 'grenoble-gru',
|
||||
'slug': setup.slug,
|
||||
'endpoint': 'contact-modes'
|
||||
}
|
||||
)
|
||||
response = app.get(endpoint)
|
||||
request_post.assert_called_once()
|
||||
assert response.json['err']
|
||||
assert 'Invalid XML returned:' in response.json['err_desc']
|
||||
assert response.json['data'] == None
|
||||
assert response.json['data'] is None
|
||||
|
||||
|
||||
def test_contact_mode_typologies_list(app, setup):
|
||||
with mock.patch('passerelle.utils.Request.post') as request_post:
|
||||
response = mock.Mock()
|
||||
types_filename = os.path.join(os.path.dirname(__file__), 'data', 'grenoble_gru_typologies.xml')
|
||||
response.content = file(types_filename).read()
|
||||
response.content = open(types_filename).read()
|
||||
request_post.return_value = response
|
||||
endpoint = reverse('generic-endpoint', kwargs={'connector': 'grenoble-gru',
|
||||
'slug': setup.slug, 'endpoint': 'contact-modes'})
|
||||
endpoint = reverse(
|
||||
'generic-endpoint',
|
||||
kwargs={
|
||||
'connector': 'grenoble-gru',
|
||||
'slug': setup.slug,
|
||||
'endpoint': 'contact-modes'
|
||||
}
|
||||
)
|
||||
response = app.get(endpoint)
|
||||
request_post.assert_called_once()
|
||||
assert len(response.json['data']) == 6
|
||||
|
@ -156,9 +173,15 @@ def test_contact_mode_typologies_list(app, setup):
|
|||
def test_demand_creation_return_codes(app, setup, remote_response):
|
||||
with mock.patch('passerelle.utils.Request.post') as request_post:
|
||||
request_post.return_value = remote_response
|
||||
response = app.post_json(reverse('generic-endpoint', kwargs={'connector': 'grenoble-gru',
|
||||
'slug': setup.slug, 'endpoint': 'create-demand'}),
|
||||
params=BASIC_PAYLOAD, status=200)
|
||||
response = app.post_json(
|
||||
reverse('generic-endpoint',
|
||||
kwargs={
|
||||
'connector': 'grenoble-gru',
|
||||
'slug': setup.slug,
|
||||
'endpoint': 'create-demand'
|
||||
}),
|
||||
params=BASIC_PAYLOAD,
|
||||
status=200)
|
||||
index = remote_response.index
|
||||
if index == 0:
|
||||
assert response.json['data'] == 'Demand successfully created'
|
||||
|
@ -179,12 +202,17 @@ def test_demand_creation_return_codes(app, setup, remote_response):
|
|||
def test_demand_creation_with_invalid_params(app, setup):
|
||||
invalid_payload = BASIC_PAYLOAD.copy()
|
||||
invalid_payload['applicant_status'] = 42
|
||||
response = app.post_json(reverse('generic-endpoint', kwargs={'connector': 'grenoble-gru',
|
||||
'slug': setup.slug, 'endpoint': 'create-demand'}),
|
||||
params=invalid_payload)
|
||||
response = app.post_json(
|
||||
reverse('generic-endpoint',
|
||||
kwargs={
|
||||
'connector': 'grenoble-gru',
|
||||
'slug': setup.slug,
|
||||
'endpoint': 'create-demand'
|
||||
}),
|
||||
params=invalid_payload)
|
||||
assert response.json['err'] == 1
|
||||
assert 'applicant_status must be one of' in response.json['err_desc']
|
||||
assert response.json['data'] == None
|
||||
assert response.json['data'] is None
|
||||
|
||||
|
||||
def test_demand_creation_params(app, setup):
|
||||
|
@ -192,9 +220,14 @@ def test_demand_creation_params(app, setup):
|
|||
payload = BASIC_PAYLOAD.copy()
|
||||
payload['intervention_free_address'] = u'169, rue du Château'
|
||||
payload['applicant_free_address'] = u'1, rue de l\'Est'
|
||||
response = app.post_json(reverse('generic-endpoint', kwargs={'connector': 'grenoble-gru',
|
||||
'slug': setup.slug, 'endpoint': 'create-demand'}),
|
||||
params=payload)
|
||||
app.post_json(
|
||||
reverse('generic-endpoint',
|
||||
kwargs={
|
||||
'connector': 'grenoble-gru',
|
||||
'slug': setup.slug,
|
||||
'endpoint': 'create-demand'
|
||||
}),
|
||||
params=payload)
|
||||
assert request_post.call_args[1]['data']['int_adresse_manuelle'] == u'169, rue du Château'
|
||||
assert request_post.call_args[1]['data']['dem_adresse_manuelle'] == u'1, rue de l\'Est'
|
||||
assert request_post.call_args[1]['data']['obs_demande_urgente'] == 0
|
||||
|
@ -203,9 +236,16 @@ def test_demand_creation_params(app, setup):
|
|||
payload['applicant_requires_reply'] = True
|
||||
payload['urgent_demand'] = True
|
||||
|
||||
response = app.post_json(reverse('generic-endpoint', kwargs={'connector': 'grenoble-gru',
|
||||
'slug': setup.slug, 'endpoint': 'create-demand'}),
|
||||
params=payload, status=200)
|
||||
app.post_json(
|
||||
reverse(
|
||||
'generic-endpoint',
|
||||
kwargs={
|
||||
'connector': 'grenoble-gru',
|
||||
'slug': setup.slug,
|
||||
'endpoint': 'create-demand'
|
||||
}),
|
||||
params=payload,
|
||||
status=200)
|
||||
assert request_post.call_args[1]['data']['obs_demande_urgente'] == 1
|
||||
assert request_post.call_args[1]['data']['dem_reponse'] == 1
|
||||
|
||||
|
@ -215,17 +255,26 @@ def test_add_attachment_to_demand(app, setup):
|
|||
response = mock.Mock()
|
||||
response.content = '01'
|
||||
request_post.return_value = response
|
||||
endpoint = reverse('generic-endpoint', kwargs={'connector': 'grenoble-gru',
|
||||
'slug': setup.slug, 'endpoint': 'demand', 'rest': '42-42/add-attachment/'})
|
||||
endpoint = reverse(
|
||||
'generic-endpoint',
|
||||
kwargs={
|
||||
'connector': 'grenoble-gru',
|
||||
'slug': setup.slug,
|
||||
'endpoint': 'demand',
|
||||
'rest': '42-42/add-attachment/'
|
||||
})
|
||||
payload = {'file': 'test.jpg'}
|
||||
response = app.post_json(endpoint, params=payload, status=200)
|
||||
assert response.json['data'] == None
|
||||
assert response.json['data'] is None
|
||||
assert response.json['err'] == 1
|
||||
assert response.json['err_desc'] == 'file should be a dict'
|
||||
file_b64_content = '/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEPERETFh'
|
||||
payload['file' ] = {'content_type': 'image/jpg', 'filename': 'photo.jpg'}
|
||||
payload['file'] = {
|
||||
'content_type': 'image/jpg',
|
||||
'filename': 'photo.jpg'
|
||||
}
|
||||
response = app.post_json(endpoint, params=payload, status=400)
|
||||
assert response.json['data'] == None
|
||||
assert response.json['data'] is None
|
||||
assert response.json['err'] == 1
|
||||
assert response.json['err_desc'] == 'missing parameters: \'file[content]\'.'
|
||||
payload['file']['content'] = file_b64_content
|
||||
|
@ -233,8 +282,8 @@ def test_add_attachment_to_demand(app, setup):
|
|||
assert request_post.call_args[1]['data']['dem_tiers_id'] == '42-42'
|
||||
assert 'filename=photo.jpg' in request_post.call_args[1]['data']['piece_jointe']
|
||||
assert 'filetype=image%2Fjpg' in request_post.call_args[1]['data']['piece_jointe']
|
||||
assert 'filecontent=%2F9j%2F4AAQSkZJRgABAQAAAQABAAD%2F2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEPERETFh' in request_post.call_args[1]['data']['piece_jointe']
|
||||
|
||||
assert ('filecontent=%2F9j%2F4AAQSkZJRgABAQAAAQABAAD%2F2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEPERETFh'
|
||||
in request_post.call_args[1]['data']['piece_jointe'])
|
||||
|
||||
|
||||
def test_get_demand(app, setup):
|
||||
|
@ -242,8 +291,15 @@ def test_get_demand(app, setup):
|
|||
response = mock.Mock()
|
||||
response.content = DEMAND.replace('\n', '')
|
||||
request_post.return_value = response
|
||||
response = app.get(reverse('generic-endpoint', kwargs={'connector': 'grenoble-gru',
|
||||
'slug': setup.slug, 'endpoint': 'demand', 'rest': '42-42/'}))
|
||||
response = app.get(
|
||||
reverse('generic-endpoint',
|
||||
kwargs={
|
||||
'connector': 'grenoble-gru',
|
||||
'slug': setup.slug,
|
||||
'endpoint': 'demand',
|
||||
'rest': '42-42/'
|
||||
})
|
||||
)
|
||||
assert request_post.call_args[1]['data']['dem_tiers_id'] == '42-42'
|
||||
demand = response.json['data']
|
||||
assert 'IdGRU' in demand
|
||||
|
@ -257,9 +313,16 @@ def test_get_demand_with_invalid_xml(app, setup):
|
|||
response = mock.Mock()
|
||||
response.content = DEMAND.replace('\n', '').replace('de Grenoble', '& Grenoble')
|
||||
request_post.return_value = response
|
||||
response = app.get(reverse('generic-endpoint', kwargs={'connector': 'grenoble-gru',
|
||||
'slug': setup.slug, 'endpoint': 'demand', 'rest': '42-42/'}))
|
||||
response = app.get(
|
||||
reverse('generic-endpoint',
|
||||
kwargs={
|
||||
'connector': 'grenoble-gru',
|
||||
'slug': setup.slug,
|
||||
'endpoint': 'demand',
|
||||
'rest': '42-42/'
|
||||
})
|
||||
)
|
||||
assert request_post.call_args[1]['data']['dem_tiers_id'] == '42-42'
|
||||
assert response.json['err']
|
||||
assert 'Invalid XML returned:' in response.json['err_desc']
|
||||
assert response.json['data'] == None
|
||||
assert response.json['data'] is None
|
||||
|
|
Loading…
Reference in New Issue