atal: get status fom eAtal and Atal (#35181)
This commit is contained in:
parent
18b3a6bf5f
commit
40c759e6e6
|
@ -157,6 +157,21 @@ class ATALConnector(BaseResource):
|
|||
)
|
||||
return process_response(demande_number)
|
||||
|
||||
@endpoint(
|
||||
methods=['get'], perm='can_access', example_pattern='{demande_number}/',
|
||||
pattern='^(?P<demande_number>\w+)/$', name='retrieve-details-demande',
|
||||
parameters={
|
||||
'demande_number': {
|
||||
'description': _('Demande number'), 'example_value': 'DIT18050001'
|
||||
}
|
||||
}
|
||||
)
|
||||
def retrieve_details_demande(self, request, demande_number):
|
||||
soap_res = self._soap_call(
|
||||
wsdl='DemandeService', method='retrieveDetailsDemande',
|
||||
demandeNumberParam=demande_number)
|
||||
return {'data': helpers.serialize_object(soap_res)}
|
||||
|
||||
@endpoint(
|
||||
methods=['get'], perm='can_access', example_pattern='{demande_number}/',
|
||||
pattern='^(?P<demande_number>\w+)/$', name='retrieve-etat-travaux',
|
||||
|
@ -172,6 +187,43 @@ class ATALConnector(BaseResource):
|
|||
numero=demande_number)
|
||||
return {'data': helpers.serialize_object(soap_res)}
|
||||
|
||||
@endpoint(
|
||||
methods=['get'], perm='can_access', example_pattern='{demande_number}/',
|
||||
pattern='^(?P<demande_number>\w+)/$', name='status',
|
||||
parameters={
|
||||
'demande_number': {
|
||||
'description': _('Demande number'), 'example_value': 'DIT18050001'
|
||||
}
|
||||
}
|
||||
)
|
||||
def status(self, request, demande_number):
|
||||
soap_res = self._soap_call(
|
||||
wsdl='DemandeService', method='retrieveDetailsDemande',
|
||||
demandeNumberParam=demande_number)
|
||||
status = helpers.serialize_object(soap_res).get('etatDemande', {}).get('description')
|
||||
if not status:
|
||||
raise APIError('Could not get a status')
|
||||
|
||||
if status != 'PRISE EN COMPTE':
|
||||
return {
|
||||
'data': {
|
||||
'status': status
|
||||
}
|
||||
}
|
||||
|
||||
soap_res = self._soap_call(
|
||||
wsdl='DemandeService', method='retrieveEtatTravaux',
|
||||
numero=demande_number
|
||||
)
|
||||
status = helpers.serialize_object(soap_res).get('libelle')
|
||||
if not status:
|
||||
raise APIError('Could not get a status')
|
||||
return {
|
||||
'data': {
|
||||
'status': status
|
||||
}
|
||||
}
|
||||
|
||||
@endpoint(
|
||||
perm='can_access',
|
||||
post={
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,2 @@
|
|||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><ns1:retrieveDetailsDemandeResponse xmlns:ns1="http://localhost/awa/services/DemandeService"><ns1:detailsDemandeRetrieved><codeDemande xmlns="http://demande.services.awa.aductis.com">13154</codeDemande><commentairesDestinataires xmlns="http://demande.services.awa.aductis.com"></commentairesDestinataires><demandeur xmlns="http://demande.services.awa.aductis.com"><SAutoriserChangementMdp xmlns="http://utilisateur.dto.commun.awa.aductis.com" xsi:nil="true" /><SAutoriserChangementRepondeur xmlns="http://utilisateur.dto.commun.awa.aductis.com" xsi:nil="true" /><SDesactiverRepondeurAuto xmlns="http://utilisateur.dto.commun.awa.aductis.com" xsi:nil="true" /><SFactif xmlns="http://utilisateur.dto.commun.awa.aductis.com" xsi:nil="true" /><SNotificationMail xmlns="http://utilisateur.dto.commun.awa.aductis.com" xsi:nil="true" /><activerRepondeurAuto xmlns="http://utilisateur.dto.commun.awa.aductis.com">false</activerRepondeurAuto><allImputations xmlns="http://utilisateur.dto.commun.awa.aductis.com" xsi:nil="true" /><allSalles xmlns="http://utilisateur.dto.commun.awa.aductis.com" xsi:nil="true" /><allServicesDemandeur xmlns="http://utilisateur.dto.commun.awa.aductis.com" xsi:nil="true" /><allServicesExecutant xmlns="http://utilisateur.dto.commun.awa.aductis.com" xsi:nil="true" /><allServicesGestionnaires xmlns="http://utilisateur.dto.commun.awa.aductis.com" xsi:nil="true" /><allVehicules xmlns="http://utilisateur.dto.commun.awa.aductis.com" xsi:nil="true" /><autoriserChangementLanguage xmlns="http://utilisateur.dto.commun.awa.aductis.com">false</autoriserChangementLanguage><autoriserChangementMdp xmlns="http://utilisateur.dto.commun.awa.aductis.com">false</autoriserChangementMdp><autoriserChangementPreferenceRecap xmlns="http://utilisateur.dto.commun.awa.aductis.com">false</autoriserChangementPreferenceRecap><autoriserChangementRepondeur xmlns="http://utilisateur.dto.commun.awa.aductis.com">false</autoriserChangementRepondeur><config xmlns="http://utilisateur.dto.commun.awa.aductis.com" xsi:nil="true" /><dateDerniereVisite xmlns="http://utilisateur.dto.commun.awa.aductis.com">2019-07-25T09:28:47+02:00</dateDerniereVisite><displayChart xmlns="http://utilisateur.dto.commun.awa.aductis.com" xsi:nil="true" /><droits xmlns="http://utilisateur.dto.commun.awa.aductis.com" /><email xmlns="http://utilisateur.dto.commun.awa.aductis.com">jean.delgoleto@berger-levrault.com</email><emails xmlns="http://utilisateur.dto.commun.awa.aductis.com"><ns1:string>jean.delgoleto@berger-levrault.com</ns1:string></emails><enSession xmlns="http://utilisateur.dto.commun.awa.aductis.com">false</enSession><factif xmlns="http://utilisateur.dto.commun.awa.aductis.com">true</factif><fax xmlns="http://utilisateur.dto.commun.awa.aductis.com"></fax><group xmlns="http://utilisateur.dto.commun.awa.aductis.com">false</group><groupId xmlns="http://utilisateur.dto.commun.awa.aductis.com">0</groupId><homePreference xmlns="http://utilisateur.dto.commun.awa.aductis.com">0</homePreference><id xmlns="http://utilisateur.dto.commun.awa.aductis.com">22</id><langue xmlns="http://utilisateur.dto.commun.awa.aductis.com">1</langue><login xmlns="http://utilisateur.dto.commun.awa.aductis.com">GRC</login><mdp xmlns="http://utilisateur.dto.commun.awa.aductis.com" xsi:nil="true" /><nbAdmin xmlns="http://utilisateur.dto.commun.awa.aductis.com">0</nbAdmin><nbDemandeurs xmlns="http://utilisateur.dto.commun.awa.aductis.com">0</nbDemandeurs><nbGest xmlns="http://utilisateur.dto.commun.awa.aductis.com">0</nbGest><nbManagers xmlns="http://utilisateur.dto.commun.awa.aductis.com">0</nbManagers><nom xmlns="http://utilisateur.dto.commun.awa.aductis.com">GRC</nom><notificationMail xmlns="http://utilisateur.dto.commun.awa.aductis.com">true</notificationMail><nouveauCompte xmlns="http://utilisateur.dto.commun.awa.aductis.com">false</nouveauCompte><preferenceRecap xmlns="http://utilisateur.dto.commun.awa.aductis.com">false</preferenceRecap><selectedEquipTypes xmlns="http://utilisateur.dto.commun.awa.aductis.com" xsi:nil="true" /><serviceDemandeur xmlns="http://utilisateur.dto.commun.awa.aductis.com"><FDemandeur xmlns="http://service.dto.commun.awa.aductis.com">true</FDemandeur><FDestinataire xmlns="http://service.dto.commun.awa.aductis.com">false</FDestinataire><FExecutant xmlns="http://service.dto.commun.awa.aductis.com">false</FExecutant><FInterne xmlns="http://service.dto.commun.awa.aductis.com">false</FInterne><adresse xmlns="http://service.dto.commun.awa.aductis.com" xsi:nil="true" /><adresseFacturation xmlns="http://service.dto.commun.awa.aductis.com" xsi:nil="true" /><codeService xmlns="http://service.dto.commun.awa.aductis.com">637</codeService><codeServicePere
|
||||
xmlns="http://service.dto.commun.awa.aductis.com" xsi:nil="true" /><codeTypeService xmlns="http://service.dto.commun.awa.aductis.com">128</codeTypeService><collectivite xmlns="http://service.dto.commun.awa.aductis.com" xsi:nil="true" /><droitHabillement xmlns="http://service.dto.commun.awa.aductis.com">0.0</droitHabillement><droitMateriel xmlns="http://service.dto.commun.awa.aductis.com">0.0</droitMateriel><droitOutillage xmlns="http://service.dto.commun.awa.aductis.com">0.0</droitOutillage><libelle xmlns="http://service.dto.commun.awa.aductis.com">Administrés</libelle><libelleComplet xmlns="http://service.dto.commun.awa.aductis.com">Administrés</libelleComplet><libelleSimple xmlns="http://service.dto.commun.awa.aductis.com">Administrés</libelleSimple><modeGestion xmlns="http://service.dto.commun.awa.aductis.com">0</modeGestion><natureService xmlns="http://service.dto.commun.awa.aductis.com">0</natureService><numeroService xmlns="http://service.dto.commun.awa.aductis.com" xsi:nil="true" /><quota xmlns="http://service.dto.commun.awa.aductis.com">0.0</quota><responsable xmlns="http://service.dto.commun.awa.aductis.com" xsi:nil="true" /><tierParent xmlns="http://service.dto.commun.awa.aductis.com" xsi:nil="true" /><typeQuota xmlns="http://service.dto.commun.awa.aductis.com">0</typeQuota><typeTiers xmlns="http://service.dto.commun.awa.aductis.com">128</typeTiers></serviceDemandeur><serviceLevel xmlns="http://utilisateur.dto.commun.awa.aductis.com">2</serviceLevel><telephone xmlns="http://utilisateur.dto.commun.awa.aductis.com">+33664847804</telephone><type xmlns="http://utilisateur.dto.commun.awa.aductis.com"><codeRole xmlns="http://role.dto.commun.awa.aductis.com">3</codeRole><description xmlns="http://role.dto.commun.awa.aductis.com">Gestionnaire</description><name xmlns="http://role.dto.commun.awa.aductis.com">TYPE_USER_GEST</name><nomCle xmlns="http://role.dto.commun.awa.aductis.com">user.role.gestionnaire</nomCle><roleLevel xmlns="http://role.dto.commun.awa.aductis.com">1</roleLevel><typeRole xmlns="http://role.dto.commun.awa.aductis.com">3</typeRole></type><typeAcces xmlns="http://utilisateur.dto.commun.awa.aductis.com">0</typeAcces><typesEquipements xmlns="http://utilisateur.dto.commun.awa.aductis.com" /><userDn xmlns="http://utilisateur.dto.commun.awa.aductis.com" xsi:nil="true" /><uuid xmlns="http://utilisateur.dto.commun.awa.aductis.com" xsi:nil="true" /></demandeur><etatDemande xmlns="http://demande.services.awa.aductis.com"><codeEtatDemande xmlns="http://etat.dto.commun.awa.aductis.com">0</codeEtatDemande><codeEtatTraitementDemande xmlns="http://etat.dto.commun.awa.aductis.com">1</codeEtatTraitementDemande><description xmlns="http://etat.dto.commun.awa.aductis.com">%s</description><typeEtatDemande xmlns="http://etat.dto.commun.awa.aductis.com">2</typeEtatDemande></etatDemande><numeroDemande xmlns="http://demande.services.awa.aductis.com">DIT19080001</numeroDemande><objetDemande xmlns="http://demande.services.awa.aductis.com">Test entrouvert</objetDemande><operateur xmlns="http://demande.services.awa.aductis.com" xsi:nil="true" /><reponses xmlns="http://demande.services.awa.aductis.com" /></ns1:detailsDemandeRetrieved></ns1:retrieveDetailsDemandeResponse></soap:Body></soap:Envelope>
|
|
@ -0,0 +1 @@
|
|||
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><ns1:retrieveEtatTravauxResponse xmlns:ns1="http://localhost/awa/services/DemandeService"><ns1:etatTravaux><commentaires xmlns="http://demande.services.awa.aductis.com"></commentaires><id xmlns="http://demande.services.awa.aductis.com">2</id><libelle xmlns="http://demande.services.awa.aductis.com">%s</libelle></ns1:etatTravaux></ns1:retrieveEtatTravauxResponse></soap:Body></soap:Envelope>
|
|
@ -1,4 +1,7 @@
|
|||
# coding: utf-8
|
||||
|
||||
import base64
|
||||
import os
|
||||
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
import mock
|
||||
|
@ -8,6 +11,16 @@ from passerelle.apps.atal.models import ATALConnector
|
|||
from passerelle.base.models import ApiUser, AccessRight
|
||||
|
||||
|
||||
def get_file(filename):
|
||||
with open(
|
||||
os.path.join(
|
||||
os.path.dirname(__file__), 'data', 'atal', filename
|
||||
),
|
||||
'r'
|
||||
) as f:
|
||||
return f.read()
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def connector(db):
|
||||
api = ApiUser.objects.create(username='all', keytype='', key='')
|
||||
|
@ -145,3 +158,79 @@ def test_upload(app, connector, monkeypatch):
|
|||
'err_class': 'passerelle.utils.jsonresponse.APIError',
|
||||
'err_desc': 'Invalid base64 string'
|
||||
}
|
||||
|
||||
|
||||
def test_retrieve_details_demande(app, connector, monkeypatch):
|
||||
import passerelle.utils
|
||||
|
||||
wsdl_response = mock.Mock(
|
||||
content=get_file('DemandeService.wsdl'), status_code=200,
|
||||
headers={'Content-Type': 'text/xml'}
|
||||
)
|
||||
monkeypatch.setattr(passerelle.utils.Request, 'get', mock.Mock(return_value=wsdl_response))
|
||||
|
||||
api_response = mock.Mock(
|
||||
content=get_file('details_demande_response.xml') % 'EN ATTENTE', status_code=200,
|
||||
headers={'Content-Type': 'text/xml'}
|
||||
)
|
||||
monkeypatch.setattr(passerelle.utils.Request, 'post', mock.Mock(return_value=api_response))
|
||||
|
||||
response = app.get('/atal/slug-atal/retrieve-details-demande/DIT18050001/')
|
||||
assert response.json['err'] == 0
|
||||
assert response.json['data']['etatDemande']['description'] == 'EN ATTENTE'
|
||||
|
||||
|
||||
def test_retrieve_etat_travaux(app, connector, monkeypatch):
|
||||
import passerelle.utils
|
||||
|
||||
wsdl_response = mock.Mock(
|
||||
content=get_file('DemandeService.wsdl'), status_code=200,
|
||||
headers={'Content-Type': 'text/xml'}
|
||||
)
|
||||
monkeypatch.setattr(passerelle.utils.Request, 'get', mock.Mock(return_value=wsdl_response))
|
||||
|
||||
api_response = mock.Mock(
|
||||
content=get_file('etat_travaux_response.xml') % u'travaux pas commencés', status_code=200,
|
||||
headers={'Content-Type': 'text/xml'}
|
||||
)
|
||||
monkeypatch.setattr(passerelle.utils.Request, 'post', mock.Mock(return_value=api_response))
|
||||
|
||||
response = app.get('/atal/slug-atal/retrieve-etat-travaux/DIT18050001/')
|
||||
assert response.json['err'] == 0
|
||||
assert response.json['data']['libelle'] == u'travaux pas commencés'
|
||||
|
||||
|
||||
def test_status(app, connector, monkeypatch):
|
||||
import passerelle.utils
|
||||
|
||||
wsdl_response = mock.Mock(
|
||||
content=get_file('DemandeService.wsdl'), status_code=200,
|
||||
headers={'Content-Type': 'text/xml'}
|
||||
)
|
||||
monkeypatch.setattr(passerelle.utils.Request, 'get', mock.Mock(return_value=wsdl_response))
|
||||
|
||||
api_response = mock.Mock(
|
||||
content=get_file('details_demande_response.xml') % 'EN ATTENTE', status_code=200,
|
||||
headers={'Content-Type': 'text/xml'}
|
||||
)
|
||||
monkeypatch.setattr(passerelle.utils.Request, 'post', mock.Mock(return_value=api_response))
|
||||
response = app.get('/atal/slug-atal/status/DIT18050001/')
|
||||
|
||||
assert response.json['err'] == 0
|
||||
assert response.json['data']['status'] == u'EN ATTENTE'
|
||||
|
||||
api_response1 = mock.Mock(
|
||||
content=get_file('details_demande_response.xml') % 'PRISE EN COMPTE', status_code=200,
|
||||
headers={'Content-Type': 'text/xml'}
|
||||
)
|
||||
api_response2 = mock.Mock(
|
||||
content=get_file('etat_travaux_response.xml') % u'travaux pas commencés', status_code=200,
|
||||
headers={'Content-Type': 'text/xml'}
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
passerelle.utils.Request, 'post', mock.Mock(side_effect=[api_response1, api_response2])
|
||||
)
|
||||
|
||||
response = app.get('/atal/slug-atal/status/DIT18050001/')
|
||||
assert response.json['err'] == 0
|
||||
assert response.json['data']['status'] == u'travaux pas commencés'
|
||||
|
|
Loading…
Reference in New Issue