|
1 | 1 | const core = require('@actions/core')
|
2 | 2 | const nock = require('nock')
|
3 | 3 |
|
4 |
| -const { Deployment, MAX_TIMEOUT } = require('../../internal/deployment') |
| 4 | +const { Deployment, MAX_TIMEOUT, ONE_GIGABYTE, SIZE_LIMIT_DESCRIPTION } = require('../../internal/deployment') |
5 | 5 |
|
6 | 6 | const fakeJwt =
|
7 | 7 | 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiNjllMWIxOC1jOGFiLTRhZGQtOGYxOC03MzVlMzVjZGJhZjAiLCJzdWIiOiJyZXBvOnBhcGVyLXNwYS9taW55aTplbnZpcm9ubWVudDpQcm9kdWN0aW9uIiwiYXVkIjoiaHR0cHM6Ly9naXRodWIuY29tL3BhcGVyLXNwYSIsInJlZiI6InJlZnMvaGVhZHMvbWFpbiIsInNoYSI6ImEyODU1MWJmODdiZDk3NTFiMzdiMmM0YjM3M2MxZjU3NjFmYWM2MjYiLCJyZXBvc2l0b3J5IjoicGFwZXItc3BhL21pbnlpIiwicmVwb3NpdG9yeV9vd25lciI6InBhcGVyLXNwYSIsInJ1bl9pZCI6IjE1NDY0NTkzNjQiLCJydW5fbnVtYmVyIjoiMzQiLCJydW5fYXR0ZW1wdCI6IjIiLCJhY3RvciI6IllpTXlzdHkiLCJ3b3JrZmxvdyI6IkNJIiwiaGVhZF9yZWYiOiIiLCJiYXNlX3JlZiI6IiIsImV2ZW50X25hbWUiOiJwdXNoIiwicmVmX3R5cGUiOiJicmFuY2giLCJlbnZpcm9ubWVudCI6IlByb2R1Y3Rpb24iLCJqb2Jfd29ya2Zsb3dfcmVmIjoicGFwZXItc3BhL21pbnlpLy5naXRodWIvd29ya2Zsb3dzL2JsYW5rLnltbEByZWZzL2hlYWRzL21haW4iLCJpc3MiOiJodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwibmJmIjoxNjM4ODI4MDI4LCJleHAiOjE2Mzg4Mjg5MjgsImlhdCI6MTYzODgyODYyOH0.1wyupfxu1HGoTyIqatYg0hIxy2-0bMO-yVlmLSMuu2w'
|
@@ -248,6 +248,45 @@ describe('Deployment', () => {
|
248 | 248 | createDeploymentScope.done()
|
249 | 249 | })
|
250 | 250 |
|
| 251 | + it('warns if the artifact size is bigger than maximum', async () => { |
| 252 | + process.env.GITHUB_SHA = 'valid-build-version' |
| 253 | + const artifactSize = ONE_GIGABYTE + 1 |
| 254 | + |
| 255 | + const artifactExchangeScope = nock(`http://my-url`) |
| 256 | + .get('/_apis/pipelines/workflows/123/artifacts?api-version=6.0-preview') |
| 257 | + .reply(200, { |
| 258 | + value: [ |
| 259 | + { url: 'https://fake-artifact.com', name: 'github-pages', size: `${artifactSize}` }, |
| 260 | + { url: 'https://another-artifact.com', name: 'another-artifact' } |
| 261 | + ] |
| 262 | + }) |
| 263 | + |
| 264 | + const createDeploymentScope = nock('https://api.github.com') |
| 265 | + .post(`/repos/${process.env.GITHUB_REPOSITORY}/pages/deployments`, { |
| 266 | + artifact_url: 'https://fake-artifact.com&%24expand=SignedContent', |
| 267 | + pages_build_version: process.env.GITHUB_SHA, |
| 268 | + oidc_token: fakeJwt |
| 269 | + }) |
| 270 | + .reply(200, { |
| 271 | + status_url: `https://api.github.com/repos/${process.env.GITHUB_REPOSITORY}/pages/deployments/${process.env.GITHUB_SHA}`, |
| 272 | + page_url: 'https://actions.github.io/is-awesome' |
| 273 | + }) |
| 274 | + |
| 275 | + const deployment = new Deployment() |
| 276 | + await deployment.create(fakeJwt) |
| 277 | + |
| 278 | + expect(core.warning).toBeCalledWith( |
| 279 | + `Uploaded artifact size of ${artifactSize} bytes exceeds the allowed size of ${SIZE_LIMIT_DESCRIPTION}. Deployment might fail.` |
| 280 | + ) |
| 281 | + expect(core.setFailed).not.toHaveBeenCalled() |
| 282 | + expect(core.info).toHaveBeenLastCalledWith( |
| 283 | + expect.stringMatching(new RegExp(`^Created deployment for ${process.env.GITHUB_SHA}`)) |
| 284 | + ) |
| 285 | + |
| 286 | + artifactExchangeScope.done() |
| 287 | + createDeploymentScope.done() |
| 288 | + }) |
| 289 | + |
251 | 290 | it('warns when the timeout is greater than the maximum allowed', async () => {
|
252 | 291 | process.env.GITHUB_SHA = 'valid-build-version'
|
253 | 292 |
|
|
0 commit comments