summaryrefslogtreecommitdiff
path: root/deps/npm/test/tap/config-envReplace.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/test/tap/config-envReplace.js')
-rw-r--r--deps/npm/test/tap/config-envReplace.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/deps/npm/test/tap/config-envReplace.js b/deps/npm/test/tap/config-envReplace.js
new file mode 100644
index 0000000000..0b4f628d67
--- /dev/null
+++ b/deps/npm/test/tap/config-envReplace.js
@@ -0,0 +1,57 @@
+/* eslint-disable no-template-curly-in-string */
+
+const fs = require('fs')
+const mkdirp = require('mkdirp')
+const rimraf = require('rimraf')
+const path = require('path')
+const ini = require('ini')
+const test = require('tap').test
+const npmconf = require('../../lib/config/core.js')
+
+const packagePath = path.resolve(__dirname, 'config-envReplace')
+
+const packageJsonFile = JSON.stringify({
+ name: 'config-envReplace'
+})
+
+const inputConfigFile = [
+ 'registry=${NPM_REGISTRY_URL}',
+ '//${NPM_REGISTRY_HOST}/:_authToken=${NPM_AUTH_TOKEN}',
+ 'always-auth=true',
+ ''
+].join('\n')
+
+const expectConfigFile = [
+ 'registry=http://my.registry.com/',
+ '//my.registry.com/:_authToken=xxxxxxxxxxxxxxx',
+ 'always-auth=true',
+ ''
+].join('\n')
+
+test('environment variables replacing in configs', function (t) {
+ process.env = Object.assign(process.env, {
+ NPM_REGISTRY_URL: 'http://my.registry.com/',
+ NPM_REGISTRY_HOST: 'my.registry.com',
+ NPM_AUTH_TOKEN: 'xxxxxxxxxxxxxxx'
+ })
+ mkdirp.sync(packagePath)
+ const packageJsonPath = path.resolve(packagePath, 'package.json')
+ const configPath = path.resolve(packagePath, '.npmrc')
+ fs.writeFileSync(packageJsonPath, packageJsonFile)
+ fs.writeFileSync(configPath, inputConfigFile)
+
+ const originalCwdPath = process.cwd()
+ process.chdir(packagePath)
+ npmconf.load(function (error, conf) {
+ if (error) throw error
+
+ const foundConfigFile = ini.stringify(conf.sources.project.data)
+ t.same(ini.parse(foundConfigFile), ini.parse(expectConfigFile))
+
+ fs.unlinkSync(packageJsonPath)
+ fs.unlinkSync(configPath)
+ rimraf.sync(packagePath)
+ process.chdir(originalCwdPath)
+ t.end()
+ })
+})