Changeset 964


Ignore:
Timestamp:
01/07/26 16:44:51 (44 hours ago)
Author:
Kris Deugau
Message:

/branches/cname-collision

Tests for CNAME updates in reverse zones
See #72, #88

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/cname-collision/t/cname.t

    r963 r964  
    147147  };
    148148
     149  subtest 'CNAME update - non-CNAME to CNAME, non-colliding' => sub {
     150    $newval = '192.168.2.15';
     151    $newname = '15-29.arpa.example.net';
     152    ($code, $msg) = $dnsdb->updateRec('n', 'y', 43, 1, \$newname, \$rectype, \$newval, 900);
     153    ok( $code eq 'OK', "updateRec() claimed success" );
     154    if ($code eq 'OK') {
     155      ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE rdns_id = 1 AND val = '$newval'");
     156      ok( $rcount == 1, " ... [$rcount] yep, IP only occurs once" );
     157    } else {
     158      print "not ok: $msg\n";
     159    }
     160  };
     161
     162  subtest 'CNAME update - non-CNAME to CNAME, colliding' => sub {
     163    $newval = '192.168.2.14';
     164    $newname = 'arpa14.rev.example.net';
     165    ($code, $msg) = $dnsdb->updateRec('n', 'y', 42, 1, \$newname, \$rectype, \$newval, 900);
     166    ok( $code eq 'FAIL', "updateRec() claimed failure updating revzone record type to CNAME" );
     167    if ($code eq 'FAIL') {
     168      ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE rdns_id = 1 AND val = '$newval' AND type <> 5");
     169      ok( $rcount == 2, " ... [$rcount] record(s) with $newval already exist" );
     170      like( $msg, qr/One or more non-CNAME records/, " ... returned matching error" );
     171    }
     172  };
     173
     174  subtest 'CNAME update - name to non-colliding name' => sub {
     175    $newval = '192.168.2.11';
     176    ($code, $msg) = $dnsdb->updateRec('n', 'y', 34, 1, \$newname, \$rectype, \$newval, 900);
     177    ok( $code eq 'OK', "updateRec() claimed success updating revzone CNAME \"hostname\" (non-colliding)" );
     178    if ($code eq 'OK') {
     179      ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE rdns_id = 1 AND val = '$newval'");
     180      ok( $rcount == 1, " ... [$rcount] yep, IP only occurs once" );
     181    } else {
     182      print "not ok: $msg";
     183    }
     184  };
     185
     186  subtest 'CNAME update - name to colliding name' => sub {
     187    $newval = '192.168.2.17';
     188    ($code, $msg) = $dnsdb->updateRec('n', 'y', 46, 1, \$newname, \$rectype, \$newval, 900);
     189    ok( $code eq 'FAIL', "updateRec() claimed failure" );
     190    if ($code eq 'FAIL') {
     191      ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE rdns_id = 1 AND val = '$newval' AND type <> 5");
     192      ok( $rcount == 1, " ... [$rcount] record(s) with $newval already exist" );
     193      like( $msg, qr/One or more non-CNAME records/, " ... returned matching error" );
     194    }
     195  };
     196
    149197}; # reverse zone tests
    150198
Note: See TracChangeset for help on using the changeset viewer.