Index: branches/cname-collision/t/cname.t
===================================================================
--- branches/cname-collision/t/cname.t	(revision 952)
+++ branches/cname-collision/t/cname.t	(revision 953)
@@ -56,4 +56,51 @@
 };
 
+subtest 'Update non-CNAME to CNAME, non-colliding' => sub {
+  $newname = 'smtp.example.com';
+  $newval = 'example.com';
+  ($code, $msg) = $dnsdb->updateRec('n', 'n', 39, 1, \$newname, \$rectype, \$newval, 900);
+  ok( $code eq 'OK', "updateRec() claimed success" );
+  if ($code eq 'OK') {
+    ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname'");
+    ok( $rcount == 1, " ... [$rcount] yep, hostname only occurs once" );
+  } else {
+    print "not ok: $msg";
+  }
+};
+
+subtest 'Update non-CNAME to CNAME, colliding' => sub {
+  $newname = 'mx1.example.com';
+  ($code, $msg) = $dnsdb->updateRec('n', 'n', 39, 1, \$newname, \$rectype, \$newval, 900);
+  ok( $code eq 'FAIL', "updateRec() claimed failure" );
+  if ($code eq 'FAIL') {
+    ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname' AND type <> 5");
+    ok( $rcount == 2, " ... [$rcount] record(s) with $newname already exist" );
+    like( $msg, qr/One or more non-CNAME records/, " ... returned matching error" );
+  }
+};
+
+subtest 'Update CNAME to non-colliding name' => sub {
+  $newname = 'imap.example.com';
+  ($code, $msg) = $dnsdb->updateRec('n', 'n', 37, 1, \$newname, \$rectype, \$newval, 900);
+  ok( $code eq 'OK', "updateRec() claimed success" );
+  if ($code eq 'OK') {
+    ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname'");
+    ok( $rcount == 1, " ... [$rcount] yep, hostname only occurs once" );
+  } else {
+    print "not ok: $msg";
+  }
+};
+
+subtest 'Update CNAME to colliding name' => sub {
+  $newname = 'mx1.example.com';
+  ($code, $msg) = $dnsdb->updateRec('n', 'n', 41, 1, \$newname, \$rectype, \$newval, 900);
+  ok( $code eq 'FAIL', "updateRec() claimed failure" );
+  if ($code eq 'FAIL') {
+    ($rcount) = $dbh->selectrow_array("SELECT count(*) FROM records WHERE domain_id = 1 AND host = '$newname' AND type <> 5");
+    ok( $rcount == 2, " ... [$rcount] record(s) with $newname already exist" );
+    like( $msg, qr/One or more non-CNAME records/, " ... returned matching error" );
+  }
+};
+
 }; # domain tests
 
