1 // a fake registry server.
3 var http = require('http')
4 var server = http.createServer(handler)
5 var port = server.port = process.env.PORT || 1337
6 var assert = require('assert')
9 module.exports = server
13 function handler (req, res) {
14 req.connection.setTimeout(1000)
16 // If we got authorization, make sure it's the right password.
17 if (req.headers.authorization && req.headers.authorization.match(/^Basic/)) {
18 var auth = req.headers.authorization.replace(/^Basic /, '')
19 auth = new Buffer(auth, 'base64').toString('utf8')
20 assert.equal(auth, 'username:%1234@asdf%')
23 var u = '* ' + req.url
24 var mu = req.method + ' ' + req.url
26 var k = server._expect[mu] ? mu : server._expect[u] ? u : null
27 if (!k) throw Error('unexpected request: ' + req.method + ' ' + req.url)
29 var fn = server._expect[k].shift()
30 if (!fn) throw Error('unexpected request: ' + req.method + ' ' + req.url)
32 this.log.info('fake-registry', Object.keys(server._expect).map(function (k) {
33 return [k, server._expect[k].length]
34 }).reduce(function (acc, kv) {
44 this.setHeader('content-type', 'application/json')
45 this.end(JSON.stringify(o))
48 // this log is meanto to be overridden
49 server.log = require('npmlog')
51 server.expect = function (method, u, fn) {
52 if (typeof u === 'function') {
58 server._expect[u] = server._expect[u] || []
59 server._expect[u].push(fn)