From: naoki i. <am...@us...> - 2008-04-28 11:17:38
|
Update of /cvsroot/popfile/engine/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27948/tests Modified Files: TestBayes.tst TestHTML.script TestHTML.tst TestPOP3.tst Log Message: Change Log 1. POP3 proxy no longer returns both '+OK' and '-ERR' when bad account is passed Proxy/POP3.pm 2. POP3S proxy and POP3 proxy share the POP3 accounts Classifier/Bayes.pm 3. Account table is used in the transparent proxy mode too Classifier/Bayes.pm In the transparent proxy mode, if the specified user is not found then POPFile will use the accounts table. 4. Add 'timeout' status message on the Password page 5. Add status messages for changing between Multiuser and Single user modes on the Administration page UI/HTML.pm languages/English.pm languages/Nihongo.pm 6. Add multiuser mode tests tests/TestPOP3.tst 7. Add some tests tests/TestBayes.tst tests for copying magnets and corpus tests for get_magnet_header_and_value 8. Fix TestHTML to pass on MSWin32 tests/TestHTML.tst tests/TestHTML.script 9. Remove an unwanted comment UI/HTML.pm Current state of the test suite: TestBayesScript PASS TestBayes PASS TestConfiguration PASS TestHistory PASS TestHTML PASS * TestHTTP PASS TestIMAP PASS TestInsertScript PASS * TestLogger PASS TestMailParse PASS TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 PASS TestProxy PASS TestWordMangle PASS TestXMLRPC PASS * : TODO : needs to add tests for multi user support Index: TestHTML.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestHTML.tst,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** TestHTML.tst 9 Apr 2008 17:20:48 -0000 1.39 --- TestHTML.tst 28 Apr 2008 11:17:43 -0000 1.40 *************** *** 22,25 **** --- 22,30 ---- # --------------------------------------------------------------------------------------------- + use POSIX qw(locale_h); + + if ( $^O eq 'MSWin32' && setlocale(LC_COLLATE) eq 'Japanese_Japan.932' ) { + setlocale(LC_COLLATE,'C'); + } # Set up the test corpus and use the Test msg and cls files # to create a current history set *************** *** 492,496 **** if ( $line =~ /^MATCH +(.+)$/ ) { ! my $result = test_assert_regexp( $content, "\Q$1\E", "From script line $line_number" ); if ( !$result ) { open HTML, ">testhtml_match$line_number.html"; --- 497,503 ---- if ( $line =~ /^MATCH +(.+)$/ ) { ! my $string = $1; ! $content =~ s/([0-9]\.[0-9]+e[-\+])0([0-9]{2})/$1$2/ if ( $^O eq 'MSWin32' ); ! my $result = test_assert_regexp( $content, "\Q$string\E", "From script line $line_number" ); if ( !$result ) { open HTML, ">testhtml_match$line_number.html"; Index: TestHTML.script =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestHTML.script,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** TestHTML.script 25 Apr 2008 16:26:50 -0000 1.39 --- TestHTML.script 28 Apr 2008 11:17:43 -0000 1.40 *************** *** 559,562 **** --- 559,563 ---- GET /history CLICK clearpage + GET /history NOTMATCH Jump to message MATCH Recent Messages (9) Index: TestPOP3.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestPOP3.tst,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** TestPOP3.tst 25 Apr 2008 16:26:50 -0000 1.37 --- TestPOP3.tst 28 Apr 2008 11:17:43 -0000 1.38 *************** *** 28,31 **** --- 28,32 ---- use IO::Socket; use Digest::MD5; + use strict; unlink 'popfile.db'; *************** *** 406,409 **** --- 407,419 ---- $p->config_('secure_ssl', $old_config_value ); + # create user and account for the multiuser mode tests + + my $session = $b->get_administrator_session_key(); + test_assert( defined( $session ) ); + + my ( $result, $password ) = $b->create_user( $session, 'transparent' ); + test_assert( $b->add_account( $session, 1, 'pop3', '127.0.0.1:gooduser' ) == 1 ); + + $b->release_session_key( $session ); # some tests require this directory to be present *************** *** 541,544 **** --- 551,567 ---- next; } + + if ( $command =~ /__MULTIUSERMODE/ ) { + $p->global_config_( 'single_user', 0 ); + print $uwriter "OK\n"; + next; + } + + if ( $command =~ /__SINGLEUSERMODE/ ) { + $p->global_config_( 'single_user', 1 ); + print $uwriter "OK\n"; + next; + } + } select ( undef, undef, undef, 0.05 ); *************** *** 1991,1994 **** --- 2014,2121 ---- $b->release_session_key( $session ); + # Multiuser mode tests + + print $dwriter "__MULTIUSERMODE :\n"; + $line = <$ureader>; + test_assert_equal( $line, "OK\n" ); + + $client = IO::Socket::INET->new( + Proto => "tcp", + PeerAddr => 'localhost', + PeerPort => $port ); + + test_assert( defined( $client ) ); + + test_assert( $client->connected ); + + $result = <$client>; + test_assert_equal( $result, + "+OK POP3 POPFile (test suite) server ready$eol" ); + + print $client "USER 127.0.0.1:8110:gooduser$eol"; + $result = <$client>; + test_assert_equal( $result, "+OK Welcome gooduser$eol" ); + + print $client "PASS secret$eol"; + $result = <$client>; + test_assert_equal( $result, "+OK Now logged in$eol" ); + + my $cd = 10; + while ( $cd-- ) { + select( undef, undef, undef, 0.1 ); + $mq->service(); + $h->service(); + } + + close $client; + + # transparent proxy + + $client = IO::Socket::INET->new( + Proto => "tcp", + PeerAddr => 'localhost', + PeerPort => $port ); + + test_assert( defined( $client ) ); + + test_assert( $client->connected ); + + $result = <$client>; + test_assert_equal( $result, + "+OK POP3 POPFile (test suite) server ready$eol" ); + + print $client "USER 127.0.0.1:8110:transparent$eol"; + $result = <$client>; + test_assert_equal( $result, "+OK Welcome transparent$eol" ); + + print $client "PASS secret$eol"; + $result = <$client>; + test_assert_equal( $result, "+OK Now logged in$eol" ); + + my $cd = 10; + while ( $cd-- ) { + select( undef, undef, undef, 0.1 ); + $mq->service(); + $h->service(); + } + + close $client; + + # bad account + + $client = IO::Socket::INET->new( + Proto => "tcp", + PeerAddr => 'localhost', + PeerPort => $port ); + + test_assert( defined( $client ) ); + + test_assert( $client->connected ); + + $result = <$client>; + test_assert_equal( $result, + "+OK POP3 POPFile (test suite) server ready$eol" ); + + print $client "USER 127.0.0.1:8110:noaccount$eol"; + $result = <$client>; + test_assert_equal( $result, "+OK Welcome noaccount$eol" ); + + print $client "PASS secret$eol"; + $result = <$client>; + test_assert_equal( $result, "-ERR Unknown account 127.0.0.1:noaccount$eol" ); + + my $cd = 10; + while ( $cd-- ) { + select( undef, undef, undef, 0.1 ); + $mq->service(); + $h->service(); + } + + close $client; + + print $dwriter "__SINGLEUSERMODE :\n"; + $line = <$ureader>; + test_assert_equal( $line, "OK\n" ); + # Send the remote server a special message that makes it die *************** *** 2068,2072 **** if ( $command =~ /^USER (.*)/i ) { ! if ( $1 =~ /(gooduser|goslow|hang|slowlf)/ ) { print $client "+OK Welcome $1$eol"; $goslow = ( $1 =~ /goslow/ ); --- 2195,2199 ---- if ( $command =~ /^USER (.*)/i ) { ! if ( $1 =~ /(gooduser|goslow|hang|slowlf|transparent|noaccount)/ ) { print $client "+OK Welcome $1$eol"; $goslow = ( $1 =~ /goslow/ ); Index: TestBayes.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestBayes.tst,v retrieving revision 1.65 retrieving revision 1.66 diff -C2 -d -r1.65 -r1.66 *** TestBayes.tst 25 Apr 2008 16:26:49 -0000 1.65 --- TestBayes.tst 28 Apr 2008 11:17:43 -0000 1.66 *************** *** 325,328 **** --- 325,329 ---- # create_user with cloning admin + # the magnets and corpus are not copied my ( $success4, $password4 ) = $b->create_user( $session, 'testuser4', 'admin' ); *************** *** 353,357 **** my @buckets1 = sort $b->get_all_buckets( $session ); my @buckets4 = sort $b->get_all_buckets( $session4 ); ! for my $i (0..3) { test_assert_equal( $buckets1[$i], $buckets4[$i] ); --- 354,358 ---- my @buckets1 = sort $b->get_all_buckets( $session ); my @buckets4 = sort $b->get_all_buckets( $session4 ); ! for my $i (0..$#buckets1) { test_assert_equal( $buckets1[$i], $buckets4[$i] ); *************** *** 374,378 **** } ! # word count (corpus does not be copied) test_assert_equal( $b->get_word_count( $session4 ), 0 ); --- 375,379 ---- } ! # word count (corpus is not copied) test_assert_equal( $b->get_word_count( $session4 ), 0 ); *************** *** 385,389 **** $b->release_session_key( $session4 ); ! # TODO : cloning with magnets and corpus option # initialize_users_password --- 386,431 ---- $b->release_session_key( $session4 ); ! # create_user with cloning admin ! # the magnets and corpus are copied ! ! my ( $success5, $password5 ) = $b->create_user( $session, 'testuser5', 'admin', 1, 1 ); ! test_assert_equal( $success5, 0 ); ! test_assert( defined( $password5 ) ); ! test_assert( $password5 ne '' ); ! ! my $id5 = $b->get_user_id( $session, 'testuser5' ); ! test_assert( defined( $id5 ) ); ! ! my $session5 = $b->get_session_key( 'testuser5', $password5 ); ! ! # magnets (magnets are copied) ! ! my @mags1 = $b->get_buckets_with_magnets( $session ); ! my @mags5 = $b->get_buckets_with_magnets( $session5 ); ! test_assert_equal( $#mags1, $#mags5 ); ! for (0..$#mags1) { ! test_assert_equal( $mags1[$_], $mags5[$_] ); ! } ! ! my @types1 = $b->get_magnet_types_in_bucket( $session, 'personal' ); ! my @types5 = $b->get_magnet_types_in_bucket( $session5, 'personal' ); ! test_assert_equal( $#types1, $#types5 ); ! for (0..$#types1) { ! test_assert_equal( $types1[$_], $types5[$_] ); ! } ! ! # word count (corpus is copied) ! ! test_assert_equal( $b->get_word_count( $session5 ), ! $b->get_word_count( $session ) ); ! ! foreach my $bucket (@buckets4) { ! test_assert_equal( $b->get_bucket_word_count( $session5, $bucket ), ! $b->get_bucket_word_count( $session, $bucket ) ); ! test_assert_equal( $b->get_bucket_unique_count( $session5, $bucket ), ! $b->get_bucket_unique_count( $session, $bucket ) ); ! } ! ! $b->release_session_key( $session5 ); # initialize_users_password *************** *** 703,706 **** --- 745,763 ---- #close FILE; + # get_magnet_header_and_value + + my ( $header, $value ) = $b->get_magnet_header_and_value( $session, 1 ); + test_assert( defined( $header ) ); + test_assert_equal( $header, 'Subject' ); + test_assert_equal( $value, 'bar' ); + ( $header, $value ) = $b->get_magnet_header_and_value( $session, 2 ); + test_assert( defined( $header ) ); + test_assert_equal( $header, 'To' ); + test_assert_equal( $value, 'ba...@ba...' ); + ( $header, $value ) = $b->get_magnet_header_and_value( $session, 3 ); + test_assert( defined( $header ) ); + test_assert_equal( $header, 'From' ); + test_assert_equal( $value, 'foo' ); + # create_magnet *************** *** 862,866 **** $b->create_magnet( $session, 'zeotrope', 'from', 'cxc...@ya...' ); test_assert_equal( $b->classify( $session, 'TestMailParse021.msg' ), 'zeotrope' ); ! test_assert_equal( $b->{magnet_detail__}, 5 ); test_assert( $b->{magnet_used__} ); --- 919,923 ---- $b->create_magnet( $session, 'zeotrope', 'from', 'cxc...@ya...' ); test_assert_equal( $b->classify( $session, 'TestMailParse021.msg' ), 'zeotrope' ); ! test_assert_equal( $b->{magnet_detail__}, 8 ); test_assert( $b->{magnet_used__} ); |