diff --git a/src/index.test.js b/src/index.test.js index 3027560..d55ddb2 100644 --- a/src/index.test.js +++ b/src/index.test.js @@ -22,6 +22,11 @@ describe('with all environment variables set', () => { process.env.GITHUB_ACTION_PATH = 'something' }) + afterEach(() => { + // Remove mock for `core.getInput('preview')` + delete process.env.INPUT_PREVIEW + }) + it('Executes cleanly', done => { const ip = path.join(__dirname, './index.js') cp.exec(`node ${ip}`, { env: process.env }, (err, stdout) => { @@ -61,6 +66,8 @@ describe('create', () => { return 'github-pages' case 'token': return process.env.GITHUB_TOKEN + default: + return process.env[`INPUT_${param.toUpperCase()}`] || '' } }) @@ -120,6 +127,52 @@ describe('create', () => { scope.done() }) + it.only('can successfully create a preview deployment', async () => { + process.env.GITHUB_SHA = 'valid-build-version' + const fakeJwt = + 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiNjllMWIxOC1jOGFiLTRhZGQtOGYxOC03MzVlMzVjZGJhZjAiLCJzdWIiOiJyZXBvOnBhcGVyLXNwYS9taW55aTplbnZpcm9ubWVudDpQcm9kdWN0aW9uIiwiYXVkIjoiaHR0cHM6Ly9naXRodWIuY29tL3BhcGVyLXNwYSIsInJlZiI6InJlZnMvaGVhZHMvbWFpbiIsInNoYSI6ImEyODU1MWJmODdiZDk3NTFiMzdiMmM0YjM3M2MxZjU3NjFmYWM2MjYiLCJyZXBvc2l0b3J5IjoicGFwZXItc3BhL21pbnlpIiwicmVwb3NpdG9yeV9vd25lciI6InBhcGVyLXNwYSIsInJ1bl9pZCI6IjE1NDY0NTkzNjQiLCJydW5fbnVtYmVyIjoiMzQiLCJydW5fYXR0ZW1wdCI6IjIiLCJhY3RvciI6IllpTXlzdHkiLCJ3b3JrZmxvdyI6IkNJIiwiaGVhZF9yZWYiOiIiLCJiYXNlX3JlZiI6IiIsImV2ZW50X25hbWUiOiJwdXNoIiwicmVmX3R5cGUiOiJicmFuY2giLCJlbnZpcm9ubWVudCI6IlByb2R1Y3Rpb24iLCJqb2Jfd29ya2Zsb3dfcmVmIjoicGFwZXItc3BhL21pbnlpLy5naXRodWIvd29ya2Zsb3dzL2JsYW5rLnltbEByZWZzL2hlYWRzL21haW4iLCJpc3MiOiJodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwibmJmIjoxNjM4ODI4MDI4LCJleHAiOjE2Mzg4Mjg5MjgsImlhdCI6MTYzODgyODYyOH0.1wyupfxu1HGoTyIqatYg0hIxy2-0bMO-yVlmLSMuu2w' + const scope = nock(`http://my-url`) + .get('/_apis/pipelines/workflows/123/artifacts?api-version=6.0-preview') + .reply(200, { + value: [ + { url: 'https://another-artifact.com', name: 'another-artifact' }, + { url: 'https://fake-artifact.com', name: 'github-pages' } + ] + }) + + core.getIDToken = jest.fn().mockResolvedValue(fakeJwt) + axios.post = jest.fn().mockResolvedValue('test') + + // Return `"true"` for `core.getInput("preview")` + process.env.INPUT_PREVIEW = 'true' + + // Create the deployment + const deployment = new Deployment() + await deployment.create(fakeJwt) + + expect(axios.post).toBeCalledWith( + 'https://api.github.com/repos/paper-spa/is-awesome/pages/deployment', + { + artifact_url: 'https://fake-artifact.com&%24expand=SignedContent', + pages_build_version: 'valid-build-version', + oidc_token: fakeJwt, + preview: true + }, + { + headers: { + Accept: 'application/vnd.github.v3+json', + Authorization: `Bearer gha-token`, + 'Content-type': 'application/json' + } + } + ) + + expect(core.setFailed).not.toHaveBeenCalled() + expect(core.info).toHaveBeenCalledWith('Created deployment for valid-build-version') + + scope.done() + }) + it('Reports errors with failed deployments', async () => { process.env.GITHUB_SHA = 'invalid-build-version' const scope = nock(`http://my-url`)