1# $Id: test.pl,v 1.1.1.1 2002/07/26 18:58:46 root Exp $ 2# $Log: test.pl,v $ 3# Revision 1.1.1.1 2002/07/26 18:58:46 root 4# initial 5# 6# Revision 0.3 1998/10/22 02:49:53 meltzek 7# Added verbose begining and ending of test. 8# 9# Revision 0.2 1998/10/22 02:46:56 meltzek 10# Added new checks. 11# 12 13BEGIN { $| = 1; print "Tests 1..20 begining\n"; } 14END {print "not ok 1\n" unless $loaded;} 15use Apache::Htpasswd; 16 17$loaded = 1; 18print "ok 1\n"; 19 20######################### End of black magic. 21 22sub report_result { 23 my $ok = shift; 24 $TEST_NUM ||= 2; 25 print "not " unless $ok; 26 print "ok $TEST_NUM\n"; 27 print "@_\n" if (not $ok and $ENV{TEST_VERBOSE}); 28 $TEST_NUM++; 29} 30 31sub report_skip { 32 my $why = shift; 33 print "not ok $TEST_NUM # SKIP $why\n"; 34 $TEST_NUM++; 35} 36 37# Create a test password file 38my $File = "testpasswords.test"; 39open(TEST,">$File") || die "Can't run tests because I can't create $File [$!]"; 40print TEST "kevin:kjDqW.pgNIz3Ufoo:suvPq./X7Q8nk\n"; 41close TEST; 42 43 44 45{ 46 47 # 2: Get file 48 &report_result($pwdFile = new Apache::Htpasswd ($File), $! ); 49 50 # 3: store a value 51 &report_result($pwdFile->htpasswd("foo","foobar") , $! ); 52 53 # 4: change value 54 &report_result(!$pwdFile->htpasswd("fooo", "goo","foobar" ) , $! ); 55 &report_result($pwdFile->htpasswd("foo", "goo","foobar" ) , $! ); 56 57 # 5: force change value 58 &report_result($pwdFile->htpasswd("foo","ummm",{'overwrite' => 1}), $! ); 59 60 # 6: check the stored value 61 &report_result($pwdFile->fetchPass("foo") , $!); 62 63 # 7: check whether the empty key exists() 64 &report_result($pwdFile->htCheckPassword("foo","ummm"),$!); 65 66 # 8: add extra info 67 &report_result($pwdFile->writeInfo("kevin", "Test info"),$!); 68 69 # 9: fetch extra info 70 &report_result($pwdFile->fetchInfo("kevin"),$!); 71 72 # 10: Delete user 73 &report_result($pwdFile->htDelete("kevin"),$!); 74 75 # 11: get list 76 my @list = $pwdFile->fetchUsers(); 77 &report_result($list[0] eq 'foo', $!); 78 79 # 12: get number of users 80 my $num = $pwdFile->fetchUsers(); 81 &report_result($num == 1, $!); 82 83 undef $pwdFile; 84 85 # 13: Create in read-only mode 86 &report_result($pwdFile = new Apache::Htpasswd({passwdFile => $File, ReadOnly => 1}), $! ); 87 88 # 14: store a value (should fail) 89 # Should carp, but don't want to display it 90 sub Apache::Htpasswd::carp {}; 91 &report_result(!$pwdFile->htpasswd("kevin","zog") , $! ); 92 93} 94 95open(TEST,">>$File"); 96print TEST "cryptuser:Iao36C/TVmCRc\n"; 97print TEST "MD5user:\$apr1\$Yy.pS/..\$4bwpMUiVq/95BDr4kZ2lK.\n"; 98print TEST "SHA1user:{SHA}QL0AFWMIX8NRZTKeof9cXsvbvu8=\n"; 99print TEST "plainuser:123\n"; 100close TEST; 101 102{ 103 # 16: Create in read-only mode with UsePlain 104 &report_result($pwdFile = new Apache::Htpasswd({passwdFile => $File, ReadOnly => 1, UsePlain => 1}), $! ); 105 106 # 17: check whether crypt passwords work 107 &report_result($pwdFile->htCheckPassword("cryptuser","123"),$!); 108 109 # 18: check whether MD5 passwords work 110 eval { require Crypt::PasswdMD5 }; 111 if ($@) { 112 &report_skip('Crypt::PasswdMD5 required for this test'); 113 } else { 114 &report_result($pwdFile->htCheckPassword("MD5user","123"),$!); 115 } 116 117 # 19: check whether SHA1 passwords work 118 eval { require Digest::SHA; require MIME::Base64 }; 119 if ($@) { 120 &report_skip('Digest::SHA and MIME::Base64 required for this test'); 121 } else { 122 &report_result($pwdFile->htCheckPassword("SHA1user","123"),$!); 123 } 124 125 # 20: check whether plain passwords work 126 &report_result($pwdFile->htCheckPassword("plainuser","123"),$!); 127 128} 129 130print "Test complete.\n"; 131