npm: Upgrade to 1.3.19
[platform/upstream/nodejs.git] / deps / npm / node_modules / npm-registry-client / test / fixtures / server.js
1 // a fake registry server.
2
3 var http = require('http')
4 var server = http.createServer(handler)
5 var port = server.port = process.env.PORT || 1337
6 server.listen(port)
7
8 module.exports = server
9
10 server._expect = {}
11
12 var expect = {}
13 function handler (req, res) {
14   req.connection.setTimeout(1000)
15
16   var u = '* ' + req.url
17   , mu = req.method + ' ' + req.url
18
19   var k = server._expect[mu] ? mu : server._expect[u] ? u : null
20   if (!k) throw Error('unexpected request: ' + req.method + ' ' + req.url)
21
22   var fn = server._expect[k].shift()
23   if (!fn) throw Error('unexpected request' + req.method + ' ' + req.url)
24
25
26   var remain = (Object.keys(server._expect).reduce(function (s, k) {
27     return s + server._expect[k].length
28   }, 0))
29   if (remain === 0) server.close()
30   else console.error("TEST SERVER: %d reqs remain", remain)
31   console.error(Object.keys(server._expect).map(function(k) {
32     return [k, server._expect[k].length]
33   }).reduce(function (acc, kv) {
34     acc[kv[0]] = kv[1]
35     return acc
36   }, {}))
37
38   res.json = json
39   fn(req, res)
40 }
41
42 function json (o) {
43   this.setHeader('content-type', 'application/json')
44   this.end(JSON.stringify(o))
45 }
46
47 server.expect = function (method, u, fn) {
48   if (typeof u === 'function') {
49     fn = u
50     u = method
51     method = '*'
52   }
53   u = method + ' ' + u
54   server._expect[u] = server._expect[u] || []
55   server._expect[u].push(fn)
56 }