]> pd.if.org Git - newsd/blob - t/03_responses.t
Let database figure out close time for connection.
[newsd] / t / 03_responses.t
1 #!/usr/bin/perl
2
3 use Test::More tests => 8; 
4
5 BEGIN { use_ok('Net::Cmd') }
6 BEGIN { use_ok('Net::NNTP') }
7
8 my $c = Net::NNTP->new(Host => '127.0.0.1', Port => 20203, Reader => 0);
9
10 ok(defined $c, 'connected to localhost');
11
12 BAIL_OUT(q{can't connect to test server'}) unless $c;
13
14 sub Net::NNTP::issue {
15         my ($c, @cmd) = @_;
16         $c->command(@cmd);
17         $c->response();
18         return $c->code();
19 }
20
21 sub Net::NNTP::try {
22         my ($c, $cmd, $test, @valid) = @_;
23         $c->command($cmd);
24         $c->response();
25         ok(scalar (grep {$c->code == $_} @valid) , "$test ".$c->code." in (@valid)");
26         return $c->code;
27 }
28
29 sub Net::NNTP::must {
30         my ($c, $cmd, $test, @valid) = @_;
31         $c->command($cmd);
32         $c->response();
33         ok(scalar (grep {$c->code == $_} @valid) , "$test ".$c->code." in (@valid)");
34         if (scalar (grep {$c->code == $_} @valid)) {
35                 return $c->code;
36         }
37         die $c->code;
38 }
39
40 # 3977:5.1.1 initial greeting must be 200 201 400 502
41 my @valid = (200, 201, 400, 502);
42 my $greeting = $c->code;
43
44 ok(grep {$c->code == $_} @valid, 'correct initial response from server');
45
46 unless ($greeting == 200 or $greeting = 201) {
47         BAIL_OUT(q{bad greeting from server'});
48 }
49
50 # 4 tests done to here
51
52 $c->try('STAT','stat with no newsgroup',412);
53
54 eval {
55         $c->must('GROUP de.test','group selection',211);
56 };
57 SKIP: {
58         skip "group failed, can't stat", 1 if $@;
59         $c->try('STAT','stat with newsgroup',223,420);
60 }
61
62 goto quit;
63
64 quit:
65
66 $c->try('QUIT','quit',205);