• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1var fs = require('fs')
2var path = require('path')
3
4var mkdirp = require('mkdirp')
5var mr = require('npm-registry-mock')
6var rimraf = require('rimraf')
7var test = require('tap').test
8
9var common = require('../common-tap.js')
10
11var pkg = common.pkg
12var opts = { cwd: pkg }
13
14var outfile = path.join(pkg, '_npmrc')
15
16var contents = function () {
17}.toString().split('\n').slice(1, -1).join('\n')
18
19var pingResponse = {
20  host: 'registry.npmjs.org',
21  ok: true,
22  username: null,
23  peer: 'example.com'
24}
25
26function mocks (server) {
27  server.get('/-/ping?write=true').reply(200, JSON.stringify(pingResponse))
28}
29
30test('setup', function (t) {
31  cleanup()
32  setup()
33  t.end()
34})
35
36test('npm ping', function (t) {
37  mr({ port: common.port, plugin: mocks }, function (err, s) {
38    if (err) throw err
39
40    common.npm([
41      'ping',
42      '--registry', common.registry,
43      '--loglevel', 'notice',
44      '--userconfig', outfile
45    ], opts, function (err, code, stdout, stderr) {
46      s.close()
47      t.ifError(err, 'command completed')
48      t.notOk(code, 'exited OK')
49
50      t.match(stderr, /PING/, 'ping notification output')
51      t.match(stderr, /PONG/, 'pong response output')
52      t.end()
53    })
54  })
55})
56
57test('npm ping --json', function (t) {
58  mr({ port: common.port, plugin: mocks }, function (err, s) {
59    if (err) throw err
60
61    common.npm([
62      'ping',
63      '--json',
64      '--registry', common.registry,
65      '--loglevel', 'notice',
66      '--userconfig', outfile
67    ], opts, function (err, code, stdout, stderr) {
68      s.close()
69      t.ifError(err, 'command completed')
70      t.notOk(code, 'exited OK')
71
72      const json = JSON.parse(stdout.trim())
73      t.similar(json, {
74        registry: common.registry,
75        details: pingResponse
76      }, 'JSON info returned')
77      t.equal(typeof json.time, 'number', 'got a timestamp')
78      t.end()
79    })
80  })
81})
82
83test('cleanup', function (t) {
84  cleanup()
85  t.end()
86})
87
88function setup () {
89  mkdirp.sync(pkg)
90  fs.writeFileSync(outfile, contents)
91}
92
93function cleanup () {
94  rimraf.sync(pkg)
95}
96