// a fake registry server. var http = require('http') var server = http.createServer(handler) var port = server.port = process.env.PORT || 1337 var assert = require('assert') server.listen(port) module.exports = server server._expect = {} function handler (req, res) { req.connection.setTimeout(1000) // If we got authorization, make sure it's the right password. if (req.headers.authorization && req.headers.authorization.match(/^Basic/)) { var auth = req.headers.authorization.replace(/^Basic /, '') auth = new Buffer(auth, 'base64').toString('utf8') assert.equal(auth, 'username:%1234@asdf%') } var u = '* ' + req.url var mu = req.method + ' ' + req.url var k = server._expect[mu] ? mu : server._expect[u] ? u : null if (!k) throw Error('unexpected request: ' + req.method + ' ' + req.url) var fn = server._expect[k].shift() if (!fn) throw Error('unexpected request: ' + req.method + ' ' + req.url) this.log.info('fake-registry', Object.keys(server._expect).map(function (k) { return [k, server._expect[k].length] }).reduce(function (acc, kv) { acc[kv[0]] = kv[1] return acc }, {})) res.json = json fn(req, res) } function json (o) { this.setHeader('content-type', 'application/json') this.end(JSON.stringify(o)) } // this log is meanto to be overridden server.log = require('npmlog') server.expect = function (method, u, fn) { if (typeof u === 'function') { fn = u u = method method = '*' } u = method + ' ' + u server._expect[u] = server._expect[u] || [] server._expect[u].push(fn) }