source: branches/cname-collision/t/cname.t@ 951

Last change on this file since 951 was 951, checked in by Kris Deugau, 9 hours ago

/branches/cname-collision

Add CNAME record-add tests for reverse zones. See #88, #72

File size: 3.1 KB
RevLine 
[950]1# -*- Perl -*-
2# Tests for CNAME records
[951]3# Note that not all possible cases are caught!
4# Template records mean not all published records are natively present in the DB
[950]5
6use Test::More;
7use Data::Dumper;
8
9use lib 't';
10
11use DNSTest;
12my $dtest = DNSTest::new;
13
14my $code,$msg;
15my $rectype = 5;
16my $newname;
17my $newval;
18
19## Domain tests
20
21subtest 'CNAME add - new name' => sub {
22 $newname = 'newname.example.com';
23 $newval = 'fredshosting.example.net';
24 ($code, $msg) = $dnsdb->addRec('n', 'n', 1, \$newname, \$rectype, \$newval, 900);
25 ok( $code eq 'OK', "addRec() claimed succeess" );
26 if ($code eq 'OK') {
27 # crosscheck in the DB
28 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname'");
29 ok( $rcount == 1, " ... [$rcount] yep, hostname only occurs once" );
30 } else {
31 print "not ok: $msg";
32 }
33};
34
35subtest 'CNAME add - existing/colliding CNAME' => sub {
36 $newname = 'www.example.com';
37 ($code, $msg) = $dnsdb->addRec('n', 'n', 1, \$newname, \$rectype, \$newval, 900);
38 ok( $code eq 'FAIL', "addRec() claimed failure adding duplicate CNAME" );
39 if ($code eq 'FAIL') {
40 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname' AND type = 5");
41 ok( $rcount == 1, " ... [$rcount] CNAME already exists" );
42 like( $msg, qr/already a CNAME present/, " ... returned matching error" );
43 }
44};
45
[951]46
47## Reverse zone
48
49subtest 'CNAME add - new reverse name' => sub {
50 $newval = '192.168.2.12';
51 $newname = '12.8-29.2.168.192.in-addr.arpa';
52 ($code, $msg) = $dnsdb->addRec('n', 'y', 1, \$newname, \$rectype, \$newval, 900);
53 ok( $code eq 'OK', "addRec() claimed succeess adding reverse zone CNAME" );
54 if ($code eq 'OK') {
55 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE rdns_id = 1 AND val = '$newval'");
56 ok( $rcount == 1, " ... [$rcount] yep, IP only occurs once" );
57 } else {
58 print "not ok: $msg\n";
59 }
60};
61
62subtest 'CNAME add - existing/colliding non-CNAME' => sub {
63 $newval = '192.168.2.14';
64 $newname = '14.8-29.2.168.192.in-addr.arpa';
65 ($code, $msg) = $dnsdb->addRec('n', 'y', 1, \$newname, \$rectype, \$newval, 900);
66 ok( $code eq 'FAIL', "addRec() claimed failure adding colliding reverse zone CNAME" );
67 if ($code eq 'FAIL') {
68 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE rdns_id = 1 AND val = '$newval' AND type <> 5");
69 ok( $rcount == 2, " ... [$rcount] record(s) with $newname already exist" );
70 like( $msg, qr/One or more non-CNAME records/, " ... returned matching error" );
71 }
72};
73
74subtest 'CNAME add - existing/colliding CNAME' => sub {
75 $newval = '192.168.2.13';
76 $newname = '13.8-29.2.168.192.in-addr.arpa';
77 ($code, $msg) = $dnsdb->addRec('n', 'y', 1, \$newname, \$rectype, \$newval, 900);
78 ok( $code eq 'FAIL', "addRec() claimed failure adding duplicate reverse zone CNAME" );
79 if ($code eq 'FAIL') {
80 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE rdns_id = 1 AND val = '$newval' AND type = 5");
81 ok( $rcount == 1, " ... [$rcount] CNAME already exists" );
82 like( $msg, qr/already a CNAME present/, " ... returned matching error" );
83 }
84};
85
[950]86done_testing();
Note: See TracBrowser for help on using the repository browser.