navy
Version:
Quick and powerful development environments using Docker and Docker Compose
62 lines (60 loc) • 3.08 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _chai = require("chai");
var _sinon = _interopRequireDefault(require("sinon"));
var execAsyncModule = _interopRequireWildcard(require("../../../util/exec-async"));
var _containerImage = require("../../../domain/container-image");
var _getCredentials = _interopRequireDefault(require("../get-credentials"));
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
/* eslint-env mocha */
describe('get-credentials', function () {
let sandbox;
beforeEach(function () {
sandbox = _sinon.default.createSandbox();
});
afterEach(function () {
sandbox.restore();
});
it('should call docker-credential-desktop with the default auth URL when registry is the default registry', async function () {
const execStub = sandbox.stub(execAsyncModule, 'execAsync').resolves(JSON.stringify({
Username: 'u',
Secret: 's'
}));
const result = await (0, _getCredentials.default)(_containerImage.DEFAULT_REGISTRY);
(0, _chai.expect)(result).to.eql({
username: 'u',
password: 's'
});
const args = execStub.firstCall.args;
(0, _chai.expect)(args[0]).to.equal('echo');
(0, _chai.expect)(args[1]).to.include(_containerImage.DEFAULT_REGISTRY_AUTH);
(0, _chai.expect)(args[1]).to.include('docker-credential-desktop');
(0, _chai.expect)(args[1]).to.include('get');
});
it('should pass the registry hostname directly when not the default registry', async function () {
const execStub = sandbox.stub(execAsyncModule, 'execAsync').resolves(JSON.stringify({
Username: 'alice',
Secret: 'pw'
}));
const result = await (0, _getCredentials.default)('myregistry.local:5000');
(0, _chai.expect)(result).to.eql({
username: 'alice',
password: 'pw'
});
(0, _chai.expect)(execStub.firstCall.args[1]).to.include('myregistry.local:5000');
});
it('should return empty credentials when execAsync rejects', async function () {
sandbox.stub(execAsyncModule, 'execAsync').rejects(new Error('not installed'));
(0, _chai.expect)(await (0, _getCredentials.default)('any')).to.eql({
username: '',
password: ''
});
});
it('should return empty credentials when stdout is not valid JSON', async function () {
sandbox.stub(execAsyncModule, 'execAsync').resolves('not-json');
(0, _chai.expect)(await (0, _getCredentials.default)('any')).to.eql({
username: '',
password: ''
});
});
});