diff options
Diffstat (limited to 'deps/node/deps/npm/test/tap/config-credentials.js')
-rw-r--r-- | deps/node/deps/npm/test/tap/config-credentials.js | 350 |
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() + }) +}) |