var fs = require('fs') var path = require('path') var test = require('tap').test var mkdirp = require('mkdirp') var rimraf = require('rimraf') var mr = require('npm-registry-mock') var common = require('../common-tap') var server var pkg = path.join(__dirname, 'publish-access') test('setup', function (t) { mr({port: common.port, throwOnUnmatched: true}, function (err, s) { t.ifError(err, 'registry mocked successfully') t.pass('setup done') server = s t.end() }) }) test('scoped packages pass public access if set', function (t) { server.filteringRequestBody(function (body) { t.doesNotThrow(function () { var parsed = JSON.parse(body) t.equal(parsed.access, 'public', 'access level is correct') }, 'converted body back into object') return true }).put('/@bigco%2fpublish-access', true).reply(201, {ok: true}) mkdirp(path.join(pkg, 'cache'), function () { fs.writeFile( path.join(pkg, 'package.json'), JSON.stringify({ name: '@bigco/publish-access', version: '1.2.5', public: true }), 'ascii', function (er) { t.ifError(er, 'package file written') common.npm( [ 'publish', '--access', 'public', '--cache', path.join(pkg, 'cache'), '--loglevel', 'silly', '--registry', common.registry ], { cwd: pkg }, function (er) { t.ifError(er, 'published without error') server.done() t.end() } ) } ) }) }) test('cleanup', function (t) { process.chdir(__dirname) server.close() rimraf(pkg, function (er) { t.ifError(er) t.end() }) })