The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/local/bin/perl -w

use CGI::Builder::Auth::RealmManager;

BEGIN {
    unlink <./db.passwd*>;
    unlink <./db.group*>;
}
END {
    unlink <./db.passwd*>;
    unlink <./db.group*>;
}

sub test {
    my($num, $true,$msg) = @_;
    print($true ? "ok $num\n" : "not ok $num $msg\n");
}

unless (eval { require DB_File } ) {
  print "1..0 # Skipped: no DB_File module installed\n";
  exit 0;
}
print "1..14\n";

test 1,$db = CGI::Builder::Auth::RealmManager->open(-config=>'./t/realms.conf',
	                               -realm=>'test2',
				       -writable=>1);
test 2,$db->set_passwd(-user=>'lincoln',
		       -passwd=>'xyzzy',
		       -fields=>{ Name=>'Lincoln D. Stein'});
test 3,$db->passwd('lincoln');
test 4,$db->match(-user=>'lincoln',-passwd=>'xyzzy');
test 5,$fields = $db->get_fields(-user=>'lincoln');
test 6,$fields->{Name} eq 'Lincoln D. Stein';
test 7,$db->set_group(-user=>'lincoln',-group=>[qw/users administrators authors/]);
test 8,$db->set_passwd(-user=>'fred',
		       -passwd=>'xyzzy',
		       -fields=>{ Name=>'Fred Smith' });
test 9,$db->set_passwd(-user=>'anne',
		       -passwd=>'xyzzy',
		       -fields=>{ Name=>'Anne Greenaway' });
test 10,$db->set_group(-user=>'fred',
		       -group=>[qw/users/]);
test 11,$db->set_group(-user=>'anne',
		       -group=>[qw/users authors/]);
test 12,$db->group(-user=>'anne',-group=>'authors');
test 13,join(' ',sort $db->group('lincoln')) eq 'administrators authors users';
test 14,join(' ',sort $db->members('authors')) eq 'anne lincoln';