#!/usr/bin/perl use strict; use warnings; use Test::More; use Symbol qw(gensym); use Net::SSLeay::Handle; my @sites = qw( www.cdw.com banking.wellsfargo.com perldition.org alioth.debian.org ); @sites = split(/:/, $ENV{SSLEAY_SITES}) if exists $ENV{SSLEAY_SITES}; if (@sites) { plan tests => scalar @sites * 6; } else { plan skip_all => 'No external hosts specified for SSL testing'; } for my $site (@sites) { SKIP: { my $ssl = gensym(); eval { tie(*$ssl, 'Net::SSLeay::Handle', $site, 443); }; skip('could not connect', 2) if $@; pass('connection'); print $ssl "GET / HTTP/1.0\r\n\r\n"; my $resp = do { local $/ = undef; <$ssl> }; like( $resp, qr/^HTTP\/1/, 'response' ); } } { my @sock; for (my $i = 0; $i < scalar @sites; $i++) { SKIP: { my $ssl = gensym(); eval { tie(*$ssl, 'Net::SSLeay::Handle', $sites[$i], 443); }; skip('could not connect', 2) if $@; pass('connection'); $sock[$i] = $ssl; ok( $ssl, 'got handle' ); } } for my $sock (@sock) { SKIP : { skip('not connected', 2) unless defined $sock; pass('connected'); print $sock "GET / HTTP/1.0\r\n\r\n"; my $resp = do { local $/ = undef; <$sock> }; like( $resp, qr/^HTTP\/1/, 'response' ); } } close($_) for @sock; }