use strict; use warnings FATAL => qw(all); use Cwd qw(cwd); use File::Spec (); use lib File::Spec->catfile(cwd, qw(t lib)); use My::CommonTestRoutines; # localize tmpdir to our test directory no warnings qw(once); local *File::Spec::tmpdir = sub { My::CommonTestRoutines->tmpdir }; use Test::More tests => 12; my $class = qw(My::EmptySubclass); use_ok($class); my $random = '9ce6504a9e74713662717c613cd49226'; # yelzja { my $o = $class->new; my $ok = $o->verify('yelzja', $random); ok (! $ok, 'no secret'); } my $o = $class->new(secret => 'secret', username => 'demo'); { my $ok = $o->verify; ok (! $ok, 'no captcha or random arguments'); } { my $ok = $o->verify('yelzja'); ok (! $ok, 'no random argument'); } { my $ok = $o->verify(undef, $random); ok (! $ok, 'no input argument'); } { my $ok = $o->verify('wvphn', $random); ok (! $ok, 'improper captcha length'); } { my $ok = $o->verify('wvph1h', $random); ok (! $ok, 'improper captcha contents'); } { my $ok = $o->verify('yelzja', 'RandomZufall'); ok (! $ok, 'captcha match but no sanity file'); } { my $file = File::Spec->catfile(My::CommonTestRoutines->tmpdir, qw(CaptchasDotNet), $random); my $fh = IO::File->new(">$file"); undef $fh; { my $ok = $o->verify('yelzjj', $random); ok (! $ok, 'captcha mismatch'); } { my $ok = $o->verify('yelzja', $random); ok ($ok, 'captcha match'); } }