1var fs = require('fs') 2var path = require('path') 3 4var test = require('tap').test 5var common = require('../common-tap') 6var mr = require('npm-registry-mock') 7 8var pkg = common.pkg 9 10var server 11 12function setup () { 13 fs.writeFileSync( 14 path.join(pkg, 'package.json'), 15 JSON.stringify({ 16 name: '@bigco/publish-organized', 17 version: '1.2.5' 18 }, null, 2), 19 'ascii') 20} 21 22test('setup', function (t) { 23 setup() 24 mr({port: common.port, throwOnUnmatched: true}, function (err, s) { 25 t.ifError(err, 'registry mocked successfully') 26 server = s 27 t.end() 28 }) 29}) 30 31test('npm publish should honor scoping', function (t) { 32 server.filteringRequestBody(verify) 33 .put('/@bigco%2fpublish-organized', true) 34 .reply(201, {ok: true}) 35 36 var configuration = [ 37 'progress=false', 38 'cache=' + common.cache, 39 'registry=http://nonexistent.lvh.me', 40 '//localhost:' + common.port + '/:username=username', 41 '//localhost:' + common.port + '/:_password=' + Buffer.from('password').toString('base64'), 42 '//localhost:' + common.port + '/:email=' + 'ogd@aoaioxxysz.net', 43 '@bigco:registry=' + common.registry 44 ] 45 var configFile = path.join(pkg, '.npmrc') 46 47 fs.writeFileSync(configFile, configuration.join('\n') + '\n') 48 49 common.npm(['publish'], {'cwd': pkg, nodeExecPath: process.execPath}, function (err, code, stdout, stderr) { 50 if (err) throw err 51 t.is(code, 0, 'published without error') 52 server.done() 53 t.end() 54 }) 55 56 function verify (body) { 57 t.doesNotThrow(function () { 58 var parsed = JSON.parse(body) 59 var current = parsed.versions['1.2.5'] 60 t.equal( 61 current._npmVersion, 62 require(path.resolve(__dirname, '../../package.json')).version, 63 'npm version is correct' 64 ) 65 66 t.equal( 67 current._nodeVersion, 68 process.versions.node, 69 'node version is correct' 70 ) 71 }, 'converted body back into object') 72 73 return true 74 } 75}) 76 77test('cleanup', function (t) { 78 server.close() 79 process.chdir(__dirname) 80 t.end() 81}) 82