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

Contents of /trunk/tests/testREST.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2127 - (show annotations)
Mon Aug 5 12:59:05 2013 UTC (11 years, 5 months ago) by softime
File size: 19636 byte(s)
- Ajout du champ duree_validite dans dossier_autorisation_type_detaille
- Modification de la taille des champs contenant le numéro de DI dans les tables instruction, donnees_techniques, demande, lien_dossier_demandeur
- Modification de la taille du dossier_libelle dans la table dossier
- Ajout de la fonction REST pour mettre à périmé les dossiers après une vérification
- Màj des traduction
- Màj HISTORY.txt

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' => array(
278 'Todo' => '../tests/binary_files/test_digitalizedDocument/Transfert_GED/Todo',
279 'Done' => '../tests/binary_files/test_digitalizedDocument/Transfert_GED/Done'
280 ),
281 );
282
283 // Initialisation cURL
284 $message = $this->init_cURL($url, $request, $postfields);
285
286 // On vérifie le retour de la session cURL
287 $this->assertEquals($message, 'Tous les documents ont ete traites');
288
289 //Deuxième jet pour autre message
290
291 // Initialisation cURL
292 $message = $this->init_cURL($url, $request, $postfields);
293
294 // On vérifie le retour de la session cURL
295 $this->assertEquals($message, 'Aucun document a traiter');
296
297 // redéplace le fichiers dans le dossier des "à traiter"
298 copy('../tests/binary_files/test_digitalizedDocument/Transfert_GED/Done/PC0130551200001.P0/20091106AUTPCP.pdf', '../tests/binary_files/test_digitalizedDocument/Transfert_GED/Todo/PC0130551200001.P0/20091106AUTPCP.pdf');
299 }
300
301 /**
302 * Test le module purge de maintenance
303 */
304 public function testMaintenancePurge() {
305
306 // Lien à envoyer
307 $url = $this->base_url.'services/rest_entry.php/maintenance';
308 // Mode de la requête
309 $request = 'POST';
310 // Données à envoyer
311 $postfields = array(
312 'module' => 'purge',
313 'data' => array(
314 'dossier' => '../tests/binary_files/test_digitalizedDocument/Transfert_GED/Done',
315 'nombre_de_jour' => ''
316 ),
317 );
318
319 // Initialisation cURL
320 $message = $this->init_cURL($url, $request, $postfields);
321
322 // On vérifie le retour de la session cURL
323 $this->assertEquals($message, 'Tous les documents ont ete traites');
324 }
325
326 public function testMaintenanceDossierAutorisation() {
327
328 // Lien à envoyer
329 $url = $this->base_url.'services/rest_entry.php/maintenance';
330 // Mode de la requête
331 $request = 'POST';
332 // Données à envoyer
333 $postfields = array(
334 'module' => 'update_dossier_autorisation',
335 );
336
337 // Initialisation cURL
338 $message = $this->init_cURL($url, $request, $postfields);
339
340 // On vérifie le retour de la session cURL
341 $this->assertEquals($message, "1 dossier(s) d'autorisation(s) mis à jour.");
342
343 //Deuxième jet pour autre message
344
345 // Initialisation cURL
346 $message = $this->init_cURL($url, $request, $postfields);
347
348 // On vérifie le retour de la session cURL
349 $this->assertEquals($message, 'Aucune mise à jour');
350 }
351
352 /**
353 * Test le retour d'avis d'une consultation sans fichier de consultation
354 */
355 public function testConsultationSansFichier() {
356
357 // Lien à envoyer
358 $url = $this->base_url.'services/rest_entry.php/consultations/1';
359 // Mode de la requête
360 $request = 'PUT';
361 // Données à envoyer
362 $postfields = array(
363 'date_retour' => '15/01/2013',
364 'avis' => 'Favorable',
365 );
366
367 // Initialisation cURL
368 $message = $this->init_cURL($url, $request, $postfields);
369
370 // On vérifie le retour de la session cURL
371 $this->assertEquals($message, 'L\'avis de la consultation 1 a été pris en compte');
372
373 //Deuxième jet pour autre message
374
375 // Initialisation cURL
376 $message = $this->init_cURL($url, $request, $postfields);
377
378 // On vérifie le retour de la session cURL
379 $this->assertEquals($message, 'Un retour d\'avis a déjà été rendu pour la consultation \'1\'.');
380 }
381
382 /**
383 * Test le retour d'avis d'une consultation avec fichier de consultation
384 */
385 public function testConsultationAvecFichier() {
386
387 // Lien à envoyer
388 $url = $this->base_url.'services/rest_entry.php/consultations/2';
389 // Mode de la requête
390 $request = 'PUT';
391 // Données à envoyer
392 $postfields = array(
393 'date_retour' => '15/03/2013',
394 'avis' => 'Favorable',
395 'fichier_base64' => 'JVBERi0xLjQKJcOkw7zDtsOfCjIgM',
396 'nom_fichier' => 'plop.pdf',
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, 'L\'avis de la consultation 2 a été pris en compte');
404
405 //Deuxième jet pour autre message
406
407 // Initialisation cURL
408 $message = $this->init_cURL($url, $request, $postfields);
409
410 // On vérifie le retour de la session cURL
411 $this->assertEquals($message, 'Un retour d\'avis a déjà été rendu pour la consultation \'2\'.');
412 }
413
414 /**
415 * Test le retour de message
416 */
417 public function testMessage() {
418
419 // Lien à envoyer
420 $url = $this->base_url.'services/rest_entry.php/messages';
421 // Mode de la requête
422 $request = 'POST';
423 // Données à envoyer
424 $postfields = array(
425 'type' => 'Mise à jour de complétude ERP ACC',
426 'date' => '16/06/2014 14:12',
427 'emetteur' => 'John Doe',
428 'dossier_instruction' => 'PC0130551200001P0',
429 'contenu' => array(
430 'Complétude ERP ACC' => 'non',
431 'Motivation Complétude ERP ACC' => '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 complétude ERP ACC\' OK.');
439
440 // On change les postfields
441 $postfields = array(
442 'type' => 'Mise à jour de complétude ERP SECU',
443 'date' => '16/06/2014 14:12',
444 'emetteur' => 'John Doe',
445 'dossier_instruction' => 'PC0130551200001P0',
446 'contenu' => array(
447 'Complétude ERP SECU' => 'oui',
448 'Motivation Complétude ERP SECU' => 'Lorem ipsum dolor sit amet...'),
449 );
450
451 // Initialisation cURL
452 $message = $this->init_cURL($url, $request, $postfields);
453
454 // On vérifie le retour de la session cURL
455 $this->assertEquals($message, 'Insertion du message \'Mise à jour de complétude ERP SECU\' OK.');
456
457 // On change les postfields
458 $postfields = array(
459 'type' => 'Mise à jour de qualification',
460 'date' => '16/06/2014 14:12',
461 'emetteur' => 'John Doe',
462 'dossier_instruction' => 'PC0130551200001P0',
463 'contenu' => array(
464 'Confirmation ERP' => 'oui',
465 'Type de dossier ERP' => 'Lorem ipsum dolor sit amet...',
466 'Catégorie de dossier ERP' => 'Lorem ipsum dolor sit amet...'),
467 );
468
469 // Initialisation cURL
470 $message = $this->init_cURL($url, $request, $postfields);
471
472 // On vérifie le retour de la session cURL
473 $this->assertEquals($message, 'Insertion du message \'Mise à jour de qualification\' OK.');
474
475 // On change les postfields
476 $postfields = array(
477 'type' => 'Dossier à enjeux ERP',
478 'date' => '16/06/2014 14:12',
479 'emetteur' => 'John Doe',
480 'dossier_instruction' => 'PC0130551200001P0',
481 'contenu' => array(
482 'Dossier à enjeux ERP' => 'oui',),
483 );
484
485 // Initialisation cURL
486 $message = $this->init_cURL($url, $request, $postfields);
487
488 // On vérifie le retour de la session cURL
489 $this->assertEquals($message, 'Insertion du message \'Dossier à enjeux ERP\' OK.');
490
491 }
492
493 /**
494 * Test la mise à jour de dossier d'autorisation
495 */
496 public function testDossierAutorisationMAJERP() {
497
498 // Lien à envoyer
499 $url = $this->base_url.'services/rest_entry.php/dossier_autorisations/PC0130551200001';
500 // Mode de la requête
501 $request = 'PUT';
502 // Données à envoyer
503 $postfields = array(
504 'numero_erp' => '12345',
505 );
506
507 // Initialisation cURL
508 $message = $this->init_cURL($url, $request, $postfields);
509
510 // On vérifie le retour de la session cURL
511 $this->assertEquals($message, 'Numero ERP du batiment etait assigne au dossier d\'autorisation PC0130551200001');
512 }
513
514 /**
515 * Test l'ERP ouvert
516 */
517 public function testDossierAutorisationERPOuvert() {
518
519 // Lien à envoyer
520 $url = $this->base_url.'services/rest_entry.php/dossier_autorisations/PC0130551200001';
521 // Mode de la requête
522 $request = 'PUT';
523 // Données à envoyer
524 $postfields = array(
525 'erp_ouvert' => 'oui',
526 'date_arrete' => '20/04/2013',
527 );
528
529 // Initialisation cURL
530 $message = $this->init_cURL($url, $request, $postfields);
531
532 // On vérifie le retour de la session cURL
533 $this->assertEquals($message, 'Signature de l\'ouverture ERP au publique etait enregistre pour le dossier d\'autorisation PC0130551200001');
534 }
535
536 /**
537 * Test l'arrêté d'un dossier DAT effectué
538 */
539 public function testDossierAutorisationDATArrete() {
540
541 // Lien à envoyer
542 $url = $this->base_url.'services/rest_entry.php/dossier_autorisations/PC0130551200001';
543 // Mode de la requête
544 $request = 'PUT';
545 // Données à envoyer
546 $postfields = array(
547 'arrete_effectue' => 'oui',
548 'date_arrete' => '04/06/2014',
549 );
550
551 // Initialisation cURL
552 $message = $this->init_cURL($url, $request, $postfields);
553
554 /// On vérifie le retour de la session cURL
555 $this->assertEquals($message, 'Signature de l\'ouverture ERP etait enregistre pour le dossier d\'autorisation PC0130551200001');
556 }
557
558 /**
559 * Test la méthode GET sur un dossier d'autorisation
560 */
561 public function testDossierAutorisationGET() {
562
563 // Lien à envoyer
564 $url = $this->base_url.'services/rest_entry.php/dossier_autorisations/PC0130551200001';
565 // Mode de la requête
566 $request = 'GET';
567 // Données à envoyer
568 $postfields = '';
569
570 // Initialisation cURL
571 $message = $this->init_cURL($url, $request, $postfields);
572
573 // On vérifie le retour de la session cURL
574 $this->assertEquals($message, '"dossier_autorisation": "PC0130551200001", "dossier_autorisation_type_detaille": "1", "exercice": "", "insee": "", "terrain_references_cadastrales": "", "terrain_adresse_voie_numero": "", "terrain_adresse_voie": "", "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": "", "dossier_autorisation_libelle": "PC 013055 12 00001"');
575 }
576
577 }
578
579 ?>

Properties

Name Value
svn:executable *
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26