-
-
Notifications
You must be signed in to change notification settings - Fork 376
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
test: Add testing for set-tokens.ts (#126)
* test: remove main * test: add getPublishRepo() * test: Add setPersonalToken() * test: Add setGithubToken() * test: add showInputs() * test: .nojekyll already exists * test: ignore jest/expect-expect * refactor: squash inputs log * fix: throw error message
- Loading branch information
Showing
9 changed files
with
306 additions
and
106 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,7 @@ | ||
// import * as main from '../src/main'; | ||
import {Inputs} from '../src/interfaces'; | ||
import {getInputs} from '../src/get-inputs'; | ||
import {showInputs, getInputs} from '../src/get-inputs'; | ||
import os from 'os'; | ||
|
||
beforeEach(() => { | ||
jest.resetModules(); | ||
|
@@ -25,6 +26,96 @@ afterEach(() => { | |
delete process.env['INPUT_CNAME']; | ||
}); | ||
|
||
// Assert that process.stdout.write calls called only with the given arguments. | ||
// cf. https://github.com/actions/toolkit/blob/8b0300129f08728419263b016de8630f1d426d5f/packages/core/__tests__/core.test.ts | ||
function assertWriteCalls(calls: string[]): void { | ||
expect(process.stdout.write).toHaveBeenCalledTimes(calls.length); | ||
|
||
for (let i = 0; i < calls.length; i++) { | ||
expect(process.stdout.write).toHaveBeenNthCalledWith(i + 1, calls[i]); | ||
} | ||
} | ||
|
||
function setTestInputs(): void { | ||
process.env['INPUT_PUBLISH_BRANCH'] = 'master'; | ||
process.env['INPUT_PUBLISH_DIR'] = 'out'; | ||
process.env['INPUT_EXTERNAL_REPOSITORY'] = 'user/repo'; | ||
process.env['INPUT_ALLOW_EMPTY_COMMIT'] = 'true'; | ||
process.env['INPUT_KEEP_FILES'] = 'true'; | ||
process.env['INPUT_FORCE_ORPHAN'] = 'true'; | ||
process.env['INPUT_USER_NAME'] = 'username'; | ||
process.env['INPUT_USER_EMAIL'] = '[email protected]'; | ||
process.env['INPUT_COMMIT_MESSAGE'] = 'feat: Add new feature'; | ||
process.env['INPUT_TAG_NAME'] = 'deploy-v1.2.3'; | ||
process.env['INPUT_TAG_MESSAGE'] = 'Deployment v1.2.3'; | ||
process.env['INPUT_DISABLE_NOJEKYLL'] = 'true'; | ||
process.env['INPUT_CNAME'] = 'github.com'; | ||
} | ||
|
||
function getInputsLog(authMethod: string, inps: Inputs): string { | ||
return `\ | ||
[INFO] ${authMethod}: true | ||
[INFO] PublishBranch: ${inps.PublishBranch} | ||
[INFO] PublishDir: ${inps.PublishDir} | ||
[INFO] ExternalRepository: ${inps.ExternalRepository} | ||
[INFO] AllowEmptyCommit: ${inps.AllowEmptyCommit} | ||
[INFO] KeepFiles: ${inps.KeepFiles} | ||
[INFO] ForceOrphan: ${inps.ForceOrphan} | ||
[INFO] UserName: ${inps.UserName} | ||
[INFO] UserEmail: ${inps.UserEmail} | ||
[INFO] CommitMessage: ${inps.CommitMessage} | ||
[INFO] TagName: ${inps.TagName} | ||
[INFO] TagMessage: ${inps.TagMessage} | ||
[INFO] DisableNoJekyll: ${inps.DisableNoJekyll} | ||
[INFO] CNAME: ${inps.CNAME} | ||
`; | ||
} | ||
|
||
describe('showInputs()', () => { | ||
beforeEach(() => { | ||
process.stdout.write = jest.fn(); | ||
}); | ||
|
||
// eslint-disable-next-line jest/expect-expect | ||
test('print all inputs DeployKey', () => { | ||
process.env['INPUT_DEPLOY_KEY'] = 'test_deploy_key'; | ||
setTestInputs(); | ||
|
||
const inps: Inputs = getInputs(); | ||
showInputs(inps); | ||
|
||
const authMethod = 'DeployKey'; | ||
const test = getInputsLog(authMethod, inps); | ||
assertWriteCalls([`${test}${os.EOL}`]); | ||
}); | ||
|
||
// eslint-disable-next-line jest/expect-expect | ||
test('print all inputs GithubToken', () => { | ||
process.env['INPUT_GITHUB_TOKEN'] = 'test_github_token'; | ||
setTestInputs(); | ||
|
||
const inps: Inputs = getInputs(); | ||
showInputs(inps); | ||
|
||
const authMethod = 'GithubToken'; | ||
const test = getInputsLog(authMethod, inps); | ||
assertWriteCalls([`${test}${os.EOL}`]); | ||
}); | ||
|
||
// eslint-disable-next-line jest/expect-expect | ||
test('print all inputs PersonalToken', () => { | ||
process.env['INPUT_PERSONAL_TOKEN'] = 'test_personal_token'; | ||
setTestInputs(); | ||
|
||
const inps: Inputs = getInputs(); | ||
showInputs(inps); | ||
|
||
const authMethod = 'PersonalToken'; | ||
const test = getInputsLog(authMethod, inps); | ||
assertWriteCalls([`${test}${os.EOL}`]); | ||
}); | ||
}); | ||
|
||
describe('getInputs()', () => { | ||
test('get default inputs', () => { | ||
process.env['INPUT_DEPLOY_KEY'] = 'test_deploy_key'; | ||
|
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
import { | ||
getPublishRepo, | ||
setPersonalToken, | ||
setGithubToken | ||
} from '../src/set-tokens'; | ||
|
||
beforeEach(() => { | ||
jest.resetModules(); | ||
}); | ||
|
||
// afterEach(() => { | ||
|
||
// }); | ||
|
||
describe('getPublishRepo()', () => { | ||
test('return repository name', () => { | ||
const test = getPublishRepo('', 'owner', 'repo'); | ||
expect(test).toMatch('owner/repo'); | ||
}); | ||
|
||
test('return external repository name', () => { | ||
const test = getPublishRepo('extOwner/extRepo', 'owner', 'repo'); | ||
expect(test).toMatch('extOwner/extRepo'); | ||
}); | ||
}); | ||
|
||
describe('setGithubToken()', () => { | ||
test('return remote url with GITHUB_TOKEN gh-pages', () => { | ||
const expected = | ||
'https://x-access-token:[email protected]/owner/repo.git'; | ||
const test = setGithubToken( | ||
'GITHUB_TOKEN', | ||
'owner/repo', | ||
'gh-pages', | ||
'', | ||
'refs/heads/master', | ||
'push' | ||
); | ||
expect(test).toMatch(expected); | ||
}); | ||
|
||
test('return remote url with GITHUB_TOKEN master', () => { | ||
const expected = | ||
'https://x-access-token:[email protected]/owner/repo.git'; | ||
const test = setGithubToken( | ||
'GITHUB_TOKEN', | ||
'owner/repo', | ||
'master', | ||
'', | ||
'refs/heads/source', | ||
'push' | ||
); | ||
expect(test).toMatch(expected); | ||
}); | ||
|
||
test('throw error master to master', () => { | ||
expect(() => { | ||
setGithubToken( | ||
'GITHUB_TOKEN', | ||
'owner/repo', | ||
'master', | ||
'', | ||
'refs/heads/master', | ||
'push' | ||
); | ||
}).toThrowError('You deploy from master to master'); | ||
}); | ||
|
||
test('throw error external repository with GITHUB_TOKEN', () => { | ||
expect(() => { | ||
setGithubToken( | ||
'GITHUB_TOKEN', | ||
'owner/repo', | ||
'gh-pages', | ||
'extOwner/extRepo', | ||
'refs/heads/master', | ||
'push' | ||
); | ||
}).toThrowError( | ||
'GITHUB_TOKEN does not support to push to an external repository' | ||
); | ||
}); | ||
|
||
test('return remote url with GITHUB_TOKEN pull_request', () => { | ||
const expected = | ||
'https://x-access-token:[email protected]/owner/repo.git'; | ||
const test = setGithubToken( | ||
'GITHUB_TOKEN', | ||
'owner/repo', | ||
'gh-pages', | ||
'', | ||
'refs/pull/29/merge', | ||
'pull_request' | ||
); | ||
expect(test).toMatch(expected); | ||
}); | ||
}); | ||
|
||
describe('setPersonalToken()', () => { | ||
test('return remote url with personal access token', () => { | ||
const expected = 'https://x-access-token:[email protected]/owner/repo.git'; | ||
const test = setPersonalToken('pat', 'owner/repo'); | ||
expect(test).toMatch(expected); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.