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;
my $email_valid = Email::Valid->new(
-tldcheck => 1,
-tldcheck => 1,
);
# Danger: address returns possible modified string!
my $result = $email_valid->address($address);
my $message;
if (!$result) {
my $message = '';
if(defined $message_part->{$email_valid->details}) {
$message = "$address is invalid. Please check the " . $message_part->{$email_valid->details} . ".";
}
return $message || "E-mail address $address is invalid."
if (defined $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 {
$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;

View File

@ -5,22 +5,69 @@ use warnings;
use Test::More;
use DDG::Test::Goodie;
zci answer_type => 'email_validation';
zci is_cached => 1;
ddg_goodie_test(
[
'DDG::Goodie::EmailValidator'
],
'validate foo' => undef,
'validate my email foo@example.com' => test_zci (qr/is valid/),
'validate my email foo+abc@example.com' => test_zci (qr/is valid/),
'validate my email foo.bar@example.com' => test_zci (qr/is 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 foo@example.lmnop' => test_zci(qr/Please check the top-level domain/),
['DDG::Goodie::EmailValidator'],
'validate my email 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 my email foo+abc@example.com' => test_zci(
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;