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() })