mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
350 lines
8.3 KiB
350 lines
8.3 KiB
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()
|
|
})
|
|
})
|
|
|