Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 912 → Rev 913

/tags/v5.0-agropyraie-20130830/services/tests/0.2/bibliotheque/ParametresVerificateurTest.php
New file
0,0 → 1,112
<?php
require_once dirname(__FILE__).'/../ServicePhpUnit.php';
 
class ParametresVerificateurTest extends ServicePhpUnit {
 
private function initialiser($parametresUrl = array(), $parametresAPI = array()) {
$bdd = $this->getMock('Bdd');
$parametres = new Parametres($parametresUrl, $bdd);
$verificateur = new ParametresVerificateur($parametres, $parametresAPI);
return $verificateur;
}
 
public function testerValeursPermises() {
$parametresUrl = array(
'recherche' => 'declencheException',
'ns.format' => 'declencheException',
'retour' => 'declencheException',
'retour.format' => 'declencheException',
'retour.langue' => 'declencheException',
'ns.structure' => 'declencheException',
'version.projet' => 'declencheException');
 
$verificateur = $this->initialiser($parametresUrl);
 
try {
$verificateur->verifierValeurs();
} catch(Exception $e) {
$messageComplet = array("Erreur dans le paramètrage de votre URL :");
$messageTpl = "Le paramètre '%s' ne peut pas prendre la valeur 'declencheException'. Valeurs permises : %s";
$messageComplet[] = $messageAttendu = sprintf($messageTpl, 'recherche', 'stricte|floue|etendue');
$this->assertContains($messageAttendu, $e->getMessage());
$messageComplet[] = $messageAttendu = sprintf($messageTpl, 'ns.format', 'htm|txt');
$this->assertContains($messageAttendu, $e->getMessage());
$messageComplet[] = $messageAttendu = sprintf($messageTpl, 'retour', 'application/json|image/jpeg');
$this->assertContains($messageAttendu, $e->getMessage());
$messageComplet[] = $messageAttendu = sprintf($messageTpl, 'retour.format', 'min|max|oss|perso');
$this->assertContains($messageAttendu, $e->getMessage());
$messageComplet[] = $messageAttendu = sprintf($messageTpl, 'retour.langue', '/^(?:[*]|orig|[a-z]{2})$/');
$this->assertContains($messageAttendu, $e->getMessage());
$messageComplet[] = $messageAttendu = sprintf($messageTpl, 'ns.structure', '|an|au|bib|ad');
$this->assertContains($messageAttendu, $e->getMessage());
$messageComplet[] = $messageAttendu = sprintf($messageTpl, 'version.projet', '/^(?:[0-9]+[.][0-9]+|[*+])$/');
$this->assertContains($messageAttendu, $e->getMessage());
 
$this->assertEquals(implode('<br/>', $messageComplet), $e->getMessage());
return null;
}
$this->fail("Aucune exception n'a été soulevée.");
}
 
public function testerExceptionVerificationConformiteApi() {
$parametresUrl = array('code1' => 'val1');
$parametresAPI = array('paramApi');
 
$verificateur = $this->initialiser($parametresUrl, $parametresAPI);
 
try {
$verificateur->verifierConformiteApi();
} catch(Exception $e) {
$messageAttendu = "Le paramètre 'code1' n'est pas pris en compte par cette version de l'API.";
$this->assertEquals($messageAttendu, $e->getMessage());
return null;
}
$this->fail("Aucune exception n'a été soulevée.");
}
 
public function testerExceptionVerifierValeurSimple() {
$parametresUrl = array('recherche' => 'declencheException');
 
$verificateur = $this->initialiser($parametresUrl);
 
try {
$verificateur->verifierValeurs();
} catch(Exception $e) {
$messageAttendu = "Le paramètre 'recherche' ne peut pas prendre la valeur 'declencheException'. Valeurs permises : ";
$this->assertContains($messageAttendu, $e->getMessage());
return null;
}
$this->fail("Aucune exception n'a été soulevée.");
}
 
public function testerExceptionVerifierValeurRegExp() {
$parametresUrl = array('retour.langue' => '1');
 
$verificateur = $this->initialiser($parametresUrl);
 
try {
$verificateur->verifierValeurs();
} catch(Exception $e) {
$messageAttendu = "Le paramètre 'retour.langue' ne peut pas prendre la valeur '1'. Valeurs permises : ";
$this->assertContains($messageAttendu, $e->getMessage());
return null;
}
$this->fail("Aucune exception n'a été soulevée.");
}
 
public function testerExceptionVerifierValeurMultiple() {
$parametresUrl = array('ns.structure' => 'an,1');
 
$verificateur = $this->initialiser($parametresUrl);
 
try {
$verificateur->verifierValeurs();
} catch(Exception $e) {
$messageAttendu = "Le paramètre 'ns.structure' ne peut pas prendre la valeur '1'. Valeurs permises : ";
$this->assertContains($messageAttendu, $e->getMessage());
return null;
}
$this->fail("Aucune exception n'a été soulevée.");
}
}
?>