var test = require("tap").test var server = require("./lib/server.js") var common = require("./lib/common.js") var client = common.freshClient() function nop () {} var URI = "https://npm.registry:8043/rewrite" var USERNAME = "username" var PASSWORD = "password" var EMAIL = "n@p.m" var AUTH = { auth : { username : USERNAME, password : PASSWORD, email : EMAIL } } test("adduser call contract", function (t) { t.throws(function () { client.adduser(undefined, AUTH, nop) }, "requires a URI") t.throws(function () { client.adduser([], AUTH, nop) }, "requires URI to be a string") t.throws(function () { client.adduser(URI, undefined, nop) }, "requires params object") t.throws(function () { client.adduser(URI, "", nop) }, "params must be object") t.throws(function () { client.adduser(URI, AUTH, undefined) }, "requires callback") t.throws(function () { client.adduser(URI, AUTH, "callback") }, "callback must be function") t.throws( function () { var params = { auth : { password : PASSWORD, email : EMAIL } } client.adduser(URI, params, nop) }, { name : "AssertionError", message : "must include username in auth" }, "auth must include username" ) t.throws( function () { var params = { auth : { username : USERNAME, email : EMAIL } } client.adduser(URI, params, nop) }, { name : "AssertionError", message : "must include password in auth" }, "auth must include password" ) t.throws( function () { var params = { auth : { username : USERNAME, password : PASSWORD } } client.adduser(URI, params, nop) }, { name : "AssertionError", message : "must include email in auth" }, "auth must include email" ) t.test("username missing", function (t) { var params = { auth : { username : "", password : PASSWORD, email : EMAIL } } client.adduser(URI, params, function (err) { t.equal(err && err.message, "No username supplied.", "username must not be empty") t.end() }) }) t.test("password missing", function (t) { var params = { auth : { username : USERNAME, password : "", email : EMAIL } } client.adduser(URI, params, function (err) { t.equal( err && err.message, "No password supplied.", "password must not be empty" ) t.end() }) }) t.test("email missing", function (t) { var params = { auth : { username : USERNAME, password : PASSWORD, email : "" } } client.adduser(URI, params, function (err) { t.equal( err && err.message, "No email address supplied.", "email must not be empty" ) t.end() }) }) t.test("email malformed", function (t) { var params = { auth : { username : USERNAME, password : PASSWORD, email : "lolbutts" } } client.adduser(URI, params, function (err) { t.equal( err && err.message, "Please use a real email address.", "email must look like email" ) t.end() }) }) t.end() }) test("cleanup", function (t) { server.close() t.end() })