1
2use Test::More tests => 247;
3BEGIN { use_ok('Config::ApacheFormat'); }
4
5# exhaustive block check for all VirtualHosts
6my %blocks = map { $_ => 0 }
7    qw( mvadmin.moveagain.com preview.thepirtgroup.com caladmin.about.com commentadmin.about.com
8        comment.about.com pirtgroup.com admin.flyfishing.about.com prmpix.about.com
9        shuzai.newyorkmetro.thepirtgroup.com shuzai.newyorkmetro.about.com classifieds.about.com preview.gravitygames.com
10        preview.canoekayak.com classifieds.homeandigloo.about.com ca.homeandigloo.about.com classifieds.history.about.com
11        ca.history.about.com ca.sewing.about.com preview.slamonline.com preview.bflex.thepirtgroup.com
12        preview.truckinweb.com preview.automobilemag.com preview.newyorkmetro.com preview.bbric2.thepirtgroup.com
13        preview.caraudiomag.com preview.qabricolage.ops.about.com postad.equisearch.about.com ca.equisearch.com
14        ca-biz.equisearch.com preview.equisearch.com preview.enthusiast.thepirtgroup.com ca.3dgraphics.about.com
15        ca.4wheeldrive.about.com ca.712educators.about.com ca.80music.about.com ca.actionadventure.about.com
16        ca.actionfigures.about.com ca.add.about.com ca.adoption.about.com ca.adulted.about.com
17        ca.adventuretravel.about.com ca.advertising.about.com ca.aids.about.com ca.airtravel.about.com
18        ca.albany.about.com ca.alcoholism.about.com ca.allergies.about.com ca.allmychildren.about.com
19        ca.altmedicine.about.com ca.altmusic.about.com ca.altreligion.about.com ca.animals.about.com
20        ca.animatedtv.about.com ca.animation.about.com ca.anime.about.com ca.antiques.about.com
21        ca.antivirus.about.com ca.apartments.about.com ca.archaeology.about.com ca.architecture.about.com
22        ca.arthistory.about.com ca.arthritis.about.com ca.artsandcrafts.about.com ca.arttech.about.com
23        ca.asthma.about.com ca.astrology.about.com ca.atheism.about.com ca.atlanta.about.com
24        ca.autism.about.com ca.autobuy.about.com ca.autoracing.about.com ca.autorepair.about.com
25        ca.aviation.about.com ca.babyparenting.about.com ca.backandneck.about.com ca.baking.about.com
26        ca.baltimore.about.com ca.bandb.about.com ca.baseball.about.com ca.bbq.about.com
27        ca.beadwork.about.com ca.beauty.about.com ca.beginnersinvest.about.com ca.bicycling.about.com
28        ca.biology.about.com ca.biotech.about.com ca.bipolar.about.com ca.birding.about.com
29        ca.blues.about.com ca.boardgames.about.com ca.bodybuilding.about.com ca.boston.about.com
30        ca.boxing.about.com ca.breastcancer.about.com ca.brooklyn.about.com ca.buddhism.about.com
31        ca.budgettravel.about.com ca.businessmajors.about.com ca.businesssoft.about.com ca.businesstravel.about.com
32        ca.busycooks.about.com ca.motorcycles.about.com preview.motortrend.com preview.trucktrend.com
33        preview.surfermag.com preview.anaheim.com preview.importtuner.com postad.sailmag.about.com
34        ca.sailmag.com ca.exercise.about.com ca.weightloss.about.com ca.austin.about.com
35        ca.vintagecars.about.com ca.ecommerce.about.com ca.email.about.com preview.sportrider.com
36        postad.primediaautomotive.about.com ca.primediaautomotive.com );
37
38my $config = Config::ApacheFormat->new(hash_directives => ['Allow']);
39
40isa_ok($config->read("t/large.conf"), 'Config::ApacheFormat');
41
42is($config->get("User"), 'nobody');
43is($config->get("Group"), 'nobody');
44
45my $bl = $config->block(Directory => '/mnt/www/vdir/mp-bin');
46is($bl->get('AllowOverride'), 'None');
47is(($bl->get('Options'))[0], 'ExecCGI');
48is(($bl->get('options'))[1], 'Includes');
49is($bl->get('ORDER'), 'allow,deny');
50is($bl->get(Allow => 'from'), 'all');
51is($bl->get('SetHandler'), 'perl-script');
52is($bl->get('PerlHandler'), 'Apache::Registry');
53
54# check for all VirtualHost blocks, using ServerName
55for ($config->block(VirtualHost => qw/10.12.13.125 10.12.12.125/)) {
56    my $s  = $_->get('servername');
57    my $ok = 0;
58    if (exists $blocks{$s}) {
59        $blocks{$s}++;
60        $ok = 1;
61    }
62    ok($ok);
63}
64
65# loop thru and make sure we had them all
66while (my($k,$v) = each %blocks) {
67    is($blocks{$k}, 1);     # should be 1 and not 0/2/3
68}
69
70