psaml errors

This commit is contained in:
Eduardo Gulias Davis
2021-02-28 16:26:08 +01:00
parent b79cd8f033
commit 06579b96ca
6 changed files with 38 additions and 35 deletions
-11
View File
@@ -87,17 +87,6 @@ class EmailParser extends Parser
return $this->localPart;
}
private function hasAtToken() : bool
{
$this->lexer->moveNext();
$this->lexer->moveNext();
if ($this->lexer->token['type'] === EmailLexer::S_AT) {
return false;
}
return true;
}
private function addLongEmailWarning(string $localPart, string $parsedDomainPart) : void
{
if (strlen($localPart . '@' . $parsedDomainPart) > self::EMAIL_MAX_LENGTH) {
+2 -13
View File
@@ -63,7 +63,7 @@ class MessageIDParser extends Parser
{
$localPartParser = new LocalPart($this->lexer);
$localPartResult = $localPartParser->parse();
$this->localPart = $localPartParser->localPart();
$this->idLeft = $localPartParser->localPart();
$this->warnings = array_merge($localPartParser->getWarnings(), $this->warnings);
return $localPartResult;
@@ -73,7 +73,7 @@ class MessageIDParser extends Parser
{
$domainPartParser = new IDRightPart($this->lexer);
$domainPartResult = $domainPartParser->parse();
$this->domainPart = $domainPartParser->domainPart();
$this->idRight = $domainPartParser->domainPart();
$this->warnings = array_merge($domainPartParser->getWarnings(), $this->warnings);
return $domainPartResult;
@@ -89,17 +89,6 @@ class MessageIDParser extends Parser
return $this->idRight;
}
private function hasAtToken() : bool
{
$this->lexer->moveNext();
$this->lexer->moveNext();
if ($this->lexer->token['type'] === EmailLexer::S_AT) {
return false;
}
return true;
}
private function addLongEmailWarning(string $localPart, string $parsedDomainPart) : void
{
if (strlen($localPart . '@' . $parsedDomainPart) > self::EMAILID_MAX_LENGTH) {
+14 -3
View File
@@ -20,13 +20,13 @@ abstract class Parser
*/
protected $lexer;
/**
* id-left "@" id-right
*/
abstract protected function parseRightFromAt() : Result;
abstract protected function parseLeftFromAt() : Result;
abstract protected function preLeftParsing() : Result;
/**
* id-left "@" id-right
*/
public function parse(string $str) : Result
{
$this->lexer->setInput($str);
@@ -62,4 +62,15 @@ abstract class Parser
{
return $this->warnings;
}
protected function hasAtToken() : bool
{
$this->lexer->moveNext();
$this->lexer->moveNext();
if ($this->lexer->token['type'] === EmailLexer::S_AT) {
return false;
}
return true;
}
}
-3
View File
@@ -246,9 +246,6 @@ class DomainPart extends Parser
return $result;
}
/**
* @return InvalidEmail|ValidEmail
*/
protected function checkDomainPartExceptions(array $prev, bool $hasComments) : Result
{
if ($this->lexer->token['type'] === EmailLexer::S_OPENBRACKET && $prev['type'] !== EmailLexer::S_AT) {
+16 -5
View File
@@ -9,12 +9,23 @@ use Egulias\EmailValidator\Result\Reason\ExceptionFound;
class MessageIDValidation implements EmailValidation
{
/**
* @var array
*/
private $warnings = [];
/**
* @var ?InvalidEmail
*/
private $error;
public function isValid(string $email, EmailLexer $emailLexer): bool
{
$this->parser = new MessageIDParser($emailLexer);
$parser = new MessageIDParser($emailLexer);
try {
$result = $this->parser->parse($email);
$this->warnings = $this->parser->getWarnings();
$result = $parser->parse($email);
$this->warnings = $parser->getWarnings();
if ($result->isInvalid()) {
/** @psalm-suppress PropertyTypeCoercion */
$this->error = $result;
@@ -30,11 +41,11 @@ class MessageIDValidation implements EmailValidation
public function getWarnings(): array
{
return [];
return $this->warnings;
}
public function getError(): ?InvalidEmail
{
return null;
return $this->error;
}
}
@@ -47,4 +47,10 @@ class MessageIDValidationTest extends TestCase
['example@ia\na.'],
];
}
public function testInvalidMessageIDsWithError()
{
$this->markTestIncomplete("missing error check");
}
}