Apache2-ASP
view release on metacpan or search on metacpan
sbin/asphelper view on Meta::CPAN
# We pull our warnings from a YAML properties file so they can be changed easily:
my $props = Data::Properties::YAML->new(
properties_file => $Config->web->application_root . '/etc/properties.yaml',
)->contact_form;
my $errors = { };
# Validate first_name:
unless( length($Form->{first_name}) )
{
$errors->{first_name} = $props->first_name->is_missing;
}# end unless()
# Validate last_name:
unless( length($Form->{last_name}) )
{
$errors->{last_name} = $props->last_name->is_missing;
}# end unless()
# Validate email:
if( length($Form->{email}) )
{
# Just a simple regex - knock yourself out if you want:
unless( $Form->{email} =~ m/^.*?@.*?\..+$/ )
{
$errors->{email} = $props->email->is_invalid;
}# end unless()
}
else
{
$errors->{email} = $props->email->is_missing;
}# end if()
# Validate message:
unless( length($Form->{message}) )
{
$errors->{message} = $props->message->is_missing;
}# end unless()
return keys(%$errors) ? $errors : undef;
}# end validate()
1;# return true:
HANDLER
close($handler_ofh);
mkdir "$args->{domain}/t";
open my $t_ofh, '>', "$args->{domain}/t/01.01-contact_form.t";
print $t_ofh <<'TEST';
#!/usr/bin/perl -w
use strict;
use warnings 'all';
use Test::More 'no_plan';
use base 'Apache2::ASP::Test::Base';
use HTML::Form;
use Data::Properties::YAML;
ok( my $s = __PACKAGE__->SUPER::new() );
# Get our contact_form testing data:
my %data = $s->data->contact_form->as_hash;
my $props = Data::Properties::YAML->new(
properties_file => $s->ua->context->config->web->application_root . '/etc/properties.yaml',
)->contact_form;
# Will it load?:
{
my $res = $s->ua->get("/examples/contact.asp");
is( $res->is_success => 1, "/examples/contact.asp loads");
}
### Validation Testing:
# first_name:
{
local $data{first_name} = '';
my $res = $s->ua->post("/handlers/examples.contact", [
%data
]);
# Redirected?:
is( $res->header('location') => '/examples/contact.asp' );
# Correct validation message?:
is(
$s->ua->context->session->{validation_errors}->{first_name} => $props->first_name->is_missing
);
}
# last_name:
{
local $data{last_name} = '';
my $res = $s->ua->post("/handlers/examples.contact", [
%data,
]);
# Redirected?:
is( $res->header('location') => '/handlers/examples.contact' );
# Correct validation message?:
is(
$s->ua->context->session->{validation_errors}->{last_name} => $props->last_name->is_missing
);
}
# email - missing:
{
local $data{email} = '';
my $res = $s->ua->post("/handlers/examples.contact", [
%data,
]);
# Redirected?:
is( $res->header('location') => '/handlers/examples.contact' );
# Correct validation message?:
is(
$s->ua->context->session->{validation_errors}->{email} => $props->email->is_missing
( run in 1.333 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )