1use strict;
2use Test::More tests => 8;
3
4use Net::SSL;
5
6# ensure no proxification takes place
7$ENV{NO_PROXY} = '127.0.0.1';
8
9my $sock;
10eval {
11    $sock = Net::SSL->new(
12        PeerAddr => '127.0.0.1',
13        PeerPort => 443,
14        Timeout  => 3,
15    );
16};
17
18my $test_name = 'Net::SSL->new';
19if ($@) {
20    my $fail = $@;
21    if ($fail =~ /\AConnect failed: connect: \b/i) {
22        pass( "$test_name - expected failure" );
23    }
24    elsif ($fail =~ /\ASSL negotiation failed:/i) {
25        pass( "$test_name - expected failure (443 in use)" );
26    }
27    else {
28        fail( "$test_name" );
29        diag( $fail );
30    }
31}
32else {
33    ok( defined $sock, $test_name );
34}
35
36SKIP: {
37    skip( "nothing listening on localhost:443", 7 )
38        unless defined $sock;
39
40    is( ref($sock), 'Net::SSL', 'blessed socket' );
41
42    eval { $sock->accept };
43    like ($@, qr(\Aaccept not implemented for Net::SSL sockets),
44        'accept() not implemented'
45    );
46
47    eval { $sock->getc };
48    like ($@, qr(\Agetc not implemented for Net::SSL sockets),
49        'getc() not implemented'
50    );
51
52    eval { $sock->ungetc };
53    like ($@, qr(\Aungetc not implemented for Net::SSL sockets),
54        'ungetc() not implemented'
55    );
56
57    eval { $sock->getlines };
58    like ($@, qr(\Agetlines not implemented for Net::SSL sockets),
59        'getlines() not implemented'
60    );
61
62    is( $sock->blocking, 1, 'socket is blocking' );
63    $sock->blocking(0);
64    is( $sock->blocking, 0, 'socket is now non-blocking' );
65}
66