/[openfoncier]/trunk/tests/testREST.php
ViewVC logotype

Contents of /trunk/tests/testREST.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2015 - (show annotations)
Tue Jun 18 09:56:12 2013 UTC (11 years, 7 months ago) by vpihour
File size: 18248 byte(s)
Correction de commentaires

1 <?php
2 /**
3 * Ce fichier regroupe les tests concernant le REST
4 *
5 * @package openads
6 * @version SVN : $Id$:
7 */
8
9 // Fichier nécessaire
10 require_once "../obj/utils.class.php";
11
12 /**
13 * Cette classe permet de faire des tests sur les requêtes REST
14 *
15 * Données utilisées :
16 *
17 * Fichiers dans binary_files/test_digitalizedDocument/Transfert_GED
18 *
19 * Les consultations 1 et 2
20 *
21 * Le dossier d'autorisation PC0130551200001
22 *
23 * Le dossier d'instruction PC0130551200001P0
24 *
25 */
26 class RESTTest extends PHPUnit_Framework_TestCase {
27
28 var $base_url = 'http://localhost/openfoncier/';
29
30 /**
31 * Méthode lancée en début de traitement
32 */
33 public function setUp() {
34
35 //
36 }
37
38 /**
39 * Méthode lancée en fin de traitement
40 */
41 public function tearDown() {
42
43 //
44 }
45
46 /**
47 * Initialisation pour session cURL
48 * @param string $url Lien
49 * @param string $request Mode de requête
50 * @param array $postfields Données à envoyer
51 * @return mixed Session cURL
52 */
53 private function init_cURL($url, $request, $postfields) {
54
55 // Initialisation session cURL
56 $curl = curl_init();
57 // Url de la page à récupérer
58 curl_setopt($curl, CURLOPT_URL, $url);
59 // Permet de récupérer le résultat au lieu de l'afficher
60 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
61 // Démarrer un nouveau cookie de session
62 curl_setopt($curl, CURLOPT_COOKIESESSION, true);
63 // Requête REST à envoyer (par défaut à GET)
64 switch ($request) {
65 case 'POST':
66 curl_setopt($curl, CURLOPT_POST, true);
67 break;
68 case 'PUT':
69 curl_setopt($curl, CURLOPT_PUT, true);
70 break;
71 }
72
73 // Si il y a des paramètres à envoyer
74 if ($postfields != '') {
75
76 // Informations à envoyer
77 $postfields = $this->preparePostFields($curl, $postfields, $request);
78 }
79
80 // Retour de la session cURL
81 $return = curl_exec($curl);
82 // Ferme la session cURL
83 curl_close($curl);
84
85 // Message retourné par REST
86 $message = $this->getReturnMessage($return, $request);
87
88 // Retourne le message
89 return $message;
90 }
91
92 /**
93 * Prépare les paramètres à envoyer en cURL
94 * @param mixed $curl Session cURL
95 * @param array $array Tableau des paramètres
96 * @param string $request Méthode utilisée (POST/PUT)
97 */
98 private function preparePostFields($curl, $array, $request) {
99
100 // Si c'est une requête POST
101 if ($request == 'POST') {
102
103 // Génère une chaîne de requête en encodage URL
104 $return = http_build_query($array);
105
106 // Données passées en POST
107 curl_setopt($curl, CURLOPT_POSTFIELDS, $return);
108
109 // Sinon c'est une requête PUT
110 } else {
111
112 // Encode le tableau en json
113 $return = json_encode($array);
114
115 // Crée un fichier temporaire
116 $putData = tmpfile();
117 // Ecrit la chaîne dans le fichier temporaire
118 fwrite($putData, $return);
119 // Place le curseur au début du fichier
120 fseek($putData, 0);
121 // Permet de retourner des données binaires
122 curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);
123 // Le fichier lu par le transfert lors du chargement
124 curl_setopt($curl, CURLOPT_INFILE, $putData);
125 // Taille du fichier en octet attendue
126 curl_setopt($curl, CURLOPT_INFILESIZE, strlen($return));
127
128 }
129
130 }
131
132 /**
133 * Retourne seulement le message du retour REST
134 * @param string $return Retour du REST
135 * @return string Message du retour
136 */
137 private function getReturnMessage($return, $request) {
138
139 // Si c'est une requête GET
140 if ($request == 'GET') {
141
142 // Retraite la chaîne
143 $return = substr($return,1,-1);
144 $return = trim($return);
145 $return = preg_replace("(\r\n|\n|\r)",'',$return);
146
147 // On retourne directement le return
148 return $return;
149 }
150
151 // Decode du json et crée un objet
152 $return = json_decode($return);
153
154 // Retourne le message du retour REST
155 return $return->message;
156
157 }
158
159 /**
160 * Test le retour d'un numéro d'arrêté
161 */
162 public function testArretesRetourNumero() {
163
164 // Lien à envoyer
165 $url = $this->base_url.'services/rest_entry.php/arretes';
166 // Mode de la requête
167 $request = 'PUT';
168 // Données à envoyer
169 $postfields = array(
170 'numero_arrete' => '21321654',
171 'numero_dossier' => 'AZ0130551200001P0',
172 'etat_transaction' => 'true',
173 'detail_erreur' => '',
174 );
175
176 // Initialisation cURL
177 $message = $this->init_cURL($url, $request, $postfields);
178
179 // On vérifie le retour de la session cURL
180 $this->assertEquals($message, 'Le numéro d\'arrêté a été mis à jour.');
181
182 //Deuxième jet pour autre message
183
184 // Initialisation cURL
185 $message = $this->init_cURL($url, $request, $postfields);
186
187 // On vérifie le retour de la session cURL
188 $this->assertEquals($message, 'Erreur : un numéro d\'arrêté existe déjà pour cette instruction');
189 }
190
191 /**
192 * Test le module user de maintenance
193 */
194 public function testMaintenanceUser() {
195
196 // Lien à envoyer
197 $url = $this->base_url.'services/rest_entry.php/maintenance';
198 // Mode de la requête
199 $request = 'POST';
200 // Données à envoyer
201 $postfields = array(
202 'module' => 'user',
203 'data' => 'NA',
204 );
205
206 // Initialisation cURL
207 $message = $this->init_cURL($url, $request, $postfields);
208
209 // On vérifie le retour de la session cURL
210 $this->assertEquals($message, 'Synchronisation terminée.');
211 }
212
213 /**
214 * Test le module consultation de maintenance
215 */
216 public function testMaintenanceConsultation() {
217
218 // Lien à envoyer
219 $url = $this->base_url.'services/rest_entry.php/maintenance';
220 // Mode de la requête
221 $request = 'POST';
222 // Données à envoyer
223 $postfields = array(
224 'module' => 'consultation',
225 'data' => 'NA',
226 );
227
228 // Initialisation cURL
229 $message = $this->init_cURL($url, $request, $postfields);
230
231 // On vérifie le retour de la session cURL
232 $this->assertEquals($message, '2 consultations mise(s) à jour.');
233
234 //Deuxième jet pour autre message
235
236 // Initialisation cURL
237 $message = $this->init_cURL($url, $request, $postfields);
238
239 // On vérifie le retour de la session cURL
240 $this->assertEquals($message, 'Aucune mise a jour.');
241 }
242
243 /**
244 * Test le module instruction de maintenance
245 */
246 public function testMaintenanceInstruction() {
247
248 // Lien à envoyer
249 $url = $this->base_url.'services/rest_entry.php/maintenance';
250 // Mode de la requête
251 $request = 'POST';
252 // Données à envoyer
253 $postfields = array(
254 'module' => 'instruction',
255 'data' => 'NA',
256 );
257
258 // Initialisation cURL
259 $message = $this->init_cURL($url, $request, $postfields);
260
261 // On vérifie le retour de la session cURL
262 $this->assertEquals($message, '1 dossier(s) mis à jour.');
263 }
264
265 /**
266 * Test le module import de maintenance
267 */
268 public function testMaintenanceImport() {
269
270 // Lien à envoyer
271 $url = $this->base_url.'services/rest_entry.php/maintenance';
272 // Mode de la requête
273 $request = 'POST';
274 // Données à envoyer
275 $postfields = array(
276 'module' => 'import',
277 'data' => '../tests/binary_files/test_digitalizedDocument/Transfert_GED/Todo,../tests/binary_files/test_digitalizedDocument/Transfert_GED/Done',
278 );
279
280 // Initialisation cURL
281 $message = $this->init_cURL($url, $request, $postfields);
282
283 // On vérifie le retour de la session cURL
284 $this->assertEquals($message, 'Tous les documents ont ete traites');
285
286 //Deuxième jet pour autre message
287
288 // Initialisation cURL
289 $message = $this->init_cURL($url, $request, $postfields);
290
291 // On vérifie le retour de la session cURL
292 $this->assertEquals($message, 'Aucun document a traiter');
293 }
294
295 /**
296 * Test le module purge de maintenance
297 */
298 public function testMaintenancePurge() {
299
300 // Lien à envoyer
301 $url = $this->base_url.'services/rest_entry.php/maintenance';
302 // Mode de la requête
303 $request = 'POST';
304 // Données à envoyer
305 $postfields = array(
306 'module' => 'purge',
307 'data' => '../tests/binary_files/test_digitalizedDocument/Transfert_GED/Done,null',
308 );
309
310 // Initialisation cURL
311 $message = $this->init_cURL($url, $request, $postfields);
312
313 // On vérifie le retour de la session cURL
314 $this->assertEquals($message, 'Tous les documents ont ete traites');
315 }
316
317 /**
318 * Test le retour d'avis d'une consultation sans fichier de consultation
319 */
320 public function testConsultationSansFichier() {
321
322 // Lien à envoyer
323 $url = $this->base_url.'services/rest_entry.php/consultations/1';
324 // Mode de la requête
325 $request = 'PUT';
326 // Données à envoyer
327 $postfields = array(
328 'date_retour' => '15/01/2013',
329 'avis' => 'Favorable',
330 );
331
332 // Initialisation cURL
333 $message = $this->init_cURL($url, $request, $postfields);
334
335 // On vérifie le retour de la session cURL
336 $this->assertEquals($message, 'L\'avis de la consultation 1 a été pris en compte');
337
338 //Deuxième jet pour autre message
339
340 // Initialisation cURL
341 $message = $this->init_cURL($url, $request, $postfields);
342
343 // On vérifie le retour de la session cURL
344 $this->assertEquals($message, 'Un retour d\'avis a déjà été rendu pour la consultation \'1\'.');
345 }
346
347 /**
348 * Test le retour d'avis d'une consultation avec fichier de consultation
349 */
350 public function testConsultationAvecFichier() {
351
352 // Lien à envoyer
353 $url = $this->base_url.'services/rest_entry.php/consultations/2';
354 // Mode de la requête
355 $request = 'PUT';
356 // Données à envoyer
357 $postfields = array(
358 'date_retour' => '15/03/2013',
359 'avis' => 'Favorable',
360 'fichier_base64' => 'JVBERi0xLjQKJcOkw7zDtsOfCjIgM',
361 'nom_fichier' => 'plop.pdf',
362 );
363
364 // Initialisation cURL
365 $message = $this->init_cURL($url, $request, $postfields);
366
367 // On vérifie le retour de la session cURL
368 $this->assertEquals($message, 'L\'avis de la consultation 2 a été pris en compte');
369
370 //Deuxième jet pour autre message
371
372 // Initialisation cURL
373 $message = $this->init_cURL($url, $request, $postfields);
374
375 // On vérifie le retour de la session cURL
376 $this->assertEquals($message, 'Un retour d\'avis a déjà été rendu pour la consultation \'2\'.');
377 }
378
379 /**
380 * Test le retour de message
381 */
382 public function testMessage() {
383
384 // Lien à envoyer
385 $url = $this->base_url.'services/rest_entry.php/messages';
386 // Mode de la requête
387 $request = 'POST';
388 // Données à envoyer
389 $postfields = array(
390 'type' => 'Mise à jour de complétude ERP ACC',
391 'date' => '16/06/2014 14:12',
392 'emetteur' => 'John Doe',
393 'dossier_instruction' => 'PC0130551200001P0',
394 'contenu' => array(
395 'Complétude ERP ACC' => 'non',
396 'Motivation Complétude ERP ACC' => 'Lorem ipsum dolor sit amet...'),
397 );
398
399 // Initialisation cURL
400 $message = $this->init_cURL($url, $request, $postfields);
401
402 // On vérifie le retour de la session cURL
403 $this->assertEquals($message, 'Insertion du message \'Mise à jour de complétude ERP ACC\' OK.');
404
405 // On change les postfields
406 $postfields = array(
407 'type' => 'Mise à jour de complétude ERP SECU',
408 'date' => '16/06/2014 14:12',
409 'emetteur' => 'John Doe',
410 'dossier_instruction' => 'PC0130551200001P0',
411 'contenu' => array(
412 'Complétude ERP SECU' => 'oui',
413 'Motivation Complétude ERP SECU' => 'Lorem ipsum dolor sit amet...'),
414 );
415
416 // Initialisation cURL
417 $message = $this->init_cURL($url, $request, $postfields);
418
419 // On vérifie le retour de la session cURL
420 $this->assertEquals($message, 'Insertion du message \'Mise à jour de complétude ERP SECU\' OK.');
421
422 // On change les postfields
423 $postfields = array(
424 'type' => 'Mise à jour de qualification',
425 'date' => '16/06/2014 14:12',
426 'emetteur' => 'John Doe',
427 'dossier_instruction' => 'PC0130551200001P0',
428 'contenu' => array(
429 'Confirmation ERP' => 'oui',
430 'Type de dossier ERP' => 'Lorem ipsum dolor sit amet...',
431 'Catégorie de dossier ERP' => 'Lorem ipsum dolor sit amet...'),
432 );
433
434 // Initialisation cURL
435 $message = $this->init_cURL($url, $request, $postfields);
436
437 // On vérifie le retour de la session cURL
438 $this->assertEquals($message, 'Insertion du message \'Mise à jour de qualification\' OK.');
439
440 // On change les postfields
441 $postfields = array(
442 'type' => 'Dossier à enjeux ERP',
443 'date' => '16/06/2014 14:12',
444 'emetteur' => 'John Doe',
445 'dossier_instruction' => 'PC0130551200001P0',
446 'contenu' => array(
447 'Dossier à enjeux ERP' => 'oui',),
448 );
449
450 // Initialisation cURL
451 $message = $this->init_cURL($url, $request, $postfields);
452
453 // On vérifie le retour de la session cURL
454 $this->assertEquals($message, 'Insertion du message \'Dossier à enjeux ERP\' OK.');
455
456 }
457
458 /**
459 * Test la mise à jour de dossier d'autorisation
460 */
461 public function testDossierAutorisationMAJERP() {
462
463 // Lien à envoyer
464 $url = $this->base_url.'services/rest_entry.php/dossier_autorisations/PC0130551200001';
465 // Mode de la requête
466 $request = 'PUT';
467 // Données à envoyer
468 $postfields = array(
469 'numero_erp' => '12345',
470 );
471
472 // Initialisation cURL
473 $message = $this->init_cURL($url, $request, $postfields);
474
475 // On vérifie le retour de la session cURL
476 $this->assertEquals($message, 'Numero ERP du batiment etait assigne au dossier d\'autorisation PC0130551200001');
477 }
478
479 /**
480 * Test l'ERP ouvert
481 */
482 public function testDossierAutorisationERPOuvert() {
483
484 // Lien à envoyer
485 $url = $this->base_url.'services/rest_entry.php/dossier_autorisations/PC0130551200001';
486 // Mode de la requête
487 $request = 'PUT';
488 // Données à envoyer
489 $postfields = array(
490 'erp_ouvert' => 'oui',
491 'date_arrete' => '20/04/2013',
492 );
493
494 // Initialisation cURL
495 $message = $this->init_cURL($url, $request, $postfields);
496
497 // On vérifie le retour de la session cURL
498 $this->assertEquals($message, 'Signature de l\'ouverture ERP au publique etait enregistre pour le dossier d\'autorisation PC0130551200001');
499 }
500
501 /**
502 * Test l'arrêté d'un dossier DAT effectué
503 */
504 public function testDossierAutorisationDATArrete() {
505
506 // Lien à envoyer
507 $url = $this->base_url.'services/rest_entry.php/dossier_autorisations/PC0130551200001';
508 // Mode de la requête
509 $request = 'PUT';
510 // Données à envoyer
511 $postfields = array(
512 'arrete_effectue' => 'oui',
513 'date_arrete' => '04/06/2014',
514 );
515
516 // Initialisation cURL
517 $message = $this->init_cURL($url, $request, $postfields);
518
519 /// On vérifie le retour de la session cURL
520 $this->assertEquals($message, 'Signature de l\'ouverture ERP etait enregistre pour le dossier d\'autorisation PC0130551200001');
521 }
522
523 /**
524 * Test la méthode GET sur un dossier d'autorisation
525 */
526 public function testDossierAutorisationGET() {
527
528 // Lien à envoyer
529 $url = $this->base_url.'services/rest_entry.php/dossier_autorisations/PC0130551200001';
530 // Mode de la requête
531 $request = 'GET';
532 // Données à envoyer
533 $postfields = '';
534
535 // Initialisation cURL
536 $message = $this->init_cURL($url, $request, $postfields);
537
538 // On vérifie le retour de la session cURL
539 $this->assertEquals($message, '"dossier_autorisation": "PC0130551200001", "dossier_autorisation_type_detaille": "1", "exercice": "", "insee": "", "terrain_references_cadastrales": "", "terrain_adresse_voie_numero": "", "complement": "", "terrain_adresse_lieu_dit": "", "terrain_adresse_localite": "", "terrain_adresse_code_postal": "", "terrain_adresse_bp": "", "terrain_adresse_cedex": "", "terrain_superficie": "", "arrondissement": "", "depot_initial": "", "erp_numero_batiment": "12345", "erp_ouvert": "f", "erp_date_ouverture": "2013-04-20", "erp_arrete_decision": "f", "erp_date_arrete_decision": "2014-06-04", "numero_version": "0", "etat_dossier_autorisation": "1", "date_depot": "", "date_decision": "", "date_validite": "", "date_chantier": "", "date_achevement": "", "avis_decision": "", "etat_dernier_dossier_instruction_accepte": ""');
540 }
541
542 }
543
544 ?>

Properties

Name Value
svn:executable *
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26