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