]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/npm-registry-client/test/fetch-github-api-json.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / node_modules / npm-registry-client / test / fetch-github-api-json.js
1 var resolve = require('path').resolve
2 var createReadStream = require('graceful-fs').createReadStream
3 var readFileSync = require('graceful-fs').readFileSync
4
5 var tap = require('tap')
6 var cat = require('concat-stream')
7 var Negotiator = require('negotiator')
8
9 var server = require('./lib/server.js')
10 var common = require('./lib/common.js')
11
12 var tgz = resolve(__dirname, './fixtures/underscore/1.3.3/package.tgz')
13
14 tap.test("fetch accepts github api's json", function (t) {
15   server.expect('/underscore/-/underscore-1.3.3', function (req, res) {
16     t.equal(req.method, 'GET', 'got expected method')
17
18     var negotiator = new Negotiator(req)
19
20     // fetching a tarball from `api.github.com` returns a 415 error if json is
21     // not accepted
22     if (negotiator.mediaTypes().indexOf('application/vnd.github+json') === -1) {
23       res.writeHead(415, {
24         'Content-Type': 'application/json'
25       })
26     } else {
27       res.writeHead(302, {
28         'Content-Type': 'text/html',
29         'Location': '/underscore/-/underscore-1.3.3.tgz'
30       })
31     }
32
33     res.end()
34   })
35
36   server.expect('/underscore/-/underscore-1.3.3.tgz', function (req, res) {
37     t.equal(req.method, 'GET', 'got expected method')
38
39     res.writeHead(200, {
40       'Content-Type': 'application/x-tar',
41       'Content-Encoding': 'gzip'
42     })
43
44     createReadStream(tgz).pipe(res)
45   })
46
47   var client = common.freshClient()
48   var defaulted = {}
49   client.fetch(
50     'http://localhost:1337/underscore/-/underscore-1.3.3',
51     defaulted,
52     function (er, res) {
53       t.ifError(er, 'loaded successfully')
54
55       var sink = cat(function (data) {
56         t.deepEqual(data, readFileSync(tgz))
57         server.close()
58         t.end()
59       })
60
61       res.on('error', function (error) {
62         t.ifError(error, 'no errors on stream')
63       })
64
65       res.pipe(sink)
66     }
67   )
68 })