aboutsummaryrefslogtreecommitdiff
path: root/deps/node/deps/npm/test/tap/config-credentials.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/node/deps/npm/test/tap/config-credentials.js')
-rw-r--r--deps/node/deps/npm/test/tap/config-credentials.js350
1 files changed, 350 insertions, 0 deletions
diff --git a/deps/node/deps/npm/test/tap/config-credentials.js b/deps/node/deps/npm/test/tap/config-credentials.js
new file mode 100644
index 00000000..f6f00ee0
--- /dev/null
+++ b/deps/node/deps/npm/test/tap/config-credentials.js
@@ -0,0 +1,350 @@
+var test = require('tap').test
+
+var npmconf = require('../../lib/config/core.js')
+var common = require('./00-config-setup.js')
+
+var URI = 'https://registry.lvh.me:8661/'
+
+test('getting scope with no credentials set', function (t) {
+ npmconf.load({}, function (er, conf) {
+ t.ifError(er, 'configuration loaded')
+
+ var basic = conf.getCredentialsByURI(URI)
+ t.equal(basic.scope, '//registry.lvh.me:8661/', 'nerfed URL extracted')
+
+ t.end()
+ })
+})
+
+test('trying to set credentials with no URI', function (t) {
+ npmconf.load(common.builtin, function (er, conf) {
+ t.ifError(er, 'configuration loaded')
+
+ t.throws(function () {
+ conf.setCredentialsByURI()
+ }, 'enforced missing URI')
+
+ t.end()
+ })
+})
+
+test('trying to clear credentials with no URI', function (t) {
+ npmconf.load(common.builtin, function (er, conf) {
+ t.ifError(er, 'configuration loaded')
+
+ t.throws(function () {
+ conf.clearCredentialsByURI()
+ }, 'enforced missing URI')
+
+ t.end()
+ })
+})
+
+test('set with missing credentials object', function (t) {
+ npmconf.load(common.builtin, function (er, conf) {
+ t.ifError(er, 'configuration loaded')
+
+ t.throws(function () {
+ conf.setCredentialsByURI(URI)
+ }, 'enforced missing credentials')
+
+ t.end()
+ })
+})
+
+test('set with empty credentials object', function (t) {
+ npmconf.load(common.builtin, function (er, conf) {
+ t.ifError(er, 'configuration loaded')
+
+ t.throws(function () {
+ conf.setCredentialsByURI(URI, {})
+ }, 'enforced missing credentials')
+
+ t.end()
+ })
+})
+
+test('set with token', function (t) {
+ npmconf.load(common.builtin, function (er, conf) {
+ t.ifError(er, 'configuration loaded')
+
+ t.doesNotThrow(function () {
+ conf.setCredentialsByURI(URI, { token: 'simple-token' })
+ }, 'needs only token')
+
+ var expected = {
+ scope: '//registry.lvh.me:8661/',
+ token: 'simple-token',
+ username: undefined,
+ password: undefined,
+ email: undefined,
+ auth: undefined,
+ alwaysAuth: false
+ }
+
+ t.same(conf.getCredentialsByURI(URI), expected, 'got bearer token and scope')
+
+ t.end()
+ })
+})
+
+test('clear with token', function (t) {
+ npmconf.load(common.builtin, function (er, conf) {
+ t.ifError(er, 'configuration loaded')
+
+ t.doesNotThrow(function () {
+ conf.setCredentialsByURI(URI, { token: 'simple-token' })
+ }, 'needs only token')
+
+ t.doesNotThrow(function () {
+ conf.clearCredentialsByURI(URI)
+ }, 'needs only URI')
+
+ t.notOk(conf.getCredentialsByURI(URI).token, 'token all gone')
+
+ t.end()
+ })
+})
+
+test('set with missing username', function (t) {
+ npmconf.load(common.builtin, function (er, conf) {
+ t.ifError(er, 'configuration loaded')
+
+ var credentials = {
+ password: 'password',
+ email: 'ogd@aoaioxxysz.net'
+ }
+
+ t.throws(function () {
+ conf.setCredentialsByURI(URI, credentials)
+ }, 'enforced missing email')
+
+ t.end()
+ })
+})
+
+test('set with missing password', function (t) {
+ npmconf.load(common.builtin, function (er, conf) {
+ t.ifError(er, 'configuration loaded')
+
+ var credentials = {
+ username: 'username',
+ email: 'ogd@aoaioxxysz.net'
+ }
+
+ t.throws(function () {
+ conf.setCredentialsByURI(URI, credentials)
+ }, 'enforced missing email')
+
+ t.end()
+ })
+})
+
+test('set with missing email', function (t) {
+ npmconf.load(common.builtin, function (er, conf) {
+ t.ifError(er, 'configuration loaded')
+
+ var credentials = {
+ username: 'username',
+ password: 'password'
+ }
+
+ t.throws(function () {
+ conf.setCredentialsByURI(URI, credentials)
+ }, 'enforced missing email')
+
+ t.end()
+ })
+})
+
+test('set with old-style credentials', function (t) {
+ npmconf.load(common.builtin, function (er, conf) {
+ t.ifError(er, 'configuration loaded')
+
+ var credentials = {
+ username: 'username',
+ password: 'password',
+ email: 'ogd@aoaioxxysz.net'
+ }
+
+ t.doesNotThrow(function () {
+ conf.setCredentialsByURI(URI, credentials)
+ }, 'requires all of username, password, and email')
+
+ var expected = {
+ scope: '//registry.lvh.me:8661/',
+ token: undefined,
+ username: 'username',
+ password: 'password',
+ email: 'ogd@aoaioxxysz.net',
+ auth: 'dXNlcm5hbWU6cGFzc3dvcmQ=',
+ alwaysAuth: false
+ }
+
+ t.same(conf.getCredentialsByURI(URI), expected, 'got credentials')
+
+ t.end()
+ })
+})
+
+test('clear with old-style credentials', function (t) {
+ npmconf.load(common.builtin, function (er, conf) {
+ t.ifError(er, 'configuration loaded')
+
+ var credentials = {
+ username: 'username',
+ password: 'password',
+ email: 'ogd@aoaioxxysz.net'
+ }
+
+ t.doesNotThrow(function () {
+ conf.setCredentialsByURI(URI, credentials)
+ }, 'requires all of username, password, and email')
+
+ t.doesNotThrow(function () {
+ conf.clearCredentialsByURI(URI)
+ }, 'clearing only required URI')
+
+ t.notOk(conf.getCredentialsByURI(URI).username, 'username cleared')
+ t.notOk(conf.getCredentialsByURI(URI).password, 'password cleared')
+
+ t.end()
+ })
+})
+
+test('get old-style credentials for default registry', function (t) {
+ npmconf.load(common.builtin, function (er, conf) {
+ var actual = conf.getCredentialsByURI(conf.get('registry'))
+ var expected = {
+ scope: '//registry.npmjs.org/',
+ token: undefined,
+ password: 'password',
+ username: 'username',
+ email: 'i@izs.me',
+ auth: 'dXNlcm5hbWU6cGFzc3dvcmQ=',
+ alwaysAuth: false
+ }
+ t.same(actual, expected)
+ t.end()
+ })
+})
+
+test('set with always-auth enabled', function (t) {
+ npmconf.load(common.builtin, function (er, conf) {
+ t.ifError(er, 'configuration loaded')
+
+ var credentials = {
+ username: 'username',
+ password: 'password',
+ email: 'ogd@aoaioxxysz.net',
+ alwaysAuth: true
+ }
+
+ conf.setCredentialsByURI(URI, credentials)
+
+ var expected = {
+ scope: '//registry.lvh.me:8661/',
+ token: undefined,
+ username: 'username',
+ password: 'password',
+ email: 'ogd@aoaioxxysz.net',
+ auth: 'dXNlcm5hbWU6cGFzc3dvcmQ=',
+ alwaysAuth: true
+ }
+
+ t.same(conf.getCredentialsByURI(URI), expected, 'got credentials')
+
+ t.end()
+ })
+})
+
+test('set with always-auth disabled', function (t) {
+ npmconf.load(common.builtin, function (er, conf) {
+ t.ifError(er, 'configuration loaded')
+
+ var credentials = {
+ username: 'username',
+ password: 'password',
+ email: 'ogd@aoaioxxysz.net',
+ alwaysAuth: false
+ }
+
+ conf.setCredentialsByURI(URI, credentials)
+
+ var expected = {
+ scope: '//registry.lvh.me:8661/',
+ token: undefined,
+ username: 'username',
+ password: 'password',
+ email: 'ogd@aoaioxxysz.net',
+ auth: 'dXNlcm5hbWU6cGFzc3dvcmQ=',
+ alwaysAuth: false
+ }
+
+ t.same(conf.getCredentialsByURI(URI), expected, 'got credentials')
+
+ t.end()
+ })
+})
+
+test('set with global always-auth enabled', function (t) {
+ npmconf.load(common.builtin, function (er, conf) {
+ t.ifError(er, 'configuration loaded')
+ var original = conf.get('always-auth')
+ conf.set('always-auth', true)
+
+ var credentials = {
+ username: 'username',
+ password: 'password',
+ email: 'ogd@aoaioxxysz.net'
+ }
+
+ conf.setCredentialsByURI(URI, credentials)
+
+ var expected = {
+ scope: '//registry.lvh.me:8661/',
+ token: undefined,
+ username: 'username',
+ password: 'password',
+ email: 'ogd@aoaioxxysz.net',
+ auth: 'dXNlcm5hbWU6cGFzc3dvcmQ=',
+ alwaysAuth: true
+ }
+
+ t.same(conf.getCredentialsByURI(URI), expected, 'got credentials')
+
+ conf.set('always-auth', original)
+ t.end()
+ })
+})
+
+test('set with global always-auth disabled', function (t) {
+ npmconf.load(common.builtin, function (er, conf) {
+ t.ifError(er, 'configuration loaded')
+ var original = conf.get('always-auth')
+ conf.set('always-auth', false)
+
+ var credentials = {
+ username: 'username',
+ password: 'password',
+ email: 'ogd@aoaioxxysz.net'
+ }
+
+ conf.setCredentialsByURI(URI, credentials)
+
+ var expected = {
+ scope: '//registry.lvh.me:8661/',
+ token: undefined,
+ username: 'username',
+ password: 'password',
+ email: 'ogd@aoaioxxysz.net',
+ auth: 'dXNlcm5hbWU6cGFzc3dvcmQ=',
+ alwaysAuth: false
+ }
+
+ t.same(conf.getCredentialsByURI(URI), expected, 'got credentials')
+
+ conf.set('always-auth', original)
+ t.end()
+ })
+})