| var fs = require("fs") |
| var path = require("path") |
| |
| var test = require('tap').test |
| var mkdirp = require('mkdirp') |
| var rimraf = require('rimraf') |
| var common = require('../common-tap') |
| var mr = require('npm-registry-mock') |
| |
| var pkg = path.join(__dirname, "prepublish_package") |
| |
| var server |
| |
| function setup () { |
| cleanup() |
| mkdirp.sync(path.join(pkg, 'cache')) |
| |
| fs.writeFileSync( |
| path.join(pkg, 'package.json'), |
| JSON.stringify({ |
| name: '@bigco/publish-organized', |
| version: '1.2.5' |
| }, null, 2), |
| 'ascii') |
| } |
| |
| test('setup', function (t) { |
| setup() |
| mr({port: common.port, throwOnUnmatched: true}, function (err, s) { |
| t.ifError(err, 'registry mocked successfully') |
| server = s |
| t.end() |
| }) |
| }) |
| |
| test('npm publish should honor scoping', function (t) { |
| server.filteringRequestBody(verify) |
| .put('/@bigco%2fpublish-organized', true) |
| .reply(201, {ok: true}) |
| |
| var configuration = [ |
| 'progress=false', |
| 'cache=' + path.join(pkg, 'cache'), |
| 'registry=http://nonexistent.lvh.me', |
| '//localhost:1337/:username=username', |
| '//localhost:1337/:_password=' + new Buffer('password').toString('base64'), |
| '//localhost:1337/:email=' + 'ogd@aoaioxxysz.net', |
| '@bigco:registry=' + common.registry |
| ] |
| var configFile = path.join(pkg, '.npmrc') |
| |
| fs.writeFileSync(configFile, configuration.join('\n') + '\n') |
| |
| common.npm(['publish'], {'cwd': pkg}, function (err, code, stdout, stderr) { |
| if (err) throw err |
| t.is(code, 0, 'published without error') |
| server.done() |
| t.end() |
| }) |
| |
| function verify (body) { |
| t.doesNotThrow(function () { |
| var parsed = JSON.parse(body) |
| var current = parsed.versions["1.2.5"] |
| t.equal( |
| current._npmVersion, |
| require(path.resolve(__dirname, "../../package.json")).version, |
| "npm version is correct" |
| ) |
| |
| t.equal( |
| current._nodeVersion, |
| process.versions.node, |
| "node version is correct" |
| ) |
| }, "converted body back into object") |
| |
| return true |
| } |
| }) |
| |
| test('cleanup', function (t) { |
| server.close() |
| t.end() |
| cleanup() |
| }) |
| |
| function cleanup () { |
| process.chdir(__dirname) |
| rimraf.sync(pkg) |
| } |