59 |
59 |
}
|
60 |
60 |
]
|
61 |
61 |
|
|
62 |
BIRTH_ASSERTIONS = {
|
|
63 |
'identifiant': 'N201610154',
|
|
64 |
'demandeur.qualiteDemandeur': 'concerne',
|
|
65 |
'demandeur.individu.noms.nomDeFamille': 'Whatever',
|
|
66 |
'demandeur.individu.prenoms': 'Kim Chelsea',
|
|
67 |
'demandeur.individu.adresse.ligneAdr1': "37 Rue de l'Aigle Blanc",
|
|
68 |
'demandeur.individu.adresse.codePostal': 54000,
|
|
69 |
'demandeur.individu.adresse.lieu.ville': 'Nancy',
|
|
70 |
'demandeur.individu.adresse.lieu.pays': 'France',
|
|
71 |
'demandeur.individu.adresse.mail': 'chelsea@whatever.com',
|
|
72 |
'natureDocument': 'CPI', 'nbExemplaire': 1,
|
|
73 |
'dateDemande': '2016-10-20T14:41:20Z',
|
|
74 |
'evenement.natureEvenement': 'NAI',
|
|
75 |
'evenement.dateEvenement.dateDebut': '2012-07-14',
|
|
76 |
'evenement.lieuEvenement.ville': 'Nancy',
|
|
77 |
'evenement.interesse.pere.noms.nomDeFamille': 'Smith',
|
|
78 |
'evenement.interesse.pere.prenoms': 'John Oliver',
|
|
79 |
'evenement.interesse.mere.noms.nomDeFamille': 'Smith',
|
|
80 |
'evenement.interesse.mere.prenoms': 'Kim',
|
|
81 |
}
|
|
82 |
|
|
83 |
MARRIAGE_ASSERTIONS = {
|
|
84 |
'identifiant': 'M201610161',
|
|
85 |
'demandeur.qualiteDemandeur': 'concerne',
|
|
86 |
'demandeur.individu.noms.nomDeFamille': 'Whatever',
|
|
87 |
'demandeur.individu.prenoms': 'Kim Chelsea',
|
|
88 |
'demandeur.individu.adresse.ligneAdr1': "37 Rue de l'Aigle Blanc",
|
|
89 |
'demandeur.individu.adresse.codePostal': 54000,
|
|
90 |
'demandeur.individu.adresse.lieu.ville': 'Nancy',
|
|
91 |
'demandeur.individu.adresse.lieu.pays': 'France',
|
|
92 |
'demandeur.individu.adresse.mail': 'chelsea@whatever.com',
|
|
93 |
'natureDocument': 'CPI', 'nbExemplaire': 1,
|
|
94 |
'dateDemande': '2016-10-20T14:41:20Z',
|
|
95 |
'evenement.natureEvenement': 'MAR',
|
|
96 |
'evenement.dateEvenement.dateDebut': '2012-07-14',
|
|
97 |
'evenement.lieuEvenement.ville': 'Nancy',
|
|
98 |
'evenement.interesse.pere.noms.nomDeFamille': 'Smith',
|
|
99 |
'evenement.interesse.pere.prenoms': 'John Oliver',
|
|
100 |
'evenement.interesse.mere.noms.nomDeFamille': 'Smith',
|
|
101 |
'evenement.interesse.mere.prenoms': 'Kim',
|
|
102 |
'evenement.conjoint.noms.nomDeFamille': 'Contrao',
|
|
103 |
'evenement.conjoint.pere.noms.nomDeFamille': 'Scaramucci',
|
|
104 |
'evenement.conjoint.pere.prenoms': 'Antonio',
|
|
105 |
'evenement.conjoint.mere.noms.nomDeFamille': 'Scaramucci',
|
|
106 |
'evenement.conjoint.mere.prenoms': 'Marguerite',
|
|
107 |
}
|
|
108 |
|
|
109 |
DEATH_ASSERTIONS = {
|
|
110 |
'identifiant': 'D201610171',
|
|
111 |
'demandeur.qualiteDemandeur': 'concerne',
|
|
112 |
'demandeur.individu.noms.nomDeFamille': 'Whatever',
|
|
113 |
'demandeur.individu.prenoms': 'Kim Chelsea',
|
|
114 |
'demandeur.individu.adresse.ligneAdr1': "37 Rue de l'Aigle Blanc",
|
|
115 |
'demandeur.individu.adresse.codePostal': 54000,
|
|
116 |
'demandeur.individu.adresse.lieu.ville': 'Nancy',
|
|
117 |
'demandeur.individu.adresse.lieu.pays': 'France',
|
|
118 |
'demandeur.individu.adresse.mail': 'chelsea@whatever.com',
|
|
119 |
'natureDocument': 'EXTSF', 'nbExemplaire': 1,
|
|
120 |
'dateDemande': '2016-10-20T14:41:20Z',
|
|
121 |
'evenement.natureEvenement': 'DEC',
|
|
122 |
'evenement.dateEvenement.dateDebut': '2012-07-14',
|
|
123 |
'evenement.lieuEvenement.ville': 'Nancy',
|
|
124 |
}
|
|
125 |
|
62 |
126 |
|
63 |
127 |
@pytest.fixture(params=PAYLOAD)
|
64 |
128 |
def payload(request):
|
65 |
129 |
return request.param
|
66 |
130 |
|
67 |
131 |
|
68 |
|
def assert_xml_doc(archive, assertions):
|
|
132 |
def assert_xml_doc(filename, assertions, zipped=True):
|
69 |
133 |
schema = etree.XMLSchema(
|
70 |
134 |
etree.parse(open(os.path.join(get_test_base_dir('cityweb'), 'cityweb.xsd'))))
|
71 |
|
with zipfile.ZipFile(archive) as zfd:
|
72 |
|
content = zfd.read(zfd.filelist[0].filename)
|
73 |
|
xml_content = etree.fromstring(content)
|
74 |
|
assert len(xml_content.nsmap) == 1
|
75 |
|
assert xml_content.nsmap['xs'] == "http://tempuri.org/XMLSchema.xsd"
|
76 |
|
schema.assertValid(xml_content)
|
77 |
|
root = xobject.fromstring(content)
|
78 |
|
for epath, value in assertions.items():
|
79 |
|
path = xobject.ObjectPath('demandeEtatCivil.%s' % epath)
|
80 |
|
assert path.find(root) == value
|
|
135 |
if zipped:
|
|
136 |
with zipfile.ZipFile(filename) as zfd:
|
|
137 |
content = zfd.read(zfd.filelist[0].filename)
|
|
138 |
else:
|
|
139 |
content = file(filename).read()
|
|
140 |
|
|
141 |
xml_content = etree.fromstring(content)
|
|
142 |
assert len(xml_content.nsmap) == 1
|
|
143 |
assert xml_content.nsmap['xs'] == "http://tempuri.org/XMLSchema.xsd"
|
|
144 |
schema.assertValid(xml_content)
|
|
145 |
root = xobject.fromstring(content)
|
|
146 |
for epath, value in assertions.items():
|
|
147 |
path = xobject.ObjectPath('demandeEtatCivil.%s' % epath)
|
|
148 |
assert path.find(root) == value
|
81 |
149 |
|
82 |
150 |
|
83 |
151 |
@mock.patch('passerelle.apps.cityweb.models.default_storage.path', get_test_base_dir)
|
... | ... | |
87 |
155 |
response = app.post_json(url, params=payload['birth'])
|
88 |
156 |
assert response.json['data']['demand_id'] == 'N201610154'
|
89 |
157 |
archive = os.path.join(get_test_base_dir('cityweb'), 'test', 'N201610154.zip')
|
90 |
|
assertions = {
|
91 |
|
'identifiant': 'N201610154',
|
92 |
|
'demandeur.qualiteDemandeur': 'concerne',
|
93 |
|
'demandeur.individu.noms.nomDeFamille': 'Whatever',
|
94 |
|
'demandeur.individu.prenoms': 'Kim Chelsea',
|
95 |
|
'demandeur.individu.adresse.ligneAdr1': "37 Rue de l'Aigle Blanc",
|
96 |
|
'demandeur.individu.adresse.codePostal': 54000,
|
97 |
|
'demandeur.individu.adresse.lieu.ville': 'Nancy',
|
98 |
|
'demandeur.individu.adresse.lieu.pays': 'France',
|
99 |
|
'demandeur.individu.adresse.mail': 'chelsea@whatever.com',
|
100 |
|
'natureDocument': 'CPI', 'nbExemplaire': 1,
|
101 |
|
'dateDemande': '2016-10-20T14:41:20Z',
|
102 |
|
'evenement.natureEvenement': 'NAI',
|
103 |
|
'evenement.dateEvenement.dateDebut': '2012-07-14',
|
104 |
|
'evenement.lieuEvenement.ville': 'Nancy',
|
105 |
|
'evenement.interesse.pere.noms.nomDeFamille': 'Smith',
|
106 |
|
'evenement.interesse.pere.prenoms': 'John Oliver',
|
107 |
|
'evenement.interesse.mere.noms.nomDeFamille': 'Smith',
|
108 |
|
'evenement.interesse.mere.prenoms': 'Kim',
|
109 |
|
}
|
110 |
|
assert_xml_doc(archive, assertions)
|
|
158 |
assert_xml_doc(archive, BIRTH_ASSERTIONS)
|
111 |
159 |
|
112 |
160 |
elif 'mariage' in payload:
|
113 |
161 |
response = app.post_json(url, params=payload['mariage'])
|
114 |
162 |
assert response.json['data']['demand_id'] == 'M201610161'
|
115 |
163 |
archive = os.path.join(get_test_base_dir('cityweb'), 'test', 'M201610161.zip')
|
116 |
|
assertions = {
|
117 |
|
'identifiant': 'M201610161',
|
118 |
|
'demandeur.qualiteDemandeur': 'concerne',
|
119 |
|
'demandeur.individu.noms.nomDeFamille': 'Whatever',
|
120 |
|
'demandeur.individu.prenoms': 'Kim Chelsea',
|
121 |
|
'demandeur.individu.adresse.ligneAdr1': "37 Rue de l'Aigle Blanc",
|
122 |
|
'demandeur.individu.adresse.codePostal': 54000,
|
123 |
|
'demandeur.individu.adresse.lieu.ville': 'Nancy',
|
124 |
|
'demandeur.individu.adresse.lieu.pays': 'France',
|
125 |
|
'demandeur.individu.adresse.mail': 'chelsea@whatever.com',
|
126 |
|
'natureDocument': 'CPI', 'nbExemplaire': 1,
|
127 |
|
'dateDemande': '2016-10-20T14:41:20Z',
|
128 |
|
'evenement.natureEvenement': 'MAR',
|
129 |
|
'evenement.dateEvenement.dateDebut': '2012-07-14',
|
130 |
|
'evenement.lieuEvenement.ville': 'Nancy',
|
131 |
|
'evenement.interesse.pere.noms.nomDeFamille': 'Smith',
|
132 |
|
'evenement.interesse.pere.prenoms': 'John Oliver',
|
133 |
|
'evenement.interesse.mere.noms.nomDeFamille': 'Smith',
|
134 |
|
'evenement.interesse.mere.prenoms': 'Kim',
|
135 |
|
'evenement.conjoint.noms.nomDeFamille': 'Contrao',
|
136 |
|
'evenement.conjoint.pere.noms.nomDeFamille': 'Scaramucci',
|
137 |
|
'evenement.conjoint.pere.prenoms': 'Antonio',
|
138 |
|
'evenement.conjoint.mere.noms.nomDeFamille': 'Scaramucci',
|
139 |
|
'evenement.conjoint.mere.prenoms': 'Marguerite',
|
140 |
|
}
|
141 |
|
assert_xml_doc(archive, assertions)
|
|
164 |
assert_xml_doc(archive, MARRIAGE_ASSERTIONS)
|
142 |
165 |
else:
|
143 |
166 |
response = app.post_json(url, params=payload['death'])
|
144 |
167 |
assert response.json['data']['demand_id'] == 'D201610171'
|
145 |
168 |
archive = os.path.join(get_test_base_dir('cityweb'), 'test', 'D201610171.zip')
|
146 |
|
assertions = {
|
147 |
|
'identifiant': 'D201610171',
|
148 |
|
'demandeur.qualiteDemandeur': 'concerne',
|
149 |
|
'demandeur.individu.noms.nomDeFamille': 'Whatever',
|
150 |
|
'demandeur.individu.prenoms': 'Kim Chelsea',
|
151 |
|
'demandeur.individu.adresse.ligneAdr1': "37 Rue de l'Aigle Blanc",
|
152 |
|
'demandeur.individu.adresse.codePostal': 54000,
|
153 |
|
'demandeur.individu.adresse.lieu.ville': 'Nancy',
|
154 |
|
'demandeur.individu.adresse.lieu.pays': 'France',
|
155 |
|
'demandeur.individu.adresse.mail': 'chelsea@whatever.com',
|
156 |
|
'natureDocument': 'EXTSF', 'nbExemplaire': 1,
|
157 |
|
'dateDemande': '2016-10-20T14:41:20Z',
|
158 |
|
'evenement.natureEvenement': 'DEC',
|
159 |
|
'evenement.dateEvenement.dateDebut': '2012-07-14',
|
160 |
|
'evenement.lieuEvenement.ville': 'Nancy',
|
161 |
|
}
|
162 |
|
assert_xml_doc(archive, assertions)
|
|
169 |
assert_xml_doc(archive, DEATH_ASSERTIONS)
|
|
170 |
|
|
171 |
|
|
172 |
@mock.patch('passerelle.apps.cityweb.models.default_storage.path', get_test_base_dir)
|
|
173 |
def test_demand_creation_with_no_zipping(app, setup, payload):
|
|
174 |
|
|
175 |
setup.do_zip = False
|
|
176 |
setup.save()
|
|
177 |
|
|
178 |
url = '/cityweb/test/create/'
|
|
179 |
if 'birth' in payload:
|
|
180 |
response = app.post_json(url, params=payload['birth'])
|
|
181 |
assert response.json['data']['demand_id'] == 'N201610154'
|
|
182 |
filename = os.path.join(get_test_base_dir('cityweb'), 'test', 'N201610154.xml')
|
|
183 |
assert_xml_doc(filename, BIRTH_ASSERTIONS, zipped=False)
|
|
184 |
elif 'mariage' in payload:
|
|
185 |
response = app.post_json(url, params=payload['mariage'])
|
|
186 |
assert response.json['data']['demand_id'] == 'M201610161'
|
|
187 |
filename = os.path.join(get_test_base_dir('cityweb'), 'test', 'M201610161.xml')
|
|
188 |
assert_xml_doc(filename, MARRIAGE_ASSERTIONS, zipped=False)
|
|
189 |
else:
|
|
190 |
response = app.post_json(url, params=payload['death'])
|
|
191 |
assert response.json['data']['demand_id'] == 'D201610171'
|
|
192 |
filename = os.path.join(get_test_base_dir('cityweb'), 'test', 'D201610171.xml')
|
|
193 |
assert_xml_doc(filename, DEATH_ASSERTIONS, zipped=False)
|
163 |
194 |
|
164 |
195 |
|
165 |
196 |
def test_date_type_parsing():
|
166 |
|
-
|