Ignore:
Timestamp:
12/24/25 13:58:34 (10 hours ago)
Author:
Kris Deugau
Message:

/branches/cname-collision

Add domain record update tests
See #88, #72

File:
1 edited

Legend:

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

    r952 r953  
    5656};
    5757
     58subtest 'Update non-CNAME to CNAME, non-colliding' => sub {
     59  $newname = 'smtp.example.com';
     60  $newval = 'example.com';
     61  ($code, $msg) = $dnsdb->updateRec('n', 'n', 39, 1, \$newname, \$rectype, \$newval, 900);
     62  ok( $code eq 'OK', "updateRec() claimed success" );
     63  if ($code eq 'OK') {
     64    ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname'");
     65    ok( $rcount == 1, " ... [$rcount] yep, hostname only occurs once" );
     66  } else {
     67    print "not ok: $msg";
     68  }
     69};
     70
     71subtest 'Update non-CNAME to CNAME, colliding' => sub {
     72  $newname = 'mx1.example.com';
     73  ($code, $msg) = $dnsdb->updateRec('n', 'n', 39, 1, \$newname, \$rectype, \$newval, 900);
     74  ok( $code eq 'FAIL', "updateRec() claimed failure" );
     75  if ($code eq 'FAIL') {
     76    ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname' AND type <> 5");
     77    ok( $rcount == 2, " ... [$rcount] record(s) with $newname already exist" );
     78    like( $msg, qr/One or more non-CNAME records/, " ... returned matching error" );
     79  }
     80};
     81
     82subtest 'Update CNAME to non-colliding name' => sub {
     83  $newname = 'imap.example.com';
     84  ($code, $msg) = $dnsdb->updateRec('n', 'n', 37, 1, \$newname, \$rectype, \$newval, 900);
     85  ok( $code eq 'OK', "updateRec() claimed success" );
     86  if ($code eq 'OK') {
     87    ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname'");
     88    ok( $rcount == 1, " ... [$rcount] yep, hostname only occurs once" );
     89  } else {
     90    print "not ok: $msg";
     91  }
     92};
     93
     94subtest 'Update CNAME to colliding name' => sub {
     95  $newname = 'mx1.example.com';
     96  ($code, $msg) = $dnsdb->updateRec('n', 'n', 41, 1, \$newname, \$rectype, \$newval, 900);
     97  ok( $code eq 'FAIL', "updateRec() claimed failure" );
     98  if ($code eq 'FAIL') {
     99    ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname' AND type <> 5");
     100    ok( $rcount == 2, " ... [$rcount] record(s) with $newname already exist" );
     101    like( $msg, qr/One or more non-CNAME records/, " ... returned matching error" );
     102  }
     103};
     104
    58105}; # domain tests
    59106
Note: See TracChangeset for help on using the changeset viewer.