diff --git a/browserid/lib/db.js b/browserid/lib/db.js
index 9b7eed6d0301a4c0584348dfe5601b085fde1e5d..3caf1969f0e7609ff09343f1a3822628090e6e94 100644
--- a/browserid/lib/db.js
+++ b/browserid/lib/db.js
@@ -326,18 +326,19 @@ exports.getSyncResponse = function(email, identities, cb) {
   });
 };
 
-
+// get all public keys associated with an email address
 exports.pubkeysForEmail = function(identity, cb) {
-  db.execute('SELECT keys.key FROM keys, emails WHERE emails.address = ? AND keys.email = emails.id',
-             [ identity ],
-             function(err, rows) {
-               var keys = undefined;
-               if (!err && rows && rows.length) {
-                 keys = [ ];
-                 for (var i = 0; i < rows.length; i++) keys.push(rows[i].key);
-               }
-               cb(keys);
-             });
+  db.execute(
+    'SELECT keys.key FROM keys, emails WHERE emails.address = ? AND keys.email = emails.id',
+    [ identity ],
+    function(err, rows) {
+      var keys = undefined;
+      if (!err && rows && rows.length) {
+        keys = [ ];
+        for (var i = 0; i < rows.length; i++) keys.push(rows[i].key);
+      }
+      cb(keys);
+    });
 };
 
 
diff --git a/browserid/tests/db-test.js b/browserid/tests/db-test.js
index 47ac0a5aaee13d21ee6b6f4c81b0890981856bbd..7135eb811bcaf9c3a1e0ad460e58358bdfce5888 100755
--- a/browserid/tests/db-test.js
+++ b/browserid/tests/db-test.js
@@ -4,7 +4,8 @@ const assert = require('assert'),
         vows = require('vows'),
           db = require('../lib/db.js'),
         temp = require('temp'),
-          fs = require('fs');
+          fs = require('fs'),
+        path = require('path');
 
 var suite = vows.describe('db');
 
@@ -16,7 +17,7 @@ suite.addBatch({
       var cb = this.callback;
       db.onReady(function() { cb(true) });
     },
-    "the database is ready": function(err, r) {
+    "the database is ready": function(r) {
       assert.strictEqual(r, true);
     }
   }
@@ -30,7 +31,7 @@ suite.addBatch({
     topic: function() {
       return db.isStaged('lloyd@nowhe.re');
     },
-    "isStaged returns false": function (e, r) {
+    "isStaged returns false": function (r) {
       assert.strictEqual(r, false);
     }
   },
@@ -38,7 +39,7 @@ suite.addBatch({
     topic: function() {
       db.emailKnown('lloyd@nowhe.re', this.callback);
     },
-    "emailKnown returns false": function (e, r) {
+    "emailKnown returns false": function (r) {
       assert.strictEqual(r, false);
     }
   }
@@ -53,7 +54,7 @@ suite.addBatch({
         pass: 'fakepasswordhash'
       });
     },
-    "staging returns a valid secret": function(e, r) {
+    "staging returns a valid secret": function(r) {
       assert.isString(secret);
       assert.strictEqual(secret.length, 48);
     }
@@ -65,7 +66,7 @@ suite.addBatch({
     topic: function() {
       return db.isStaged('lloyd@nowhe.re');
     },
-    " as staged after it is": function (e, r) {
+    " as staged after it is": function (r) {
       assert.strictEqual(r, true);
     }
   },
@@ -73,7 +74,7 @@ suite.addBatch({
     topic: function() {
       db.emailKnown('lloyd@nowhe.re', this.callback);
     },
-    " as known when it is only staged": function (e, r) {
+    " as known when it is only staged": function (r) {
       assert.strictEqual(r, false);
     }
   }
@@ -84,7 +85,7 @@ suite.addBatch({
     topic: function() {
       db.gotVerificationSecret(secret, this.callback);
     },
-    "gotVerificationSecret completes without error": function (e, r) {
+    "gotVerificationSecret completes without error": function (r) {
       assert.strictEqual(r, undefined);
     }
   }
@@ -95,7 +96,7 @@ suite.addBatch({
     topic: function() {
       return db.isStaged('lloyd@nowhe.re');
     },
-    "as staged immediately after its verified": function (e, r) {
+    "as staged immediately after its verified": function (r) {
       assert.strictEqual(r, false);
     }
   },
@@ -103,32 +104,72 @@ suite.addBatch({
     topic: function() {
       db.emailKnown('lloyd@nowhe.re', this.callback);
     },
-    "when it is": function (e, r) {
+    "when it is": function (r) {
       assert.strictEqual(r, true);
     }
   }
 });
 
+suite.addBatch({
+  "adding keys to email": {
+    topic: function() {
+      db.addKeyToEmail('lloyd@nowhe.re', 'lloyd@nowhe.re', 'fakepublickey2', this.callback);
+    },
+    "works": function(r) {
+      assert.isUndefined(r);
+    }
+  }
+});
+
+suite.addBatch({
+  "adding multiple keys to email": {
+    topic: function() {
+      db.addKeyToEmail('lloyd@nowhe.re', 'lloyd@nowhe.re', 'fakepublickey3', this.callback);
+    },
+    "works too": function(r) {
+      assert.isUndefined(r);
+    }
+  }
+});
+
+suite.addBatch({
+  "pubkeysForEmail": {
+    topic: function() {
+      db.pubkeysForEmail('lloyd@nowhe.re', this.callback);
+    },
+    "returns all public keys properly": function(r, e) {
+      assert.isArray(r);
+      assert.strictEqual(r.length, 3);
+    }
+  }
+});    
+
+
 // XXX: remaining APIs to test 
 // exports.addEmailToAccount
-// exports.addKeyToEmail
 // exports.cancelAccount
 // exports.checkAuth
 // exports.checkAuthHash
 // exports.emailsBelongToSameAccount
 // exports.getSyncResponse
-// exports.pubkeysForEmail
 // exports.removeEmail
 // exports.stageEmail
 
-
 suite.addBatch({
   "remove the database file": {
     topic: function() {
       fs.unlink(db.dbPath, this.callback);
     },
-    "file is toast": function(err, exception) {
-      assert.strictEqual(exception, undefined);
+    "and unlink should not error": function(err) {
+      assert.strictEqual(err, undefined);
+     },
+    "and the file": {
+      topic: function() {
+        path.exists(db.dbPath, this.callback);
+      },
+      "should be missing": function(r) {
+        assert.isFalse(r);
+      }
     }
   }
 });