var fs = require("fs") var path = require("path") var test = require("tap").test var mkdirp = require("mkdirp") var rimraf = require("rimraf") var npm = require("../../") var common = require("../common-tap.js") var pkg = path.join(__dirname, "publish-access-unscoped") // TODO: nock uses setImmediate, breaks 0.8: replace with mockRegistry if (!global.setImmediate) { global.setImmediate = function () { var args = [arguments[0], 0].concat([].slice.call(arguments, 1)) setTimeout.apply(this, args) } } test("setup", function (t) { mkdirp(path.join(pkg, "cache"), function () { var configuration = { cache : path.join(pkg, "cache"), loglevel : "silent", registry : common.registry } npm.load(configuration, next) }) function next (er) { t.ifError(er, "npm loaded successfully") process.chdir(pkg) fs.writeFile( path.join(pkg, "package.json"), JSON.stringify({ name: "publish-access", version: "1.2.5" }), "ascii", function (er) { t.ifError(er) t.pass("setup done") t.end() } ) } }) test("unscoped packages cannot be restricted", function (t) { npm.config.set("access", "restricted") npm.commands.publish([], false, function (er) { t.ok(er, "got an error back") t.equal(er.message, "Can't restrict access to unscoped packages.") t.end() }) }) test("cleanup", function (t) { process.chdir(__dirname) rimraf(pkg, function (er) { t.ifError(er) t.end() }) })