/t/password.t

http://github.com/gshank/html-formhandler · Raku · 128 lines · 89 code · 39 blank · 0 comment · 1 complexity · 0869830ce14569b108741c35c877f9dd MD5 · raw file

  1. use strict;
  2. use warnings;
  3. use Test::More;
  4. use lib 't/lib';
  5. use_ok( 'HTML::FormHandler::Field::Text' );
  6. my $field = HTML::FormHandler::Field::Text->new(
  7. name => 'password',
  8. type => 'Text',
  9. required => 1,
  10. password => 1,
  11. );
  12. is( $field->password, 1, 'password is set');
  13. $field->_set_value('abcdef');
  14. is( $field->value, 'abcdef', 'set and get value' );
  15. is( $field->fif, '', 'no fif for password');
  16. $field = HTML::FormHandler::Field::Text->new(
  17. name => 'not_password',
  18. type => 'Text',
  19. required => 1,
  20. );
  21. is( $field->password, undef, 'password is not set');
  22. $field->_set_value('abcdef');
  23. is( $field->value, 'abcdef', 'set and get value' );
  24. is( $field->fif, 'abcdef', 'get fif');
  25. use HTML::FormHandler;
  26. use_ok( 'HTML::FormHandler::Field::Password' );
  27. {
  28. package My::Form;
  29. use Moose;
  30. extends 'HTML::FormHandler';
  31. sub field_list {
  32. return [
  33. login => 'Text',
  34. username => 'Text',
  35. password => { type => 'Password',
  36. ne_username => 'username',
  37. minlength => 6,
  38. },
  39. ];
  40. }
  41. }
  42. my $form = My::Form->new;
  43. $field = $form->field('password');
  44. my $params = {
  45. username => 'my4username',
  46. password => 'something'
  47. };
  48. $form->process( $params );
  49. ok( $field, 'got password field' );
  50. $field->_set_input( '2192ab201def' );
  51. $field->validate_field;
  52. ok( !$field->has_errors, 'Test for errors 1' );
  53. $field->_set_input( 'ab1' );
  54. $field->validate_field;
  55. ok( $field->has_errors, 'too short' );
  56. $field->_set_input( 'my4username' );
  57. $field->validate_field;
  58. ok( $field->has_errors, 'matches username' );
  59. $field->_set_input( '' );
  60. $field->validate_field;
  61. ok( !$field->has_errors, 'empty password accepted' );
  62. is($field->noupdate, 1, 'noupdate has been set on password field' );
  63. my $pass = 'my4user5name';
  64. $field->_set_input( $pass );
  65. $field->validate_field;
  66. ok( !$field->has_errors, 'just right' );
  67. is ( $field->value, $pass, 'Input and value match' );
  68. {
  69. package Password::Form;
  70. use HTML::FormHandler::Moose;
  71. extends 'HTML::FormHandler';
  72. has '+field_name_space' => ( default => 'Field' );
  73. has_field 'password' => ( type => 'Password', required => 1 );
  74. has_field '_password' => ( type => 'PasswordConf', );
  75. }
  76. $form = Password::Form->new;
  77. ok( $form, 'form created' );
  78. $params = {
  79. password => ''
  80. };
  81. $form->process( params => $params );
  82. ok( !$form->validated, 'form validated' );
  83. ok( !$form->field('password')->noupdate, q[noupdate is 'false' on password field] );
  84. ok( $form->field('_password')->has_errors, 'Password confirmation has errors' );
  85. $form->process( params => { password => 'aaaaaa', _password => 'bbbb' } );
  86. ok( $form->field('_password')->has_errors, 'Password confirmation has errors' );
  87. $form->process( params => { password => 'aaaaaa', _password => 'aaaaaa' } );
  88. ok( $form->validated, 'password confirmation validated' );
  89. done_testing;