From: <Mar...@nt...> - 2004-11-30 21:43:30
|
Author: MartinCleaver Date: 2004-11-30 13:43:12 -0800 (Tue, 30 Nov 2004) New Revision: 3311 Added: twiki/scratch/RegisterCgiScriptRewrite/tools/test/TestCaseStdOutCapturer.pm twiki/scratch/RegisterCgiScriptRewrite/tools/test/TestRegister.pm Removed: twiki/scratch/RegisterCgiScriptRewrite/tools/test/RegisterTestCase.pm Log: RegisterCgiScriptRewrite: almost read for merge back to main, just got to try the test cases now Deleted: twiki/scratch/RegisterCgiScriptRewrite/tools/test/RegisterTestCase.pm =================================================================== --- twiki/scratch/RegisterCgiScriptRewrite/tools/test/RegisterTestCase.pm 2004-11-30 21:42:51 UTC (rev 3310) +++ twiki/scratch/RegisterCgiScriptRewrite/tools/test/RegisterTestCase.pm 2004-11-30 21:43:12 UTC (rev 3311) @@ -1,473 +0,0 @@ -#! perl -w - -package RegisterUnitTestCase; -use TestCaseStdOutCapturer; -use base qw(Test::Unit::TestCase); -use lib "../.."; -use strict; -use diagnostics; -use TWiki::UI::Register; -use Data::Dumper; - -sub new { - my $self = shift()->SUPER::new(@_); - print "\n" x 20; - print "Screen cleared\n"; - # your state for fixture here - return $self; -} - -sub set_up { - my $self = shift; - setupUnregistered(); - print "--------------- ".$self->name()." ----------------------\n"; - # provide fixture -} - -sub tear_down { - - # clean up after test - print "\n== done ==\n"; -} - -my $email = 'martin.cleaver@BCS.org.uk'; - -sub register { - my $self = shift; - - my $query = new CGI ({ - 'TopicName' => [ - 'TWikiRegistration' - ], - 'Twk1Email' => [ - $email - ], - 'Twk1WikiName' => [ - 'TestUser' - ], - 'Twk1Name' => [ - 'Test User' - ], - 'Twk0Comment' => [ - '' - ], - 'Twk1LoginName' => [ - 'testuser' - ], - 'Twk1FirstName' => [ - 'Test' - ], - 'Twk1LastName' => [ - 'User' - ], - 'action' => [ - 'register' - ] - }); - return Test::Unit::IO::StdoutCapture::do { - TWiki::UI::Register::register(query=>$query, - sendActivationCode=>1, - tempUserDir=>"/tmp"); - } -} - -sub j { - return join("\r\n",@_); -} - -sub verify { - my $self = shift; - my $code = shift; - my $query = new CGI ({ - 'code' => [ - $code - ], - 'action' => [ - 'verify' - ] - }); - - return Test::Unit::IO::StdoutCapture::do { - TWiki::UI::Register::verifyEmailAddress( - 'needApproval' => 1, - 'tempUserDir' => '/tmp', - 'query' => $query - ) - }; -} - -my $expectedRegisterOk = j("Status: 302 Moved", - "Location: http://cairotwiki.mrjc.com/oops/People/TWikiRegistration?template=oopsregconfirm&param1=$email", "", ""); - - -sub test_registerVerifyOk { - my $self = shift; - - $self->assert_equals( - $self->register(), - $expectedRegisterOk - ); - $self->assert_equals( - $self->verify('TestUser.foo'), - "x" - ); -} - -sub test_registerIllegitamateBypassApprove { - -} - -sub test_registerBadVerify { - my $self = shift; - $self->assert_equals( - $self->register(), - $expectedRegisterOk - ); - $self->assert_equals( - $self->verify('TestUser.bad'), - "" - ); -} - -sub Atest_registerTwiceWikiName { - -} - -sub Atest_registerTwiceEmailAddress { - -} - -sub test_resetPasswordNoSuchUser { - my $query = new CGI ( - { - '.path_info' => '/People/WebHome', - 'LoginName' => [ - 'RichCleaver' - ], - 'TopicName' => [ - 'ResetPassword' - ], - 'action' => [ - 'resetPassword' - ] - }); - - initialise($query, 'guest'); - TWiki::UI::Register::resetPassword(query => $query); - - -} -sub test_resetPasswordNoPassword { - my $self = shift; - my $query = new CGI ( - { - '.path_info' => '/People/WebHome', - 'LoginName' => [ - 'TWikiGuest' - ], - 'TopicName' => [ - 'ResetPassword' - ], - 'action' => [ - 'resetPassword' - ] - }); - - initialise($query, 'guest'); - my $ans = Test::Unit::IO::StdoutCapture::do { - TWiki::UI::Register::resetPassword(query => $query); - } || ""; - - if ($ans =~ /oopsregemail/) { # assert sigfaults on dreamhost - $self->assert_equals("1", "1"); - } else { - $self->assert_equals("can't find (oopsregemail)",$ans); - } - -} - -sub test_resetPasswordOkay { - ## Need to create an account (else oopsnotwikiuser) - ### with a known email address (else oopsregemail) - my $self = shift; - my $query = new CGI ( - { - '.path_info' => '/People/WebHome', - 'LoginName' => [ - 'TestNormalUser' - ], - 'TopicName' => [ - 'ResetPassword' - ], - 'action' => [ - 'resetPassword' - ] - }); - - initialise($query, 'guest'); - my $ans = Test::Unit::IO::StdoutCapture::do { - TWiki::UI::Register::resetPassword(query => $query); - } || ""; - - if ($ans =~ /resetpassword/) { # assert sigfaults on dreamhost - $self->assert_equals("1", "1"); - } else { - $self->assert_equals("reset password (resetpassword)",$ans); - } -} - - -my $name; -my $code; -my $dir; -my %regSave; - -sub setupUnregistered { - $name = "MartinCleaver"; - $code = "$name.ba"; - $dir = "/tmp"; - - %regSave = (doh => "homer", - VerificationCode => $code, - WikiName => $name - ); -UnregisteredUser::setDir($dir); -} - -sub test_UnregisteredUser { - my $self = shift; - $self->unregisteredSave($code); - $self->unregisteredReload($code); - $self->unregisteredAlreadyDeleted($code); -} - -sub unregisteredSave { - my $self = shift; - my $code = shift; - - UnregisteredUser::putRegDetailsByCode(\%regSave); - - my %result = %{UnregisteredUser::_getRegDetailsByCode($code)}; -# print Dumper(\%result); - $self->assert_equals($result{doh}, - "homer" - ); -} - -sub unregisteredReload { - my ($self, $code) =@_; - my %result2 = UnregisteredUser::reloadUserContext($code); - print "FOO". Dumper(\%result2); - $self->assert_deep_equals(\%result2, \%regSave); -} - -sub test_missingElements { - my ($self) = shift; - my @present = ("one","two","three"); - my @required = ("one","two","six"); - - - $self->assert_deep_equals([TWiki::UI::Register::missingElements(\@present, \@required)] ["six"]); - $self->assert_deep_equals( [TWiki::UI::Register::missingElements(\@present, \@present)], []); -} - -sub test_buildRegistrationEmail { - my ($self) = shift; - - my %data = ( - 'CompanyName' => '', - 'Country' => 'Saudi Arabia', - 'Password' => 'mypassword', - 'form' => [ - { - 'value' => 'Test User', - 'required' => '1', - 'name' => 'Name' - }, - { - 'value' => 'root@localhost', - 'required' => '1', - 'name' => 'Email' - }, - { - 'value' => '', - 'required' => '0', - 'name' => 'CompanyName' - }, - { - 'value' => '', - 'required' => '0', - 'name' => 'CompanyURL' - }, - { - 'value' => 'Saudi Arabia', - 'required' => '1', - 'name' => 'Country' - }, - { - 'value' => '', - 'required' => '0', - 'name' => 'Comment' - }, - { - 'value' => 'mypassword', - 'name' => 'Password', - } - ], - 'VerificationCode' => 'TestUser.foo', - 'Name' => 'Test User', - 'webName' => 'People', - 'WikiName' => 'TestUser', - 'Comment' => '', - 'CompanyURL' => '', - 'passwordA' => 'mypassword', - 'passwordB' => 'mypassword', - 'Email' => 'root@localhost', - 'debug' => 1, - 'Confirm' => 'mypassword' - ); - - my $expected = <<'EOM'; -Test User - TestUser - root@localhost - - * Name: Test User - * Email: root@localhost - * CompanyName: - * CompanyURL: - * Country: Saudi Arabia - * Comment: - * Password: mypassword -EOM - - $self->assert_equals( TWiki::UI::Register::buildConfirmationEmail (\%data, - "%FIRSTLASTNAME% - %WIKINAME% - %EMAILADDRESS%\n\n%FORMDATA%",0), $expected); - -} - - -sub unregisteredAlreadyDeleted { - my ($self, $code) =@_; - # if _deleteUserContext is commented out this will fail! -# $self->assert_null( UnregisteredUser::reloadUserContext($code)); -# print Dumper(\%result3); -} - -my $mainweb = "People"; - - -# I added a behaviour but don't want to break the old behaviour. - -sub test_userToWikiName { - my $self = shift; - my $query = new CGI(); - initialise($query, 'guest'); - $self->assert_equals( - TWiki::userToWikiName("NoSuchUser") - ,$mainweb.".NoSuchUser"); - $self->assert_equals( - TWiki::userToWikiName("NoSuchUser",1) - ,"NoSuchUser"); - $self->assert_null( - TWiki::userToWikiName("NoSuchUser",2) - ); -} - -sub test_getUserByEitherLoginOrWikiName { - my $self = shift; - my $query = new CGI(); - initialise($query, 'guest'); - - { - my ($w, $l) = TWiki::UI::Register::getUserByEitherLoginOrWikiName("guest"); - $self->assert_equals($w, "TWikiGuest"); - $self->assert_equals($l, "guest"); - } - { - my ($w, $l) = TWiki::UI::Register::getUserByEitherLoginOrWikiName("TWikiGuest"); - $self->assert_equals($w, "TWikiGuest"); - $self->assert_equals($l, "guest"); - } - { - my ($w, $l) = TWiki::UI::Register::getUserByEitherLoginOrWikiName("notfound"); - $self->assert_null($w); - $self->assert_null($l); - } - { - my ($w, $l) = TWiki::UI::Register::getUserByEitherLoginOrWikiName("NoSuchUser"); - $self->assert_null($w); - $self->assert_null($l); - } -} - - -sub initialise { - my ( $query, $remoteUser ) = @_; - my $topic = $query->param( 'topic' ) || $query->param( 'TopicName' ); # SMELL - why both? what order? - - my $webName; - ( $topic, $webName ) = - TWiki::initialize( $query->path_info(), $remoteUser, $topic, $query->url, $query ); # SMELL - topic input and output? -# die "$webName.$topic"; - return ( $topic, $webName ); -} - -sub test_bulkRegister { - my $query = new CGI ({ - 'LogTopic' => [ - 'People.UnprocessedRegistrationsLog' - ], - 'EmailUsersWithDetails' => [ - '0' - ], - 'OverwriteHomeTopics' => [ - '1' - ], - }); -# $ENV{'SCRIPT_URL'} = "/bin/view"; - $query->script_name("/bin/view"); - $query->remote_user("mrjcleaver"); - $query->path_info('/People.UnprocessedRegistrations'); - initialise($query, 'mrjcleaver'); - TWiki::UI::Register::bulkRegister(query=>$query); - -} - - -sub Atest_works { - my $self = shift; - $self->assert_equals("a", "a"); -} - -sub Atest_thisFaultsTestUnit { - my $self = shift; - $self->assert_equals( "1", "2" ); -} - -# Test::Unit segfaults on failure for me, but this at least keeps the interface working -sub assert_equals { - my ( $self, $compare, $with ) = @_; - if ( $compare eq $with ) { -# print "ok ($compare == $with)\n"; - return 1; - } - else { - print "failed ('$compare' == '$with') \n"; - return -1; - } -} - -############### -package main; - -use Test::Unit::TestRunner; - -sub main { - my $testRunner = Test::Unit::TestRunner->new(); - $testRunner->start("RegisterUnitTestCase"); -} - -main() unless defined caller; - -1; - - Copied: twiki/scratch/RegisterCgiScriptRewrite/tools/test/TestCaseStdOutCapturer.pm (from rev 3215, twiki/scratch/RegisterCgiScriptRewrite/lib/TWiki/UI/TestCaseStdOutCapturer.pm) Copied: twiki/scratch/RegisterCgiScriptRewrite/tools/test/TestRegister.pm (from rev 3302, twiki/scratch/RegisterCgiScriptRewrite/tools/test/RegisterTestCase.pm) |