You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
1.8 KiB
93 lines
1.8 KiB
#!/usr/bin/perl
|
|
|
|
=head1 NAME
|
|
|
|
sites-ok.t - check web sites
|
|
|
|
=head SYNOPSIS
|
|
|
|
cat >> test-server.yaml << __YAML_END__
|
|
sites-ok:
|
|
sites:
|
|
http://ant.local:
|
|
content: It works!
|
|
http://debrepo.ant.local/debian/:
|
|
title : Index of /[a-z]+
|
|
content: Parent Directory
|
|
__YAML_END__
|
|
|
|
=cut
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use Test::More;
|
|
use Test::Differences;
|
|
use YAML::Syck 'LoadFile';
|
|
use FindBin '$Bin';
|
|
|
|
|
|
eval "use Test::WWW::Mechanize";
|
|
plan 'skip_all' => "need Test::WWW::Mechanize to run web tests" if $@;
|
|
|
|
my $config = LoadFile($Bin.'/test-server.yaml');
|
|
plan 'skip_all' => "no configuration sections for 'sites-ok'"
|
|
if (not $config or not $config->{'sites-ok'});
|
|
|
|
|
|
exit main();
|
|
|
|
sub main {
|
|
plan 'no_plan';
|
|
|
|
my $mech = Test::WWW::Mechanize->new;
|
|
my $sites = $config->{'sites-ok'}->{'sites'};
|
|
|
|
# loop through sites that needs to be working
|
|
foreach my $base_url (keys %$sites) {
|
|
$mech->get_ok($base_url, 'fetch '.$base_url);
|
|
|
|
# test site title
|
|
my %site = %{$sites->{$base_url}};
|
|
|
|
# check title
|
|
like($mech->title, qr/$site{'title'}/, 'check title')
|
|
if exists $site{'title'};
|
|
|
|
#check content
|
|
like($mech->content, qr/$site{'content'}/, 'check content')
|
|
if exists $site{'content'};
|
|
|
|
# fetch site links
|
|
my $INTERNAL_LINKS_QR = qr{
|
|
^
|
|
(
|
|
$base_url # links starting with base url
|
|
|
|
|
(?![a-zA-Z]+:) # and NOT starting with http: or mailto: or ftp: or ...
|
|
)
|
|
}xms;
|
|
|
|
$mech->links_ok(
|
|
# match the links that starts with base url or are without http(s) in the beginning
|
|
[ $mech->find_all_links( url_regex => $INTERNAL_LINKS_QR ) ],
|
|
'check all internal page links',
|
|
);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
__END__
|
|
|
|
=head1 NOTE
|
|
|
|
Web checking depends on L<Test::WWW::Mechanize>.
|
|
|
|
=head1 AUTHOR
|
|
|
|
Jozef Kutej
|
|
|
|
=cut
|