package AuthService; sub login { my ($user, $password) = @_; return (defined($user) && defined($password) && $user eq "eric" && $password eq "swordfish"); } 1; use Test::More tests => 4; use Tk; use strict; use LoginForm; my $mw = MainWindow->new; my $lf = LoginForm->new($mw, -logincmd => \&AuthService::login )->pack; my $msg = $lf->Subwidget('Message'); ##################################### ## No Parameters Set ##################################### $lf->Login; is($msg->cget(-text), "Login Failed!", "No user or password set"); ##################################### ## Good credentials ##################################### setUserPassword($lf, "eric", "swordfish"); $lf->Login; is($msg->cget(-text), "Login Successful", "Valid credentials set"); ##################################### ## No username set, good password ##################################### setUserPassword($lf, "", "swordfish"); $lf->Login; is($msg->cget(-text), "Login Failed!", "User not set, Password set"); ##################################### ## Correct User set, no password ##################################### setUserPassword($lf, "eric", ""); $lf->Login; is($msg->cget(-text), "Login Failed!", "User set, no password"); $mw->destroy; ############################################### ## Convenience routines ############################################### sub setUserPassword { my ($lf, $user, $pass) = @_; clearLoginForm($lf); $lf->Subwidget('UserEntry')->insert(0, $user); $lf->Subwidget('PassEntry')->insert(0, $pass); } sub clearLoginForm { my $lf = shift; $lf->Subwidget('Message')->configure(-text => ""); $lf->Subwidget('UserEntry')->delete(0, 'end'); $lf->Subwidget('PassEntry')->delete(0, 'end'); }