Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 880 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
215 jpm 1
<?php
2
require_once dirname(__FILE__).'/../ServicePhpUnit.php';
3
 
4
class ParametresVerificateurTest extends ServicePhpUnit {
5
 
6
	private function initialiser($parametresUrl = array(), $parametresAPI = array()) {
7
		$bdd = $this->getMock('Bdd');
8
		$parametres = new Parametres($parametresUrl, $bdd);
9
		$verificateur = new ParametresVerificateur($parametres, $parametresAPI);
10
		return $verificateur;
11
	}
12
 
13
	public function testerValeursPermises() {
14
		$parametresUrl = array(
15
			'recherche' => 'declencheException',
16
			'ns.format' => 'declencheException',
17
			'retour' => 'declencheException',
18
			'retour.format' => 'declencheException',
19
			'retour.langue' => 'declencheException',
20
			'ns.structure' => 'declencheException',
21
			'version.projet' => 'declencheException');
22
 
23
		$verificateur = $this->initialiser($parametresUrl);
24
 
25
		try {
26
			$verificateur->verifierValeurs();
27
		} catch(Exception $e) {
28
			$messageComplet = array("Erreur dans le paramètrage de votre URL :");
29
			$messageTpl = "Le paramètre '%s' ne peut pas prendre la valeur 'declencheException'. Valeurs permises : %s";
30
			$messageComplet[] = $messageAttendu = sprintf($messageTpl, 'recherche', 'stricte|floue|etendue');
31
			$this->assertContains($messageAttendu, $e->getMessage());
32
			$messageComplet[] = $messageAttendu = sprintf($messageTpl, 'ns.format', 'htm|txt');
33
			$this->assertContains($messageAttendu, $e->getMessage());
34
			$messageComplet[] = $messageAttendu = sprintf($messageTpl, 'retour', 'application/json|image/jpeg');
35
			$this->assertContains($messageAttendu, $e->getMessage());
36
			$messageComplet[] = $messageAttendu = sprintf($messageTpl, 'retour.format', 'min|max|oss|perso');
37
			$this->assertContains($messageAttendu, $e->getMessage());
38
			$messageComplet[] = $messageAttendu = sprintf($messageTpl, 'retour.langue', '/^(?:[*]|orig|[a-z]{2})$/');
39
			$this->assertContains($messageAttendu, $e->getMessage());
40
			$messageComplet[] = $messageAttendu = sprintf($messageTpl, 'ns.structure', '|an|au|bib|ad');
41
			$this->assertContains($messageAttendu, $e->getMessage());
42
			$messageComplet[] = $messageAttendu = sprintf($messageTpl, 'version.projet', '/^(?:[0-9]+[.][0-9]+|[*+])$/');
43
			$this->assertContains($messageAttendu, $e->getMessage());
44
 
45
			$this->assertEquals(implode('<br/>', $messageComplet), $e->getMessage());
46
			return null;
47
		}
48
		$this->fail("Aucune exception n'a été soulevée.");
49
	}
50
 
51
	public function testerExceptionVerificationConformiteApi() {
52
		$parametresUrl = array('code1' => 'val1');
53
		$parametresAPI = array('paramApi');
54
 
55
		$verificateur = $this->initialiser($parametresUrl, $parametresAPI);
56
 
57
		try {
58
			$verificateur->verifierConformiteApi();
59
		} catch(Exception $e) {
60
			$messageAttendu = "Le paramètre 'code1' n'est pas pris en compte par cette version de l'API.";
61
			$this->assertEquals($messageAttendu, $e->getMessage());
62
			return null;
63
		}
64
		$this->fail("Aucune exception n'a été soulevée.");
65
	}
66
 
67
	public function testerExceptionVerifierValeurSimple() {
68
		$parametresUrl = array('recherche' => 'declencheException');
69
 
70
		$verificateur = $this->initialiser($parametresUrl);
71
 
72
		try {
73
			$verificateur->verifierValeurs();
74
		} catch(Exception $e) {
75
			$messageAttendu = "Le paramètre 'recherche' ne peut pas prendre la valeur 'declencheException'. Valeurs permises : ";
76
			$this->assertContains($messageAttendu, $e->getMessage());
77
			return null;
78
		}
79
		$this->fail("Aucune exception n'a été soulevée.");
80
	}
81
 
82
	public function testerExceptionVerifierValeurRegExp() {
83
		$parametresUrl = array('retour.langue' => '1');
84
 
85
		$verificateur = $this->initialiser($parametresUrl);
86
 
87
		try {
88
			$verificateur->verifierValeurs();
89
		} catch(Exception $e) {
90
			$messageAttendu = "Le paramètre 'retour.langue' ne peut pas prendre la valeur '1'. Valeurs permises : ";
91
			$this->assertContains($messageAttendu, $e->getMessage());
92
			return null;
93
		}
94
		$this->fail("Aucune exception n'a été soulevée.");
95
	}
96
 
97
	public function testerExceptionVerifierValeurMultiple() {
98
		$parametresUrl = array('ns.structure' => 'an,1');
99
 
100
		$verificateur = $this->initialiser($parametresUrl);
101
 
102
		try {
103
			$verificateur->verifierValeurs();
104
		} catch(Exception $e) {
105
			$messageAttendu = "Le paramètre 'ns.structure' ne peut pas prendre la valeur '1'. Valeurs permises : ";
106
			$this->assertContains($messageAttendu, $e->getMessage());
107
			return null;
108
		}
109
		$this->fail("Aucune exception n'a été soulevée.");
110
	}
111
}
112
?>