--- /dev/null
+var fs = require('graceful-fs')
+var http = require('http')
+var path = require('path')
+
+var mkdirp = require('mkdirp')
+var osenv = require('osenv')
+var rimraf = require('rimraf')
+var test = require('tap').test
+
+var pkg = path.join(__dirname, 'npm-test-unpublish-config')
+var fixturePath = path.join(pkg, 'fixture_npmrc')
+
+var common = require('../common-tap.js')
+
+var json = {
+ name: 'npm-test-unpublish-config',
+ version: '1.2.3',
+ publishConfig: { registry: common.registry }
+}
+
+test('setup', function (t) {
+ mkdirp.sync(pkg)
+
+ fs.writeFileSync(
+ path.join(pkg, 'package.json'),
+ JSON.stringify(json), 'utf8'
+ )
+ fs.writeFileSync(
+ fixturePath,
+ '//localhost:1337/:_authToken = beeeeeeeeeeeeef\n' +
+ 'registry = http://lvh.me:4321/registry/path\n'
+ )
+
+ t.end()
+})
+
+test('cursory test of unpublishing with config', function (t) {
+ var child
+ t.plan(4)
+ http.createServer(function (req, res) {
+ t.pass('got request on the fakey fake registry')
+ this.close()
+ res.statusCode = 500
+ res.end(JSON.stringify({
+ error: 'shh no tears, only dreams now'
+ }))
+ child.kill('SIGHUP')
+ }).listen(common.port, function () {
+ t.pass('server is listening')
+
+ child = common.npm(
+ [
+ '--userconfig', fixturePath,
+ '--loglevel', 'silent',
+ '--force',
+ 'unpublish'
+ ],
+ {
+ cwd: pkg,
+ stdio: 'inherit',
+ env: {
+ 'npm_config_cache_lock_stale': 1000,
+ 'npm_config_cache_lock_wait': 1000,
+ HOME: process.env.HOME,
+ Path: process.env.PATH,
+ PATH: process.env.PATH,
+ USERPROFILE: osenv.home()
+ }
+ },
+ function (err, code) {
+ t.ifError(err, 'publish command finished successfully')
+ t.notOk(code, 'npm install exited with code 0')
+ }
+ )
+ })
+})
+
+test('cleanup', function (t) {
+ process.chdir(osenv.tmpdir())
+ rimraf.sync(pkg)
+ t.end()
+})