Changeset 1043 for branches/cname-collision/t/cname.t
- Timestamp:
- 02/20/26 13:33:21 (19 hours ago)
- File:
-
- 1 edited
-
branches/cname-collision/t/cname.t (modified) (31 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/cname-collision/t/cname.t
r1042 r1043 30 30 $newval = 'fredshosting.example.net'; 31 31 ($code, $msg) = $dnsdb->addRec('n', 'n', 1, \$newname, \$rectype, \$newval, 900); 32 ok( $code eq 'OK', "addRec() claimed succeess" ); 33 if ($code eq 'OK') { 34 # crosscheck in the DB 35 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname'"); 36 ok( $rcount == 1, " ... [$rcount] yep, hostname only occurs once" ); 37 } else { 38 print "not ok: $msg"; 39 } 40 }; 41 42 subtest 'CNAME add - existing/colliding non-CNAME' => sub { 43 $newname = 'mx1.example.com'; 44 ($code, $msg) = $dnsdb->addRec('n', 'n', 1, \$newname, \$rectype, \$newval, 900); 45 ok( $code eq 'FAIL', "addRec() claimed failure" ); 46 if ($code eq 'FAIL') { 47 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname' AND type <> 5"); 48 ok( $rcount == 2, " ... [$rcount] record(s) with $newname already exist" ); 49 like( $msg, qr/One or more non-CNAME records/, " ... returned matching error" ); 50 } 51 }; 52 53 subtest 'CNAME add - existing/colliding CNAME' => sub { 54 $newname = 'www.example.com'; 55 ($code, $msg) = $dnsdb->addRec('n', 'n', 1, \$newname, \$rectype, \$newval, 900); 56 ok( $code eq 'FAIL', "addRec() claimed failure" ); 57 if ($code eq 'FAIL') { 58 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname' AND type = 5"); 59 ok( $rcount == 1, " ... [$rcount] CNAME already exists" ); 60 like( $msg, qr/already a CNAME present/, " ... returned matching error" ); 61 } 62 }; 63 64 subtest 'CNAME update - non-CNAME to CNAME, non-colliding' => sub { 65 $newname = 'smtp.example.com'; 66 $newval = 'example.com'; 67 ($code, $msg) = $dnsdb->updateRec('n', 'n', 39, 1, \$newname, \$rectype, \$newval, 900); 68 ok( $code eq 'OK', "updateRec() claimed success" ); 32 cmp_ok( $code, 'eq', 'OK', "addRec() claimed succeess" ); 69 33 if ($code eq 'OK') { 70 34 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname'"); … … 75 39 }; 76 40 77 subtest 'CNAME update - non-CNAME to CNAME, colliding' => sub {41 subtest 'CNAME add - existing/colliding non-CNAME' => sub { 78 42 $newname = 'mx1.example.com'; 79 ($code, $msg) = $dnsdb-> updateRec('n', 'n', 39, 1, \$newname, \$rectype, \$newval, 900);80 ok( $code eq 'FAIL', "updateRec() claimed failure" );43 ($code, $msg) = $dnsdb->addRec('n', 'n', 1, \$newname, \$rectype, \$newval, 900); 44 cmp_ok( $code, 'eq', 'FAIL', "addRec() claimed failure" ); 81 45 if ($code eq 'FAIL') { 82 46 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname' AND type <> 5"); … … 84 48 like( $msg, qr/One or more non-CNAME records/, " ... returned matching error" ); 85 49 } 86 }; 87 88 subtest 'CNAME update - name to non-colliding name' => sub { 89 $newname = 'imap.example.com'; 90 ($code, $msg) = $dnsdb->updateRec('n', 'n', 37, 1, \$newname, \$rectype, \$newval, 900); 91 ok( $code eq 'OK', "updateRec() claimed success" ); 50 }; 51 52 subtest 'CNAME add - existing/colliding CNAME' => sub { 53 $newname = 'www.example.com'; 54 ($code, $msg) = $dnsdb->addRec('n', 'n', 1, \$newname, \$rectype, \$newval, 900); 55 cmp_ok( $code, 'eq', 'FAIL', "addRec() claimed failure" ); 56 if ($code eq 'FAIL') { 57 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname' AND type = 5"); 58 ok( $rcount == 1, " ... [$rcount] CNAME already exists" ); 59 like( $msg, qr/already a CNAME present/, " ... returned matching error" ); 60 } 61 }; 62 63 subtest 'CNAME update - non-CNAME to CNAME, non-colliding' => sub { 64 $newname = 'smtp.example.com'; 65 $newval = 'example.com'; 66 ($code, $msg) = $dnsdb->updateRec('n', 'n', 39, 1, \$newname, \$rectype, \$newval, 900); 67 cmp_ok( $code, 'eq', 'OK', "updateRec() claimed success" ); 92 68 if ($code eq 'OK') { 93 69 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname'"); … … 98 74 }; 99 75 76 subtest 'CNAME update - non-CNAME to CNAME, colliding' => sub { 77 $newname = 'mx1.example.com'; 78 ($code, $msg) = $dnsdb->updateRec('n', 'n', 39, 1, \$newname, \$rectype, \$newval, 900); 79 cmp_ok( $code, 'eq', 'FAIL', "updateRec() claimed failure" ); 80 if ($code eq 'FAIL') { 81 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname' AND type <> 5"); 82 ok( $rcount == 2, " ... [$rcount] record(s) with $newname already exist" ); 83 like( $msg, qr/One or more non-CNAME records/, " ... returned matching error" ); 84 } 85 }; 86 87 subtest 'CNAME update - name to non-colliding name' => sub { 88 $newname = 'imap.example.com'; 89 ($code, $msg) = $dnsdb->updateRec('n', 'n', 37, 1, \$newname, \$rectype, \$newval, 900); 90 cmp_ok( $code, 'eq', 'OK', "updateRec() claimed success" ); 91 if ($code eq 'OK') { 92 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname'"); 93 ok( $rcount == 1, " ... [$rcount] yep, hostname only occurs once" ); 94 } else { 95 print "not ok: $msg"; 96 } 97 }; 98 100 99 subtest 'CNAME update - name to colliding name' => sub { 101 100 $newname = 'mx1.example.com'; 102 101 ($code, $msg) = $dnsdb->updateRec('n', 'n', 41, 1, \$newname, \$rectype, \$newval, 900); 103 ok( $code eq'FAIL', "updateRec() claimed failure" );102 cmp_ok( $code, 'eq', 'FAIL', "updateRec() claimed failure" ); 104 103 if ($code eq 'FAIL') { 105 104 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname' AND type <> 5"); … … 119 118 $newname = '12.8-29.2.168.192.in-addr.arpa'; 120 119 ($code, $msg) = $dnsdb->addRec('n', 'y', 1, \$newname, \$rectype, \$newval, 900); 121 ok( $code eq'OK', "addRec() claimed succeess" );120 cmp_ok( $code, 'eq', 'OK', "addRec() claimed succeess" ); 122 121 if ($code eq 'OK') { 123 122 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE rdns_id = 1 AND val = '$newval'"); … … 132 131 $newname = '14.8-29.2.168.192.in-addr.arpa'; 133 132 ($code, $msg) = $dnsdb->addRec('n', 'y', 1, \$newname, \$rectype, \$newval, 900); 134 ok( $code eq'FAIL', "addRec() claimed failure" );133 cmp_ok( $code, 'eq', 'FAIL', "addRec() claimed failure" ); 135 134 if ($code eq 'FAIL') { 136 135 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE rdns_id = 1 AND val = '$newval' AND type <> 5"); … … 144 143 $newname = '13.8-29.2.168.192.in-addr.arpa'; 145 144 ($code, $msg) = $dnsdb->addRec('n', 'y', 1, \$newname, \$rectype, \$newval, 900); 146 ok( $code eq'FAIL', "addRec() claimed failure" );145 cmp_ok( $code, 'eq', 'FAIL', "addRec() claimed failure" ); 147 146 if ($code eq 'FAIL') { 148 147 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE rdns_id = 1 AND val = '$newval' AND type = 5"); … … 156 155 $newname = '15-29.arpa.example.net'; 157 156 ($code, $msg) = $dnsdb->updateRec('n', 'y', 43, 1, \$newname, \$rectype, \$newval, 900); 158 ok( $code eq'OK', "updateRec() claimed success" );157 cmp_ok( $code, 'eq', 'OK', "updateRec() claimed success" ); 159 158 if ($code eq 'OK') { 160 159 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE rdns_id = 1 AND val = '$newval'"); … … 169 168 $newname = 'arpa14.rev.example.net'; 170 169 ($code, $msg) = $dnsdb->updateRec('n', 'y', 42, 1, \$newname, \$rectype, \$newval, 900); 171 ok( $code eq'FAIL', "updateRec() claimed failure updating revzone record type to CNAME" );170 cmp_ok( $code, 'eq', 'FAIL', "updateRec() claimed failure updating revzone record type to CNAME" ); 172 171 if ($code eq 'FAIL') { 173 172 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE rdns_id = 1 AND val = '$newval' AND type <> 5"); … … 180 179 $newval = '192.168.2.11'; 181 180 ($code, $msg) = $dnsdb->updateRec('n', 'y', 34, 1, \$newname, \$rectype, \$newval, 900); 182 ok( $code eq'OK', "updateRec() claimed success updating revzone CNAME \"hostname\" (non-colliding)" );181 cmp_ok( $code, 'eq', 'OK', "updateRec() claimed success updating revzone CNAME \"hostname\" (non-colliding)" ); 183 182 if ($code eq 'OK') { 184 183 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE rdns_id = 1 AND val = '$newval'"); … … 192 191 $newval = '192.168.2.17'; 193 192 ($code, $msg) = $dnsdb->updateRec('n', 'y', 46, 1, \$newname, \$rectype, \$newval, 900); 194 ok( $code eq'FAIL', "updateRec() claimed failure" );193 cmp_ok( $code, 'eq', 'FAIL', "updateRec() claimed failure" ); 195 194 if ($code eq 'FAIL') { 196 195 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE rdns_id = 1 AND val = '$newval' AND type <> 5"); … … 206 205 subtest 'Record expiry/valid-after' => sub { 207 206 208 ## Add new CNAME 207 ## Add new CNAME with no timestamp 209 208 subtest 'CNAME add - nonexpiring' => sub { 210 209 $newval = 'target.example.com'; … … 212 211 $newname = 'expired1.expiry1.test'; 213 212 ($code, $msg) = $dnsdb->addRec('n', 'n', 4, \$newname, \$rectype, \$newval, 900); 214 ok( $code eq'FAIL', "addRec() claimed failure" );213 cmp_ok( $code, 'eq', 'FAIL', "addRec() claimed failure" ); 215 214 if ($code eq 'FAIL') { 216 215 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 4 AND host = '$newname'"); … … 223 222 $newname = 'expired2.expiry1.test'; 224 223 ($code, $msg) = $dnsdb->addRec('n', 'n', 4, \$newname, \$rectype, \$newval, 900); 225 ok( $code eq'FAIL', "addRec() claimed failure" );224 cmp_ok( $code, 'eq', 'FAIL', "addRec() claimed failure" ); 226 225 if ($code eq 'FAIL') { 227 226 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 4 AND host = '$newname' AND type <> 5 AND stampactive = 't'"); … … 234 233 $newname = 'active-after1.expiry1.test'; 235 234 ($code, $msg) = $dnsdb->addRec('n', 'n', 4, \$newname, \$rectype, \$newval, 900); 236 ok( $code eq'FAIL', "addRec() claimed success with warning" );235 cmp_ok( $code, 'eq', 'FAIL', "addRec() claimed success with warning" ); 237 236 if ($code eq 'FAIL') { 238 237 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 4 AND host = '$newname'"); … … 244 243 $newname = 'active-after2.expiry1.test'; 245 244 ($code, $msg) = $dnsdb->addRec('n', 'n', 4, \$newname, \$rectype, \$newval, 900); 246 ok( $code eq'FAIL', "addRec() claimed failure" );245 cmp_ok( $code, 'eq', 'FAIL', "addRec() claimed failure" ); 247 246 if ($code eq 'FAIL') { 248 247 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 4 AND host = '$newname' AND type <> 5"); … … 253 252 }; # add non-timestamp CNAME 254 253 254 ## Add expiring CNAME 255 255 subtest 'CNAME add - expires soon' => sub { 256 256 my @ltime = localtime(time + 86400 * 3); … … 267 267 } 268 268 }; 269 subtest 'collision with expiring record' => sub {269 subtest 'collision with record with pending expiry' => sub { 270 270 $newname = 'expires-at2.expiry2.test'; 271 271 ($code, $msg) = $dnsdb->addRec('n', 'n', 5, \$newname, \$rectype, \$newval, 900, undef, 't', $expirystamp); 272 ok( $code eq'FAIL', "addRec() claimed failure");272 cmp_ok( $code, 'eq', 'FAIL', "addRec() claimed failure"); 273 273 if ($code eq 'FAIL') { 274 274 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 5 AND host = '$newname' AND type <> 5"); … … 280 280 $newname = 'expires-at3.expiry2.test'; 281 281 ($code, $msg) = $dnsdb->addRec('n', 'n', 5, \$newname, \$rectype, \$newval, 900, undef, 't', $expirystamp); 282 ok( $code eq'OK', "addRec() claimed success" );282 cmp_ok( $code, 'eq', 'OK', "addRec() claimed success" ); 283 283 if ($code eq 'OK') { 284 # crosscheck in the DB285 284 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 5 AND host = '$newname'"); 286 285 ok( $rcount == 2, " ... [$rcount] correct number of records for $newname" ); … … 297 296 $newname = 'expires-at4.expiry2.test'; 298 297 ($code, $msg) = $dnsdb->addRec('n', 'n', 5, \$newname, \$rectype, \$newval, 900, undef, 't', $expirystamp); 299 ok( $code eq'WARN', "addRec() claimed success with warning" );298 cmp_ok( $code, 'eq', 'WARN', "addRec() claimed success with warning" ); 300 299 if ($code eq 'WARN') { 301 300 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 5 AND host = '$newname'"); … … 314 313 $newname = 'expires-at5.expiry2.test'; 315 314 ($code, $msg) = $dnsdb->addRec('n', 'n', 5, \$newname, \$rectype, \$newval, 900, undef, 't', $expirystamp); 316 cmp_ok( $code, 'eq', 'FAIL', "addRec() claimed failure" ); 317 if ($code eq 'FAIL') { 318 # crosscheck in the DB 315 ok( $code, 'eq', 'FAIL', "addRec() claimed failure" ); 316 if ($code eq 'FAIL') { 319 317 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 5 AND host = '$newname'"); 320 318 ok( $rcount == 1, " ... [$rcount] correct number of records for $newname" ); … … 324 322 }; # add expiring CNAME 325 323 324 ## Add valid-after CNAME 326 325 subtest 'CNAME add - valid after' => sub { 327 326 my @ltime = localtime(time + 86400 * 3); … … 394 393 $newname = 'nostamp1a.expiry3.test'; 395 394 ($code, $msg) = $dnsdb->updateRec('n', 'n', 79, 6, \$newname, \$rectype, \$newval, 900); 396 ok( $code eq'FAIL', "updateRec() claimed failure" );395 cmp_ok( $code, 'eq', 'FAIL', "updateRec() claimed failure" ); 397 396 if ($code eq 'FAIL') { 398 397 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 6 AND host = '$newname'"); … … 404 403 $newname = 'nostamp2a.expiry3.test'; 405 404 ($code, $msg) = $dnsdb->updateRec('n', 'n', 80, 6, \$newname, \$rectype, \$newval, 900); 406 ok( $code eq'FAIL', "updateRec() claimed failure" );405 cmp_ok( $code, 'eq', 'FAIL', "updateRec() claimed failure" ); 407 406 if ($code eq 'FAIL') { 408 407 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 6 AND host = '$newname'"); … … 414 413 $newname = 'nostamp3a.expiry3.test'; 415 414 ($code, $msg) = $dnsdb->updateRec('n', 'n', 81, 6, \$newname, \$rectype, \$newval, 900); 416 ok( $code eq'FAIL', "updateRec() claimed failure" );415 cmp_ok( $code, 'eq', 'FAIL', "updateRec() claimed failure" ); 417 416 if ($code eq 'FAIL') { 418 417 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 6 AND host = '$newname'"); … … 424 423 $newname = 'nostamp4a.expiry3.test'; 425 424 ($code, $msg) = $dnsdb->updateRec('n', 'n', 82, 6, \$newname, \$rectype, \$newval, 900); 426 ok( $code eq'FAIL', "updateRec() claimed failure" );425 cmp_ok( $code, 'eq', 'FAIL', "updateRec() claimed failure" ); 427 426 if ($code eq 'FAIL') { 428 427 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 6 AND host = '$newname'"); … … 450 449 $newname = 'expires2a.expiry3.test'; 451 450 ($code, $msg) = $dnsdb->updateRec('n', 'n', 90, 6, \$newname, \$rectype, \$newval, 900, undef, 't', $expirystamp); 452 ok( $code eq'FAIL', "updateRec() claimed failure");451 cmp_ok( $code, 'eq', 'FAIL', "updateRec() claimed failure"); 453 452 if ($code eq 'FAIL') { 454 453 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 6 AND host = '$newname' AND type <> 5"); … … 470 469 $newname = 'expires4a.expiry3.test'; 471 470 ($code, $msg) = $dnsdb->updateRec('n', 'n', 92, 6, \$newname, \$rectype, \$newval, 900, undef, 't', $expirystamp); 472 ok( $code eq'WARN', "updateRec() claimed success with warning" );471 cmp_ok( $code, 'eq', 'WARN', "updateRec() claimed success with warning" ); 473 472 if ($code eq 'WARN') { 474 473 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 6 AND host = '$newname'"); … … 497 496 $newname = 'expires6a.expiry3.test'; 498 497 ($code, $msg) = $dnsdb->updateRec('n', 'n', 94, 6, \$newname, \$rectype, \$newval, 900, undef, 't', $expirystamp); 499 ok( $code eq'OK', "updateRec() claimed success" );498 cmp_ok( $code, 'eq', 'OK', "updateRec() claimed success" ); 500 499 if ($code eq 'OK') { 501 500 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 6 AND host = '$newname'"); … … 520 519 $newname = 'validafter1a.expiry3.test'; 521 520 ($code, $msg) = $dnsdb->updateRec('n', 'n', 100, 6, \$newname, \$rectype, \$newval, 900, undef, 'f', $expirystamp); 522 ok( $code eq'FAIL', "updateRec() claimed failure" );521 cmp_ok( $code, 'eq', 'FAIL', "updateRec() claimed failure" ); 523 522 if ($code eq 'FAIL') { 524 523 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 6 AND host = '$newname'"); … … 594 593 $newval = '192.168.2.1'; 595 594 ($code, $msg) = $dnsdb->addRec('n', 'n', 7, \$newname, \$rectype, \$newval, 900); 596 ok( $code eq'OK', "addRec() claimed succeess" );595 cmp_ok( $code, 'eq', 'OK', "addRec() claimed succeess" ); 597 596 if ($code eq 'OK') { 598 597 ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 7 AND host = '$newname'");
Note:
See TracChangeset
for help on using the changeset viewer.
![[ DNS Administrator ]](/fx/dnsadmin-logo.png)