Apache-Roaming

 view release on metacpan or  search on metacpan

t/10methods.t  view on Meta::CPAN

# -*- perl -*-

require File::Spec;
require Symbol;


my $test_num = 0;
my($cfg, $pid, $lwp);
sub Test ($;$) {
    my $result = shift; my $msg = shift;
    $msg = '' unless defined($msg);
    ++$test_num;
    print "not " unless $result;
    print "ok $test_num$msg\n";
    $result;
}

sub Request ($$$;$$@) {
    my($ua, $method, $url, $type, $contents, @headers) = @_;
    $url = 'http://127.0.0.1:' . $cfg->{'httpd_port'} . $url;
    my $req = HTTP::Request->new($method => $url);
    Test($req);
    $req->content_type($type) if defined($type);
    $req->content($contents) if defined($contents);
    $req->authorization_basic('foo bar', 'eoj');
    while (@headers) {
	my $key = shift @headers;
	my $val = shift @headers;
	$req->header($key => $val);
    }
    my $res = $ua->request($req);
    Test($res->is_success())
	or print("Error:", $res->error_as_HTML(), "\n");
    $res;
}


sub TestContents ($$) {
    my $file = shift; my $expected = shift;
    Test(-f $file)
	or print "File $file doesn't exist.\n";
    my $fh = Symbol::gensym();
    Test(open($fh, "<$file"))
	or print "Cannot open file $file: $!\n";
    local $/ = undef;
    my $got = <$fh>;
    Test(defined($got))
	or print "Failed to read file $file: $!\n";
    Test($got eq $expected)
	or print "File $file doesn't match expected contents.\n";
}


eval {
    $cfg = require ".status";
    mkdir $cfg->{'t_dir'}, 0755 unless -d $cfg->{'t_dir'};
    mkdir $cfg->{'output_dir'}, 0755 unless -d $cfg->{'output_dir'};
    mkdir $cfg->{'roaming_dir'}, 0755 unless -d $cfg->{'roaming_dir'};
    mkdir $cfg->{'log_dir'}, 0755 unless -d $cfg->{'log_dir'};
    unlink $cfg->{'pid_file'} if -f $cfg->{'pid_file'};
    open(USER, ">$cfg->{'user_file'}")
	or die "Error while creating user file: $!";
    printf USER ("%s:%s\n", "foo bar", crypt("eoj", "foo bar"))
	or die "Error while writing user file: $!";
    close(USER)
	or die "Error while closing user file: $!";
    $pid = fork ();
    $lwp = require LWP::UserAgent;
};

if ($@  or  !defined($pid)  or  !$cfg  or  !$lwp) {
    print "1..0\n";
    exit 0;
}

sub KillHttpd { system "kill $pid" if $pid };

$SIG{'CHLD'} = sub { my $p = wait; undef $pid if $pid = $p };
$SIG{'ALRM'} = sub { KillHttpd() };




( run in 1.472 second using v1.01-cache-2.11-cpan-39bf76dae61 )