2
use warnings FATAL => 'all';
6
use Apache::TestRequest ();
8
my $module = 'TestProtocol::pseudo_http';
12
Apache::TestRequest::module($module);
13
my $hostport = Apache::TestRequest::hostport(Apache::Test::config());
14
t_debug("connecting to $hostport");
18
my $passgood = "foobar";
19
my $passbad = "foObaR";
21
# blocking socket bug fixed in 2.0.52
22
my $ok = $^O !~ /^(Open|Net)BSD$/i || need_min_apache_version('2.0.52');
24
# but not in 2.1? hmph.
25
$ok = skip_reason('skipping on httpd 2.1') if have_min_apache_version('2.1');
27
plan tests => 13, need need_auth, need_access, $ok;
30
# supply correct credential when prompted for such and ask the
31
# server get the secret datetime information
32
my $socket = Apache::TestRequest::vhost_socket($module);
35
expect_reply($socket, "HELO", "HELO", "greeting");
36
expect_reply($socket, "Login:", $login, "login");
37
expect_reply($socket, "Password:", $passgood, "good password");
38
expect($socket, "Welcome to TestProtocol::pseudo_http", "banner");
39
expect_reply($socket, "Available commands: date quit", "date", "date");
40
expect_reply($socket, qr/The time is:/, "quit", "quit");
41
expect($socket, "Goodbye", "end of transmission");
45
# this time sending wrong credentials and hoping that the server
47
my $socket = Apache::TestRequest::vhost_socket($module);
50
expect_reply($socket, "HELO", "HELO", "greeting");
51
expect_reply($socket, "Login:", $login, "login");
52
t_client_log_error_is_expected();
53
expect_reply($socket, "Password:", $passbad, "wrong password");
54
expect($socket, "Access Denied", "end of transmission");
58
my($socket, $expect, $action) = @_;
59
chomp(my $recv = <$socket> || '');
60
ok t_cmp($recv, $expect, $action);
64
my($socket, $expect, $reply, $action) = @_;
65
chomp(my $recv = <$socket> || '');
66
ok t_cmp($recv, $expect, $action);
67
t_debug("send: $reply");