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

Contents of /trunk/tests/testREST.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2062 - (show annotations)
Thu Jul 4 14:55:44 2013 UTC (11 years, 7 months ago) by softime
File size: 18554 byte(s)
Oubli d'envoi de fichier modifié suite à la modification du champ complement dans les table dossier, demande et dossier_autorisation

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

Properties

Name Value
svn:executable *
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26