HTTP-WebTest

 view release on metacpan or  search on metacpan

t/02-generic.t  view on Meta::CPAN


	$connect->send_response($response);
    } elsif($path eq '/show-cookies') {
	my $content = '';

	# find all cookies in headers
	for my $cookie_list ($request->header('Cookie')) {
	    my @cookies = ();
	    for my $cookie (split /;\s*/, $cookie_list) {
		my($name, $value) = split /=/, $cookie;
		push @cookies, [ $name, $value ];
	    }

	    # ensure same order of cookies by sorting them; otherwise
	    # it could return different results for different versions
	    # of Perl
	    @cookies = sort { $a->[0] cmp $b->[0] } @cookies;

	    for my $cookie (@cookies) {
		my($name, $value) = @$cookie;
		$content .= "<$name>=<$value>\n";
	    }
	}

	my $response = new HTTP::Response(RC_OK);
	$response->header(Content_Type => 'text/plain');
	$response->content($content);

	$connect->send_response($response);
    } elsif($path eq '/show-headers') {
	my $content = $request->headers_as_string;

	my $response = new HTTP::Response(RC_OK);
	$response->header(Content_Type => 'text/plain');
	$response->content($content);

	$connect->send_response($response);
    } elsif($path eq '/show-agent') {
	my $content = 'User agent: ' . $request->user_agent;

	my $response = new HTTP::Response(RC_OK);
	$response->header(Content_Type => 'text/plain');
	$response->content($content);

	$connect->send_response($response);
    } elsif($path eq '/redirect') {
	my $response = new HTTP::Response(RC_FOUND);
	$response->header(Location => '/test-file1');

	$connect->send_response($response);
    } elsif($path eq '/redirect-show-cookies') {
	my $response = new HTTP::Response(RC_FOUND);
	$response->header(Location => '/show-cookies');

	$connect->send_response($response);
    } elsif($path =~ m|/auth-(\w+)-(\w+)-(\w+)|) {
	my $realm = $1;
	my $user = $2;
	my $password = $3;

	# check if we have good credentials
	my $credentials = $request->header('Authorization');
	my($user1, $password1) = parse_basic_credentials($credentials);
	if(defined($user1) and defined($password1) and
	   $user eq $user1 and $password eq $password1) {
	    # authorization is ok
	    $connect->send_file_response('t/test1.txt');
	} else {
	    # authorization is either missing or wrong
	    my $response = new HTTP::Response(RC_UNAUTHORIZED);
	    $response->header(WWW_Authenticate => "Basic realm=\"$realm\"");

	    $connect->send_response($response);
	}
    } elsif($path =~ m|/status-code-(\d+)|) {
	my $status_code = $1;

	my $response = new HTTP::Response($status_code);

	$connect->send_response($response);
    } else {
	$connect->send_error(RC_NOT_FOUND);
    }
}



( run in 2.521 seconds using v1.01-cache-2.11-cpan-2aafcb1aa8b )