Changeset 1603
- Timestamp:
- 05/26/08 21:41:52 (3 months ago)
- Files:
-
- trunk/src/main/php/net/stubbles/ipo/request/filter/stubMailFilter.php (modified) (1 diff)
- trunk/src/main/resources/ipo/request.xml (modified) (3 diffs)
- trunk/src/test/php/net/stubbles/integration/stubRequestValueErrorXJConfFactoryTestCase.php (modified) (4 diffs)
- trunk/src/test/php/net/stubbles/ipo/request/filter/stubMailFilterTestCase.php (modified) (3 diffs)
- trunk/src/test/php/net/stubbles/ipo/request/validator/stubMailValidatorTestCase.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/main/php/net/stubbles/ipo/request/filter/stubMailFilter.php
r1547 r1603 62 62 public function execute($value) 63 63 { 64 if ($this->mailValidator->validate($value) === false) { 65 throw new stubFilterException($this->rveFactory->create('MAILADDRESS_INCORRECT')); 64 if (strlen($value) === 0) { 65 return null; 66 } 67 68 if ($this->mailValidator->validate($value) === true) { 69 return $value; 70 } 71 72 // check for spaces 73 if (preg_match('/\s/i', $value) != false) { 74 throw new stubFilterException($this->rveFactory->create('MAILADDRESS_CANNOT_CONTAIN_SPACES')); 66 75 } 67 76 68 return $value; 77 // check for German umlaut 78 if (preg_match('/[üöäß]/i', $value) != false) { 79 throw new stubFilterException($this->rveFactory->create('MAILADDRESS_CANNOT_CONTAIN_UMLAUTS')); 80 } 81 82 // check for more than one '@' 83 if (substr_count($value, '@') != 1) { 84 throw new stubFilterException($this->rveFactory->create('MAILADDRESS_MUST_CONTAIN_ONE_AT')); 85 } 86 87 // check for valid chars in email 88 if (preg_match('/^[' . preg_quote('abcdefghijklmnopqrstuvwxyz1234567890@.+_-') . ']+$/iD', $value) == false) { 89 throw new stubFilterException($this->rveFactory->create('MAILADDRESS_CONTAINS_ILLEGAL_CHARS')); 90 } 91 92 if (strpos($value, '..') !== false) { 93 throw new stubFilterException($this->rveFactory->create('MAILADDRESS_CONTAINS_TWO_FOLLOWING_DOTS')); 94 } 95 96 throw new stubFilterException($this->rveFactory->create('MAILADDRESS_INCORRECT')); 69 97 } 70 98 } trunk/src/main/resources/ipo/request.xml
r1602 r1603 28 28 <message locale="en_*">Please enter a correct value.</message> 29 29 <message locale="de_*">Bitte geben Sie einen korrekten Wert an.</message> 30 <message locale="fr_*">Votre choix nâest pas valide. Veuillez modifier votre choix.</message> 31 <message locale="es_*">Selección no válida. Vuelva a realizar la selección.</message> 30 32 </messages> 31 33 <valueKeys /> … … 127 129 </valueKeys> 128 130 </error> 131 <error id="MAILADDRESS_CANNOT_CONTAIN_SPACES"> 132 <messages> 133 <message locale="default">The mail address can not contain spaces.</message> 134 <message locale="en_*">The mail address can not contain spaces.</message> 135 <message locale="de_*">Die E-Mail Adresse darf keine Leerzeichen enthalten.</message> 136 <message locale="fr_*">Lâadresse email ne doit pas comporter dâespace.</message> 137 <message locale="es_*">La dirección de e-mail no deberá contener espacios en blanco.</message> 138 </messages> 139 <valueKeys /> 140 </error> 141 <error id="MAILADDRESS_CANNOT_CONTAIN_UMLAUTS"> 142 <messages> 143 <message locale="default">The mail address can not contain german umlauts nor the character 'Ã'.</message> 144 <message locale="en_*">The mail address can not contain german umlauts nor the character 'Ã'.</message> 145 <message locale="de_*">Die E-Mail Adresse darf keine Umlaute oder 'Ã' enthalten.</message> 146 <message locale="fr_*">Lâadresse email ne doit pas comporter dâaccent.</message> 147 <message locale="es_*">La dirección de e-mail no deberá contener caracteres con tilde o diéresis.</message> 148 </messages> 149 <valueKeys /> 150 </error> 151 <error id="MAILADDRESS_CONTAINS_ILLEGAL_CHARS"> 152 <messages> 153 <message locale="default">The mail address contains illegal characters.</message> 154 <message locale="en_*">The mail address contains illegal characters.</message> 155 <message locale="de_*">Die E-Mail Adresse enthÀlt ungÃŒltige Zeichen.</message> 156 <message locale="fr_*">Lâadresse email comporte des caractÚres invalides.</message> 157 <message locale="es_*">La dirección de e-mail contiene caracteres no válidos.</message> 158 </messages> 159 <valueKeys /> 160 </error> 161 <error id="MAILADDRESS_MUST_CONTAIN_ONE_AT"> 162 <messages> 163 <message locale="default">The mail address must contain exactly one '@' sign.</message> 164 <message locale="en_*">The mail address must contain exactly one '@' sign.</message> 165 <message locale="de_*">Eine E-Mail-Adresse muss genau ein '@' enthalten.</message> 166 <message locale="fr_*">Une adresse email doit comporter exactement un '@'.</message> 167 <message locale="es_*">La dirección de e-mail introducida no es válida. Por favor, introdúzcala de nuevo correctamente.</message> 168 </messages> 169 <valueKeys /> 170 </error> 171 <error id="MAILADDRESS_CONTAINS_TWO_FOLLOWING_DOTS"> 172 <messages> 173 <message locale="default">The mail address can not contain two consecutive dots.</message> 174 <message locale="en_*">The mail address can not contain two consecutive dots.</message> 175 <message locale="de_*">Die E-Mail Adresse darf keine zwei aufeinanderfolgenden Punkte enthalten.</message> 176 <message locale="fr_*">Lâadresse email ne doit pas comporter deux points à la suite.</message> 177 <message locale="es_*">La dirección de e-mail no deberá incluir dos puntos seguidos.</message> 178 </messages> 179 <valueKeys /> 180 </error> 129 181 <error id="MAILADDRESS_INCORRECT"> 130 182 <messages> … … 132 184 <message locale="en_*">The mail address is not correct.</message> 133 185 <message locale="de_*">Die E-Mail-Adresse ist nicht korrekt.</message> 186 <message locale="fr_*">Le format de lâadresse email est invalide. Veuillez modifier votre saisie selon le modÚle [nom@domaine.fr].</message> 187 <message locale="es_*">El formato del e-mail no es válido. Por favor, introduzca su e-mail de nuevo correctamente.</message> 134 188 </messages> 135 189 <valueKeys /> trunk/src/test/php/net/stubbles/integration/stubRequestValueErrorXJConfFactoryTestCase.php
r1602 r1603 37 37 $this->DATE_TOO_EARLY($rveFactory); 38 38 $this->DATE_TOO_LATE($rveFactory); 39 $this->MAILADDRESS_CANNOT_CONTAIN_SPACES($rveFactory); 40 $this->MAILADDRESS_CANNOT_CONTAIN_UMLAUTS($rveFactory); 41 $this->MAILADDRESS_MUST_CONTAIN_ONE_AT($rveFactory); 42 $this->MAILADDRESS_CONTAINS_ILLEGAL_CHARS($rveFactory); 43 $this->MAILADDRESS_CONTAINS_TWO_FOLLOWING_DOTS($rveFactory); 39 44 $this->MAILADDRESS_INCORRECT($rveFactory); 40 45 $this->URL_INCORRECT($rveFactory); … … 57 62 $this->DATE_TOO_EARLY($rveFactory); 58 63 $this->DATE_TOO_LATE($rveFactory); 64 $this->MAILADDRESS_CANNOT_CONTAIN_SPACES($rveFactory); 65 $this->MAILADDRESS_CANNOT_CONTAIN_UMLAUTS($rveFactory); 66 $this->MAILADDRESS_MUST_CONTAIN_ONE_AT($rveFactory); 67 $this->MAILADDRESS_CONTAINS_ILLEGAL_CHARS($rveFactory); 68 $this->MAILADDRESS_CONTAINS_TWO_FOLLOWING_DOTS($rveFactory); 59 69 $this->MAILADDRESS_INCORRECT($rveFactory); 60 70 $this->URL_INCORRECT($rveFactory); … … 291 301 292 302 /** 303 * test that the MAILADDRESS_CANNOT_CONTAIN_SPACES error is created 304 * 305 * @param stubRequestValueErrorFactory $rveFactory 306 */ 307 public function MAILADDRESS_CANNOT_CONTAIN_SPACES($rveFactory) 308 { 309 $requestError = $rveFactory->create('MAILADDRESS_CANNOT_CONTAIN_SPACES'); 310 $this->assertType('stubRequestValueError', $requestError); 311 $this->assertEquals('MAILADDRESS_CANNOT_CONTAIN_SPACES', $requestError->getId()); 312 $this->assertTrue($requestError->hasMessage('default')); 313 $this->assertTrue($requestError->hasMessage('en_*')); 314 $this->assertTrue($requestError->hasMessage('de_*')); 315 $this->assertTrue($requestError->hasMessage('fr_*')); 316 $this->assertTrue($requestError->hasMessage('es_*')); 317 $requestError2 = $rveFactory->create('MAILADDRESS_CANNOT_CONTAIN_SPACES'); 318 $this->assertNotSame($requestError, $requestError2); 319 } 320 321 /** 322 * test that the MAILADDRESS_CANNOT_CONTAIN_UMLAUTS error is created 323 * 324 * @param stubRequestValueErrorFactory $rveFactory 325 */ 326 public function MAILADDRESS_CANNOT_CONTAIN_UMLAUTS($rveFactory) 327 { 328 $requestError = $rveFactory->create('MAILADDRESS_CANNOT_CONTAIN_UMLAUTS'); 329 $this->assertType('stubRequestValueError', $requestError); 330 $this->assertEquals('MAILADDRESS_CANNOT_CONTAIN_UMLAUTS', $requestError->getId()); 331 $this->assertTrue($requestError->hasMessage('default')); 332 $this->assertTrue($requestError->hasMessage('en_*')); 333 $this->assertTrue($requestError->hasMessage('de_*')); 334 $this->assertTrue($requestError->hasMessage('fr_*')); 335 $this->assertTrue($requestError->hasMessage('es_*')); 336 $requestError2 = $rveFactory->create('MAILADDRESS_CANNOT_CONTAIN_UMLAUTS'); 337 $this->assertNotSame($requestError, $requestError2); 338 } 339 340 /** 341 * test that the MAILADDRESS_MUST_CONTAIN_ONE_AT error is created 342 * 343 * @param stubRequestValueErrorFactory $rveFactory 344 */ 345 public function MAILADDRESS_MUST_CONTAIN_ONE_AT($rveFactory) 346 { 347 $requestError = $rveFactory->create('MAILADDRESS_MUST_CONTAIN_ONE_AT'); 348 $this->assertType('stubRequestValueError', $requestError); 349 $this->assertEquals('MAILADDRESS_MUST_CONTAIN_ONE_AT', $requestError->getId()); 350 $this->assertTrue($requestError->hasMessage('default')); 351 $this->assertTrue($requestError->hasMessage('en_*')); 352 $this->assertTrue($requestError->hasMessage('de_*')); 353 $this->assertTrue($requestError->hasMessage('fr_*')); 354 $this->assertTrue($requestError->hasMessage('es_*')); 355 $requestError2 = $rveFactory->create('MAILADDRESS_MUST_CONTAIN_ONE_AT'); 356 $this->assertNotSame($requestError, $requestError2); 357 } 358 359 /** 360 * test that the MAILADDRESS_CONTAINS_ILLEGAL_CHARS error is created 361 * 362 * @param stubRequestValueErrorFactory $rveFactory 363 */ 364 public function MAILADDRESS_CONTAINS_ILLEGAL_CHARS($rveFactory) 365 { 366 $requestError = $rveFactory->create('MAILADDRESS_CONTAINS_ILLEGAL_CHARS'); 367 $this->assertType('stubRequestValueError', $requestError); 368 $this->assertEquals('MAILADDRESS_CONTAINS_ILLEGAL_CHARS', $requestError->getId()); 369 $this->assertTrue($requestError->hasMessage('default')); 370 $this->assertTrue($requestError->hasMessage('en_*')); 371 $this->assertTrue($requestError->hasMessage('de_*')); 372 $this->assertTrue($requestError->hasMessage('fr_*')); 373 $this->assertTrue($requestError->hasMessage('es_*')); 374 $requestError2 = $rveFactory->create('MAILADDRESS_CONTAINS_ILLEGAL_CHARS'); 375 $this->assertNotSame($requestError, $requestError2); 376 } 377 378 /** 379 * test that the MAILADDRESS_CONTAINS_TWO_FOLLOWING_DOTS error is created 380 * 381 * @param stubRequestValueErrorFactory $rveFactory 382 */ 383 public function MAILADDRESS_CONTAINS_TWO_FOLLOWING_DOTS($rveFactory) 384 { 385 $requestError = $rveFactory->create('MAILADDRESS_CONTAINS_TWO_FOLLOWING_DOTS'); 386 $this->assertType('stubRequestValueError', $requestError); 387 $this->assertEquals('MAILADDRESS_CONTAINS_TWO_FOLLOWING_DOTS', $requestError->getId()); 388 $this->assertTrue($requestError->hasMessage('default')); 389 $this->assertTrue($requestError->hasMessage('en_*')); 390 $this->assertTrue($requestError->hasMessage('de_*')); 391 $this->assertTrue($requestError->hasMessage('fr_*')); 392 $this->assertTrue($requestError->hasMessage('es_*')); 393 $requestError2 = $rveFactory->create('MAILADDRESS_CONTAINS_TWO_FOLLOWING_DOTS'); 394 $this->assertNotSame($requestError, $requestError2); 395 } 396 397 /** 293 398 * test that the MAILADDRESS_INCORRECT error is created 294 399 * … … 303 408 $this->assertTrue($requestError->hasMessage('en_*')); 304 409 $this->assertTrue($requestError->hasMessage('de_*')); 410 $this->assertTrue($requestError->hasMessage('fr_*')); 411 $this->assertTrue($requestError->hasMessage('es_*')); 305 412 $requestError2 = $rveFactory->create('MAILADDRESS_INCORRECT'); 306 413 $this->assertNotSame($requestError, $requestError2); trunk/src/test/php/net/stubbles/ipo/request/filter/stubMailFilterTestCase.php
r1546 r1603 47 47 48 48 /** 49 * assure that empty values are returned as null 50 * 51 * @test 52 */ 53 public function emptyValues() 54 { 55 $this->mockMailValidator->expects($this->never())->method('validate'); 56 $this->assertNull($this->mailFilter->execute('')); 57 $this->assertNull($this->mailFilter->execute(null)); 58 } 59 60 /** 49 61 * assure that values are returned the expected way 50 62 * … … 64 76 * @expectedException stubFilterException 65 77 */ 66 public function wrongValue() 78 public function spacesTriggerException() 79 { 80 $this->mockMailValidator->expects($this->once())->method('validate')->will($this->returnValue(false)); 81 $this->mockRequestValueErrorFactory->expects($this->once()) 82 ->method('create') 83 ->with($this->equalTo('MAILADDRESS_CANNOT_CONTAIN_SPACES')) 84 ->will($this->returnValue(new stubRequestValueError('foo', array('en_EN' => 'Something wrent wrong.')))); 85 $this->mailFilter->execute('space in@mailadre.ss'); 86 } 87 88 /** 89 * assure that an exceptiom is thrown when a wrong value is passed 90 * 91 * @test 92 * @expectedException stubFilterException 93 */ 94 public function germanUmlautTriggerException() 95 { 96 $this->mockMailValidator->expects($this->once())->method('validate')->will($this->returnValue(false)); 97 $this->mockRequestValueErrorFactory->expects($this->once()) 98 ->method('create') 99 ->with($this->equalTo('MAILADDRESS_CANNOT_CONTAIN_UMLAUTS')) 100 ->will($this->returnValue(new stubRequestValueError('foo', array('en_EN' => 'Something wrent wrong.')))); 101 $this->mailFilter->execute('föö@mailadre.ss'); 102 } 103 104 /** 105 * assure that an exceptiom is thrown when a wrong value is passed 106 * 107 * @test 108 * @expectedException stubFilterException 109 */ 110 public function moreThanOneAtTriggerException() 111 { 112 $this->mockMailValidator->expects($this->once())->method('validate')->will($this->returnValue(false)); 113 $this->mockRequestValueErrorFactory->expects($this->once()) 114 ->method('create') 115 ->with($this->equalTo('MAILADDRESS_MUST_CONTAIN_ONE_AT')) 116 ->will($this->returnValue(new stubRequestValueError('foo', array('en_EN' => 'Something wrent wrong.')))); 117 $this->mailFilter->execute('foo@bar@mailadre.ss'); 118 } 119 120 /** 121 * assure that an exceptiom is thrown when a wrong value is passed 122 * 123 * @test 124 * @expectedException stubFilterException 125 */ 126 public function illegalCharsTriggerException() 127 { 128 $this->mockMailValidator->expects($this->once())->method('validate')->will($this->returnValue(false)); 129 $this->mockRequestValueErrorFactory->expects($this->once()) 130 ->method('create') 131 ->with($this->equalTo('MAILADDRESS_CONTAINS_ILLEGAL_CHARS')) 132 ->will($this->returnValue(new stubRequestValueError('foo', array('en_EN' => 'Something wrent wrong.')))); 133 $this->mailFilter->execute('foo&/4@mailadre.ss'); 134 } 135 136 /** 137 * assure that an exceptiom is thrown when a wrong value is passed 138 * 139 * @test 140 * @expectedException stubFilterException 141 */ 142 public function twoFollowingDotsTriggerException() 143 { 144 $this->mockMailValidator->expects($this->once())->method('validate')->will($this->returnValue(false)); 145 $this->mockRequestValueErrorFactory->expects($this->once()) 146 ->method('create') 147 ->with($this->equalTo('MAILADDRESS_CONTAINS_TWO_FOLLOWING_DOTS')) 148 ->will($this->returnValue(new stubRequestValueError('foo', array('en_EN' => 'Something wrent wrong.')))); 149 $this->mailFilter->execute('foo..bar@mailadre.ss'); 150 } 151 152 /** 153 * assure that an exceptiom is thrown when a wrong value is passed 154 * 155 * @test 156 * @expectedException stubFilterException 157 */ 158 public function otherErrorsTriggerException() 67 159 { 68 160 $this->mockMailValidator->expects($this->once())->method('validate')->will($this->returnValue(false)); … … 71 163 ->with($this->equalTo('MAILADDRESS_INCORRECT')) 72 164 ->will($this->returnValue(new stubRequestValueError('foo', array('en_EN' => 'Something wrent wrong.')))); 73 $this->mailFilter->execute( null);165 $this->mailFilter->execute('foobar@mailadre.ss'); 74 166 } 75 167 } trunk/src/test/php/net/stubbles/ipo/request/validator/stubMailValidatorTestCase.php
r1547 r1603 51 51 52 52 /** 53 * test other failing addresses 54 * 55 * @test 56 */ 57 public function failingAddresses() 58 { 59 $this->assertFalse($this->mailValidator->validate('space in@mailadre.ss')); 60 $this->assertFalse($this->mailValidator->validate('föö@mailadre.ss')); 61 $this->assertFalse($this->mailValidator->validate('foo@bar@mailadre.ss')); 62 $this->assertFalse($this->mailValidator->validate('foo&/4@mailadre.ss')); 63 $this->assertFalse($this->mailValidator->validate('foo..bar@mailadre.ss')); 64 } 65 66 /** 53 67 * assure that returning the criterias works correct 54 68 *
