mirror of
				https://github.com/docker/login-action.git
				synced 2025-10-31 10:10:09 +08:00 
			
		
		
		
	Merge pull request #18 from crazy-max/username-required
Username required
This commit is contained in:
		
						commit
						39ef12fb7a
					
				| @ -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 setRegistrySpy: jest.SpyInstance = jest.spyOn(stateHelper, 'setRegistry'); | ||||||
|     const setLogoutSpy: jest.SpyInstance = jest.spyOn(stateHelper, 'setLogout'); |   const setLogoutSpy: jest.SpyInstance = jest.spyOn(stateHelper, 'setLogout'); | ||||||
|     const dockerSpy: jest.SpyInstance = jest.spyOn(docker, 'login'); |   const dockerSpy: jest.SpyInstance = jest.spyOn(docker, 'login'); | ||||||
|     dockerSpy.mockImplementation(() => {}); |   dockerSpy.mockImplementation(() => {}); | ||||||
| 
 | 
 | ||||||
|     const password: string = 'groundcontrol'; |   const username: string = 'dbowie'; | ||||||
|     process.env[`INPUT_PASSWORD`] = password; |   process.env[`INPUT_USERNAME`] = username; | ||||||
| 
 | 
 | ||||||
|     await run(); |   const password: string = 'groundcontrol'; | ||||||
|  |   process.env[`INPUT_PASSWORD`] = password; | ||||||
| 
 | 
 | ||||||
|     expect(setRegistrySpy).toHaveBeenCalledWith(''); |   await run(); | ||||||
|     expect(setLogoutSpy).toHaveBeenCalledWith(''); | 
 | ||||||
|     expect(dockerSpy).toHaveBeenCalledWith('', '', password); |   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 New Issue
	
	Block a user
	 Tõnis Tiigi
						Tõnis Tiigi