mourningdove/t/check-email.t

65 lines
1.6 KiB
Perl
Raw Normal View History

2026-05-24 01:03:05 +00:00
# t/check-email.t
#
# Test email checking logic
#
# Authors:
# Afuna <coder.dw@afunamatata.com>
#
# Copyright (c) 2014 by Dreamwidth Studios, LLC.
#
# This program is free software; you may redistribute it and/or modify it under
# the same terms as Perl itself. For a copy of the license, please reference
# 'perldoc perlartistic' or 'perldoc perlgpl'.
#
use strict;
use warnings;
use Test::More;
BEGIN { $LJ::_T_CONFIG = 1; require "$ENV{LJHOME}/cgi-bin/ljlib.pl"; }
use LJ::User;
my @tests = (
['example@example.com'],
['EXAMPLE@EXAMPLE.COM'],
# basic error-checking
[ ' ', 'empty' ],
[ 'example.com', 'bad_form' ],
[ 'a,b@example.com', 'bad_username' ],
[ 'www.a@example.com', 'web_address' ],
# domain name
[ 'example@email.email', ],
[ 'example@email.ph', ],
[ 'example@a.baddomainname', 'bad_domain' ],
# misspellings
[ 'example@gmali.com', 'bad_spelling' ],
[ 'example@yaaho.com', 'bad_spelling' ],
[ 'example@hotmail.cm', 'bad_spelling' ],
[ 'example@outlok.com', 'bad_spelling' ],
[ 'example@aoll.com', 'bad_spelling' ],
[ 'example@liev.com', 'bad_spelling' ],
);
plan tests => scalar @tests;
sub check_email {
my ( $email, $expected_error ) = @_;
$expected_error ||= "";
my @email_errors;
LJ::check_email( $email, undef, undef, undef, \@email_errors );
is_deeply(
\@email_errors,
$expected_error ? [$expected_error] : [],
"checked '$email' with error '$expected_error'"
);
}
foreach my $test (@tests) {
check_email(@$test);
}