EmailValidator: use structured answer.

master
Matt Miller 2014-10-14 18:35:18 +02:00
parent 191b2779cc
commit 142cce16af
2 changed files with 73 additions and 20 deletions

View File

@ -35,22 +35,28 @@ handle remainder => sub {
return if !$address; return if !$address;
my $email_valid = Email::Valid->new( my $email_valid = Email::Valid->new(
-tldcheck => 1, -tldcheck => 1,
); );
# Danger: address returns possible modified string! # Danger: address returns possible modified string!
my $result = $email_valid->address($address); my $result = $email_valid->address($address);
my $message;
if (!$result) { if (!$result) {
my $message = ''; if (defined $message_part->{$email_valid->details}) {
if(defined $message_part->{$email_valid->details}) { $message = "$address is invalid. Please check the " . $message_part->{$email_valid->details} . ".";
$message = "$address is invalid. Please check the " . $message_part->{$email_valid->details} . "."; }
} $message ||= 'E-mail address $address is invalid.';
} else {
return $message || "E-mail address $address is invalid." $message = "$address appears to be valid.";
} }
return "$address is valid."; return $message,
structured_answer => {
input => [html_enc($address)],
operation => 'email address validation',
result => html_enc($message),
};
}; };
1; 1;

View File

@ -5,22 +5,69 @@ use warnings;
use Test::More; use Test::More;
use DDG::Test::Goodie; use DDG::Test::Goodie;
zci answer_type => 'email_validation'; zci answer_type => 'email_validation';
zci is_cached => 1; zci is_cached => 1;
ddg_goodie_test( ddg_goodie_test(
[ ['DDG::Goodie::EmailValidator'],
'DDG::Goodie::EmailValidator' 'validate my email foo@example.com' => test_zci(
], qr/appears to be valid/,
'validate foo' => undef, structured_answer => {
'validate my email foo@example.com' => test_zci (qr/is valid/), input => ['foo@example.com'],
'validate my email foo+abc@example.com' => test_zci (qr/is valid/), operation => 'email address validation',
'validate my email foo.bar@example.com' => test_zci (qr/is valid/), result => qr/appears to be valid/
'validate user@exampleaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.com' => test_zci (qr/Please check the address/), }
'validate foo@example.com' => test_zci (qr/is valid/), ),
'validate foo@!!!.com' => test_zci(qr/Please check the fully qualified domain name/), 'validate my email foo+abc@example.com' => test_zci(
'validate foo@example.lmnop' => test_zci(qr/Please check the top-level domain/), qr/appears to be valid/,
structured_answer => {
input => ['foo+abc@example.com'],
operation => 'email address validation',
result => qr/appears to be valid/
}
),
'validate my email foo.bar@example.com' => test_zci(
qr/appears to be valid/,
structured_answer => {
input => ['foo.bar@example.com'],
operation => 'email address validation',
result => qr/appears to be valid/
}
),
'validate user@exampleaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.com'
=> test_zci(
qr/Please check the address/,
structured_answer => {
input => '-ANY-',
operation => 'email address validation',
result => qr/Please check the address/,
}
),
'validate foo@example.com' => test_zci(
qr/appears to be valid/,
structured_answer => {
input => ['foo@example.com'],
operation => 'email address validation',
result => qr/appears to be valid/
}
),
'validate foo@!!!.com' => test_zci(
qr/Please check the fully qualified domain name/,
structured_answer => {
input => ['foo@!!!.com'],
operation => 'email address validation',
result => qr/Please check the fully qualified domain name/,
}
),
'validate foo@example.lmnop' => test_zci(
qr/Please check the top-level domain/,
structured_answer => {
input => ['foo@example.lmnop'],
operation => 'email address validation',
result => qr/Please check the top-level domain/,
}
),
'validate foo' => undef,
); );
done_testing; done_testing;