Projet

Général

Profil

0001-astregs-return-only-valid-mobile-number-in-linking-m.patch

Voir les différences:

Subject: [PATCH] astregs: return only valid mobile number in linking means
 (#35641)

 passerelle/apps/astregs/models.py             | 10 +++---
 tests/data/astregs/Contact.xml                |  2 +-
 tests/data/astregs/ContactWithWrongMobile.xml |  1 +
 tests/test_astregs.py                         | 32 +++++++++++++++----
 4 files changed, 34 insertions(+), 11 deletions(-)
 create mode 100644 tests/data/astregs/ContactWithWrongMobile.xml
passerelle/apps/astregs/models.py
399 399
                         'value': r.AdresseMail,
400 400
                         'type': 'email'})
401 401
        if r.TelephoneMobile:
402
            data.append({'id': 'mobile',
403
                         'text': 'par SMS vers %s****%s' % (r.TelephoneMobile[:2], r.TelephoneMobile[-3:]),
404
                         'value': r.TelephoneMobile,
405
                         'type': 'mobile'})
402
            mobile = ''.join((n for n in r.TelephoneMobile if n.isdigit()))
403
            if mobile and mobile[:2] in ('06', '07'):
404
                data.append({'id': 'mobile',
405
                             'text': 'par SMS vers %s****%s' % (mobile[:2], mobile[-3:]),
406
                             'value': mobile,
407
                             'type': 'mobile'})
406 408
        response['data'] = data
407 409
        return response
408 410

  
tests/data/astregs/Contact.xml
1
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns1:chargementResponse xmlns:ns1="http://gfi.astre.webservices/rf/gf/contact"><ns1:response><ns1:ContactReturn><ns1:idContact>13012</ns1:idContact><ns1:CodeContact>AS173957</ns1:CodeContact><ns1:CodeTitreCivilite>035</ns1:CodeTitreCivilite><ns1:Nom>MARTIN</ns1:Nom><ns1:Prenom>Jean-Marc</ns1:Prenom><ns1:NomDeJeuneFille></ns1:NomDeJeuneFille><ns1:DateDeNaissance></ns1:DateDeNaissance><ns1:FormuleCivilite></ns1:FormuleCivilite><ns1:IntituleTitre2></ns1:IntituleTitre2><ns1:IntituleTitre3></ns1:IntituleTitre3><ns1:IntituleTitre4>Président de l&amp;#39;</ns1:IntituleTitre4><ns1:SituationDeFamille></ns1:SituationDeFamille><ns1:CodeFonction></ns1:CodeFonction><ns1:LibelleFonction></ns1:LibelleFonction><ns1:TelephoneBureau></ns1:TelephoneBureau><ns1:TelephoneMobile>0660909980</ns1:TelephoneMobile><ns1:NumeroDeFax></ns1:NumeroDeFax><ns1:AdresseMail>jeanmarcallan@neuf.fr</ns1:AdresseMail><ns1:PageWeb></ns1:PageWeb><ns1:AdresseDestinataire>Jean-Marc MARTIN</ns1:AdresseDestinataire><ns1:AdresseComplementaire></ns1:AdresseComplementaire><ns1:ComplementGeographique></ns1:ComplementGeographique><ns1:RueVoie>271 chemin de Curnier</ns1:RueVoie><ns1:ComplementVoie></ns1:ComplementVoie><ns1:CodePostal>06750</ns1:CodePostal><ns1:Ville>SERANON</ns1:Ville><ns1:CodePays>FR</ns1:CodePays><ns1:LibellePays>France</ns1:LibellePays><ns1:LibelleAdresse>SIEGE SOCIAL</ns1:LibelleAdresse><ns1:Commentaire></ns1:Commentaire></ns1:ContactReturn></ns1:response></ns1:chargementResponse></soapenv:Body></soapenv:Envelope>
1
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns1:chargementResponse xmlns:ns1="http://gfi.astre.webservices/rf/gf/contact"><ns1:response><ns1:ContactReturn><ns1:idContact>13012</ns1:idContact><ns1:CodeContact>AS173957</ns1:CodeContact><ns1:CodeTitreCivilite>035</ns1:CodeTitreCivilite><ns1:Nom>FOO</ns1:Nom><ns1:Prenom>Foo-Marc</ns1:Prenom><ns1:NomDeJeuneFille></ns1:NomDeJeuneFille><ns1:DateDeNaissance></ns1:DateDeNaissance><ns1:FormuleCivilite></ns1:FormuleCivilite><ns1:IntituleTitre2></ns1:IntituleTitre2><ns1:IntituleTitre3></ns1:IntituleTitre3><ns1:IntituleTitre4>Président de l&amp;#39;</ns1:IntituleTitre4><ns1:SituationDeFamille></ns1:SituationDeFamille><ns1:CodeFonction></ns1:CodeFonction><ns1:LibelleFonction></ns1:LibelleFonction><ns1:TelephoneBureau></ns1:TelephoneBureau><ns1:TelephoneMobile>06 67 78 89 90</ns1:TelephoneMobile><ns1:NumeroDeFax></ns1:NumeroDeFax><ns1:AdresseMail>foo@example.com</ns1:AdresseMail><ns1:PageWeb></ns1:PageWeb><ns1:AdresseDestinataire>Foo FOO</ns1:AdresseDestinataire><ns1:AdresseComplementaire></ns1:AdresseComplementaire><ns1:ComplementGeographique></ns1:ComplementGeographique><ns1:RueVoie>271 chemin de Curnier</ns1:RueVoie><ns1:ComplementVoie></ns1:ComplementVoie><ns1:CodePostal>06750</ns1:CodePostal><ns1:Ville>SERANON</ns1:Ville><ns1:CodePays>FR</ns1:CodePays><ns1:LibellePays>France</ns1:LibellePays><ns1:LibelleAdresse>SIEGE SOCIAL</ns1:LibelleAdresse><ns1:Commentaire></ns1:Commentaire></ns1:ContactReturn></ns1:response></ns1:chargementResponse></soapenv:Body></soapenv:Envelope>
tests/data/astregs/ContactWithWrongMobile.xml
1
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns1:chargementResponse xmlns:ns1="http://gfi.astre.webservices/rf/gf/contact"><ns1:response><ns1:ContactReturn><ns1:idContact>13012</ns1:idContact><ns1:CodeContact>AS173957</ns1:CodeContact><ns1:CodeTitreCivilite>035</ns1:CodeTitreCivilite><ns1:Nom>Bar</ns1:Nom><ns1:Prenom></ns1:Prenom><ns1:NomDeJeuneFille></ns1:NomDeJeuneFille><ns1:DateDeNaissance></ns1:DateDeNaissance><ns1:FormuleCivilite></ns1:FormuleCivilite><ns1:IntituleTitre2></ns1:IntituleTitre2><ns1:IntituleTitre3></ns1:IntituleTitre3><ns1:IntituleTitre4>Président de l&amp;#39;</ns1:IntituleTitre4><ns1:SituationDeFamille></ns1:SituationDeFamille><ns1:CodeFonction></ns1:CodeFonction><ns1:LibelleFonction></ns1:LibelleFonction><ns1:TelephoneBureau></ns1:TelephoneBureau><ns1:TelephoneMobile>FE 01 02 90 AB</ns1:TelephoneMobile><ns1:NumeroDeFax></ns1:NumeroDeFax><ns1:AdresseMail>foo@example.com</ns1:AdresseMail><ns1:PageWeb></ns1:PageWeb><ns1:AdresseDestinataire>Foo-Marc</ns1:AdresseDestinataire><ns1:AdresseComplementaire></ns1:AdresseComplementaire><ns1:ComplementGeographique></ns1:ComplementGeographique><ns1:RueVoie>271 chemin de Curnier</ns1:RueVoie><ns1:ComplementVoie></ns1:ComplementVoie><ns1:CodePostal>06750</ns1:CodePostal><ns1:Ville>SERANON</ns1:Ville><ns1:CodePays>FR</ns1:CodePays><ns1:LibellePays>France</ns1:LibellePays><ns1:LibelleAdresse>SIEGE SOCIAL</ns1:LibelleAdresse><ns1:Commentaire></ns1:Commentaire></ns1:ContactReturn></ns1:response></ns1:chargementResponse></soapenv:Body></soapenv:Envelope>
tests/test_astregs.py
130 130
    resp = app.get('/astregs/test/get-association-link-means', params={'association_id': '42'})
131 131
    assert len(resp.json['data']) == 2
132 132
    assert resp.json['already_paired'] == False
133
    for result in resp.json['data']:
134
        assert 'id' in result
135
        assert 'text' in result
136
        assert 'type' in result
137
        assert 'value' in result
133
    assert resp.json['data'][0] == {
134
        'id': 'email',
135
        'text': 'par courriel vers fo***@***com',
136
        'value': 'foo@example.com',
137
        'type': 'email'
138
    }
139
    assert resp.json['data'][1] == {
140
        'id': 'mobile',
141
        'text': 'par SMS vers 06****990',
142
        'value': '0667788990',
143
        'type': 'mobile'
144
    }
138 145

  
139 146
    Link.objects.create(name_id='user_name_id', association_id='42', resource=connector)
140 147
    resp = app.get('/astregs/test/get-association-link-means',
141 148
                   params={'association_id': '42', 'NameID': 'user_name_id'})
142 149
    assert resp.json['already_paired'] == True
143 150

  
144

  
151
    mocked_post.side_effect = [
152
        mock.Mock(content=get_xml_file('Tiers.xml'), status_code=200,
153
                  headers={'Content-Type': 'text/xml'}),
154
        mock.Mock(content=get_xml_file('ContactWithWrongMobile.xml'),
155
                  status_code=200, headers={'Content-Type': 'text/xml'})
156
    ]
157
    resp = app.get('/astregs/test/get-association-link-means', params={'association_id': '42'})
158
    assert len(resp.json['data']) == 1
159
    assert resp.json['data'][0] == {
160
        'id': 'email',
161
        'text': 'par courriel vers fo***@***com',
162
        'value': 'foo@example.com',
163
        'type': 'email'
164
    }
145 165

  
146 166
@mock.patch('passerelle.utils.Request.get', side_effect=search_wsdl_side_effect)
147 167
@mock.patch('passerelle.utils.Request.post', side_effect=contact_search_side_effect)
148
-