mirror of
https://github.com/docker/login-action
synced 2024-11-22 13:11:40 +00:00
Merge pull request #18 from crazy-max/username-required
Username required
This commit is contained in:
commit
39ef12fb7a
5 changed files with 58 additions and 43 deletions
|
@ -2,13 +2,21 @@ import osm = require('os');
|
||||||
|
|
||||||
import {getInputs} from '../src/context';
|
import {getInputs} from '../src/context';
|
||||||
|
|
||||||
|
test('without username getInputs throws errors', async () => {
|
||||||
|
expect(() => {
|
||||||
|
getInputs();
|
||||||
|
}).toThrowError('Input required and not supplied: username');
|
||||||
|
});
|
||||||
|
|
||||||
test('without password getInputs throws errors', async () => {
|
test('without password getInputs throws errors', async () => {
|
||||||
|
process.env['INPUT_USERNAME'] = 'dbowie';
|
||||||
expect(() => {
|
expect(() => {
|
||||||
getInputs();
|
getInputs();
|
||||||
}).toThrowError('Input required and not supplied: password');
|
}).toThrowError('Input required and not supplied: password');
|
||||||
});
|
});
|
||||||
|
|
||||||
test('with password getInputs does not error', async () => {
|
test('with password and username getInputs does not error', async () => {
|
||||||
|
process.env['INPUT_USERNAME'] = 'dbowie';
|
||||||
process.env['INPUT_PASSWORD'] = 'groundcontrol';
|
process.env['INPUT_PASSWORD'] = 'groundcontrol';
|
||||||
expect(() => {
|
expect(() => {
|
||||||
getInputs();
|
getInputs();
|
||||||
|
|
|
@ -17,7 +17,7 @@ test('errors when not run on linux platform', async () => {
|
||||||
expect(coreSpy).toHaveBeenCalledWith('Only supported on linux platform');
|
expect(coreSpy).toHaveBeenCalledWith('Only supported on linux platform');
|
||||||
});
|
});
|
||||||
|
|
||||||
test('errors without password', async () => {
|
test('errors without username', async () => {
|
||||||
const platSpy = jest.spyOn(osm, 'platform');
|
const platSpy = jest.spyOn(osm, 'platform');
|
||||||
platSpy.mockImplementation(() => 'linux');
|
platSpy.mockImplementation(() => 'linux');
|
||||||
|
|
||||||
|
@ -25,26 +25,43 @@ test('errors without password', async () => {
|
||||||
|
|
||||||
await run();
|
await run();
|
||||||
|
|
||||||
|
expect(coreSpy).toHaveBeenCalledWith('Input required and not supplied: username');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('errors without password', async () => {
|
||||||
|
const platSpy = jest.spyOn(osm, 'platform');
|
||||||
|
platSpy.mockImplementation(() => 'linux');
|
||||||
|
|
||||||
|
const coreSpy: jest.SpyInstance = jest.spyOn(core, 'setFailed');
|
||||||
|
|
||||||
|
const username: string = 'dbowie';
|
||||||
|
process.env[`INPUT_USERNAME`] = username;
|
||||||
|
|
||||||
|
await run();
|
||||||
|
|
||||||
expect(coreSpy).toHaveBeenCalledWith('Input required and not supplied: password');
|
expect(coreSpy).toHaveBeenCalledWith('Input required and not supplied: password');
|
||||||
});
|
});
|
||||||
|
|
||||||
test('successful with only password', async () => {
|
test('successful with username and password', async () => {
|
||||||
const platSpy = jest.spyOn(osm, 'platform');
|
const platSpy = jest.spyOn(osm, 'platform');
|
||||||
platSpy.mockImplementation(() => 'linux');
|
platSpy.mockImplementation(() => 'linux');
|
||||||
|
|
||||||
const setRegistrySpy: jest.SpyInstance = jest.spyOn(stateHelper, 'setRegistry');
|
|
||||||
const setLogoutSpy: jest.SpyInstance = jest.spyOn(stateHelper, 'setLogout');
|
|
||||||
const dockerSpy: jest.SpyInstance = jest.spyOn(docker, 'login');
|
|
||||||
dockerSpy.mockImplementation(() => {});
|
|
||||||
|
|
||||||
const password: string = 'groundcontrol';
|
|
||||||
process.env[`INPUT_PASSWORD`] = password;
|
|
||||||
|
|
||||||
await run();
|
const setRegistrySpy: jest.SpyInstance = jest.spyOn(stateHelper, 'setRegistry');
|
||||||
|
const setLogoutSpy: jest.SpyInstance = jest.spyOn(stateHelper, 'setLogout');
|
||||||
|
const dockerSpy: jest.SpyInstance = jest.spyOn(docker, 'login');
|
||||||
|
dockerSpy.mockImplementation(() => {});
|
||||||
|
|
||||||
expect(setRegistrySpy).toHaveBeenCalledWith('');
|
const username: string = 'dbowie';
|
||||||
expect(setLogoutSpy).toHaveBeenCalledWith('');
|
process.env[`INPUT_USERNAME`] = username;
|
||||||
expect(dockerSpy).toHaveBeenCalledWith('', '', password);
|
|
||||||
|
const password: string = 'groundcontrol';
|
||||||
|
process.env[`INPUT_PASSWORD`] = password;
|
||||||
|
|
||||||
|
await run();
|
||||||
|
|
||||||
|
expect(setRegistrySpy).toHaveBeenCalledWith('');
|
||||||
|
expect(setLogoutSpy).toHaveBeenCalledWith('');
|
||||||
|
expect(dockerSpy).toHaveBeenCalledWith('', username, password);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('calls docker login', async () => {
|
test('calls docker login', async () => {
|
||||||
|
@ -66,7 +83,7 @@ test('calls docker login', async () => {
|
||||||
process.env[`INPUT_REGISTRY`] = registry;
|
process.env[`INPUT_REGISTRY`] = registry;
|
||||||
|
|
||||||
const logout: string = 'true';
|
const logout: string = 'true';
|
||||||
process.env['INPUT_LOGOUT'] = logout
|
process.env['INPUT_LOGOUT'] = logout;
|
||||||
|
|
||||||
await run();
|
await run();
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ inputs:
|
||||||
required: false
|
required: false
|
||||||
username:
|
username:
|
||||||
description: 'Username used to log against the Docker registry'
|
description: 'Username used to log against the Docker registry'
|
||||||
required: false
|
required: true
|
||||||
password:
|
password:
|
||||||
description: 'Password or personal access token used to log against the Docker registry'
|
description: 'Password or personal access token used to log against the Docker registry'
|
||||||
required: true
|
required: true
|
||||||
|
|
36
dist/index.js
generated
vendored
36
dist/index.js
generated
vendored
|
@ -496,6 +496,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.run = void 0;
|
||||||
const os = __importStar(__webpack_require__(87));
|
const os = __importStar(__webpack_require__(87));
|
||||||
const core = __importStar(__webpack_require__(186));
|
const core = __importStar(__webpack_require__(186));
|
||||||
const context_1 = __webpack_require__(842);
|
const context_1 = __webpack_require__(842);
|
||||||
|
@ -505,19 +506,19 @@ function run() {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
try {
|
try {
|
||||||
if (os.platform() !== 'linux') {
|
if (os.platform() !== 'linux') {
|
||||||
core.setFailed('Only supported on linux platform');
|
throw new Error('Only supported on linux platform');
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
let inputs = yield context_1.getInputs();
|
const { registry, username, password, logout } = context_1.getInputs();
|
||||||
stateHelper.setRegistry(inputs.registry);
|
stateHelper.setRegistry(registry);
|
||||||
stateHelper.setLogout(inputs.logout);
|
stateHelper.setLogout(logout);
|
||||||
yield docker.login(inputs.registry, inputs.username, inputs.password);
|
yield docker.login(registry, username, password);
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
core.setFailed(error.message);
|
core.setFailed(error.message);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
exports.run = run;
|
||||||
function logout() {
|
function logout() {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
if (!stateHelper.logout) {
|
if (!stateHelper.logout) {
|
||||||
|
@ -3640,27 +3641,16 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
||||||
__setModuleDefault(result, mod);
|
__setModuleDefault(result, mod);
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
||||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
||||||
return new (P || (P = Promise))(function (resolve, reject) {
|
|
||||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
||||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
||||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.getInputs = void 0;
|
exports.getInputs = void 0;
|
||||||
const core = __importStar(__webpack_require__(186));
|
const core = __importStar(__webpack_require__(186));
|
||||||
function getInputs() {
|
function getInputs() {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return {
|
||||||
return {
|
registry: core.getInput('registry'),
|
||||||
registry: core.getInput('registry'),
|
username: core.getInput('username', { required: true }),
|
||||||
username: core.getInput('username'),
|
password: core.getInput('password', { required: true }),
|
||||||
password: core.getInput('password', { required: true }),
|
logout: core.getInput('logout')
|
||||||
logout: core.getInput('logout')
|
};
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
exports.getInputs = getInputs;
|
exports.getInputs = getInputs;
|
||||||
//# sourceMappingURL=context.js.map
|
//# sourceMappingURL=context.js.map
|
||||||
|
|
|
@ -10,7 +10,7 @@ export interface Inputs {
|
||||||
export function getInputs(): Inputs {
|
export function getInputs(): Inputs {
|
||||||
return {
|
return {
|
||||||
registry: core.getInput('registry'),
|
registry: core.getInput('registry'),
|
||||||
username: core.getInput('username'),
|
username: core.getInput('username', {required: true}),
|
||||||
password: core.getInput('password', {required: true}),
|
password: core.getInput('password', {required: true}),
|
||||||
logout: core.getInput('logout')
|
logout: core.getInput('logout')
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue