1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
use strict;
use warnings;
use Test::More;
use lib 't/lib';
use_ok( 'HTML::FormHandler::Field::Text' );
my $field = HTML::FormHandler::Field::Text->new(
name => 'password',
type => 'Text',
required => 1,
password => 1,
);
$field->build_result;
is( $field->password, 1, 'password is set');
$field->_set_value('abcdef');
is( $field->value, 'abcdef', 'set and get value' );
is( $field->fif, '', 'no fif for password');
$field = HTML::FormHandler::Field::Text->new(
name => 'not_password',
type => 'Text',
required => 1,
);
$field->build_result;
is( $field->password, undef, 'password is not set');
$field->_set_value('abcdef');
is( $field->value, 'abcdef', 'set and get value' );
is( $field->fif, 'abcdef', 'get fif');
use HTML::FormHandler;
use_ok( 'HTML::FormHandler::Field::Password' );
{
package My::Form;
use Moose;
extends 'HTML::FormHandler';
sub field_list {
return [
login => 'Text',
username => 'Text',
password => { type => 'Password',
ne_username => 'username',
minlength => 6,
},
];
}
}
my $form = My::Form->new;
$field = $form->field('password');
my $params = {
username => 'my4username',
password => 'something'
};
$form->process( $params );
ok( $field, 'got password field' );
$field->_set_input( '2192ab201def' );
$field->validate_field;
ok( !$field->has_errors, 'Test for errors 1' );
$field->_set_input( 'ab1' );
$field->validate_field;
ok( $field->has_errors, 'too short' );
$field->_set_input( 'my4username' );
$field->validate_field;
ok( $field->has_errors, 'matches username' );
$field->_set_input( '' );
$field->validate_field;
ok( !$field->has_errors, 'empty password accepted' );
is($field->noupdate, 1, 'noupdate has been set on password field' );
my $pass = 'my4user5name';
$field->_set_input( $pass );
$field->validate_field;
ok( !$field->has_errors, 'just right' );
is ( $field->value, $pass, 'Input and value match' );
{
package Password::Form;
use HTML::FormHandler::Moose;
extends 'HTML::FormHandler';
has '+field_name_space' => ( default => 'Field' );
has_field 'password' => ( type => 'Password', required => 1 );
has_field '_password' => ( type => 'PasswordConf',
messages => { required => 'You must enter the password a second time' },
);
}
$form = Password::Form->new;
ok( $form, 'form created' );
$params = {
password => '',
_password => '',
};
$form->process( params => $params );
ok( !$form->validated, 'form validated' );
ok( !$form->field('password')->noupdate, q[noupdate is 'false' on password field] );
ok( $form->field('_password')->has_errors, 'Password confirmation has errors' );
is( $form->field('_password')->errors->[0], 'You must enter the password a second time' );
$form->process( params => { password => 'aaaaaa', _password => 'bbbb' } );
ok( $form->field('_password')->has_errors, 'Password confirmation has errors' );
$form->process( params => { password => 'aaaaaa', _password => 'aaaaaa' } );
ok( $form->validated, 'password confirmation validated' );
done_testing;
|