From acd92f4fa3692d3d93f065f8ff2e0695e7489fd0 Mon Sep 17 00:00:00 2001 From: aiell0 Date: Sun, 29 Sep 2019 21:14:07 -0400 Subject: [PATCH 1/2] Test when codebuild isn't triggered by webhooks. --- lib/services/codebuild.js | 8 +++++--- test/services/codebuild.test.js | 36 ++++++++++++++++++++++++++++----- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/lib/services/codebuild.js b/lib/services/codebuild.js index 88726ae0..8126527a 100644 --- a/lib/services/codebuild.js +++ b/lib/services/codebuild.js @@ -1,3 +1,5 @@ +var git = require('../git.js') + module.exports = { detect: function() { return !!process.env.CODEBUILD_CI @@ -21,13 +23,13 @@ module.exports = { '' ) } - throw new Error('Cannot detect branch name.') + return git.branch() } function detectPRNumber() { - if (process.env.CODEBUILD_SOURCE_VERSION) { + if (process.env.CODEBUILD_WEBHOOK_HEAD_REF) { return process.env.CODEBUILD_SOURCE_VERSION.replace(/^pr\//, '') } - throw new Error('Cannot detect PR number.') + return undefined } function detectRepoSlug() { if (process.env.CODEBUILD_SOURCE_REPO_URL) { diff --git a/test/services/codebuild.test.js b/test/services/codebuild.test.js index 28c354d9..5bf510c0 100644 --- a/test/services/codebuild.test.js +++ b/test/services/codebuild.test.js @@ -1,4 +1,8 @@ var codebuild = require('../../lib/services/codebuild') +var git = require('../../lib/git.js') + +// Set all module functions to jest.fn +jest.mock('../../lib/git.js') describe('AWS CodeBuild Provider', function() { it('can detect codebuild', function() { @@ -29,17 +33,39 @@ describe('AWS CodeBuild Provider', function() { it('throws if branch name cannot be detected', function() { delete process.env.CODEBUILD_WEBHOOK_HEAD_REF + git.branch.mockImplementation(function() { + throw new Error() + }) expect(function() { codebuild.configuration() }).toThrow() }) - it('throws if pr number cannot be detected', function() { + it('Test build triggered via AWS SDK', function() { + delete process.env.CODEBUILD_WEBHOOK_HEAD_REF + git.branch.mockReturnValue('master') + expect(codebuild.configuration()).toEqual({ + service: 'codebuild', + build: 'my-project:e016b9d9-f2c8-4749-8373-7ca673b6d969', + job: 'my-project:e016b9d9-f2c8-4749-8373-7ca673b6d969', + commit: '39ec2418eca4c539d765574a1c68f3bd77e8c549', + branch: 'master', + pr: undefined, + slug: 'my-org/my-project', + }) + }) + + it('Test build triggered via Github Webhook', function() { process.env.CODEBUILD_WEBHOOK_HEAD_REF = 'refs/heads/master' - delete process.env.CODEBUILD_SOURCE_VERSION - expect(function() { - codebuild.configuration() - }).toThrow() + expect(codebuild.configuration()).toEqual({ + service: 'codebuild', + build: 'my-project:e016b9d9-f2c8-4749-8373-7ca673b6d969', + job: 'my-project:e016b9d9-f2c8-4749-8373-7ca673b6d969', + commit: '39ec2418eca4c539d765574a1c68f3bd77e8c549', + branch: 'master', + pr: '1', + slug: 'my-org/my-project', + }) }) it('throws if slug cannot be detected', function() { From 8acbe96d0b5712053701174882ea9bdff064c35c Mon Sep 17 00:00:00 2001 From: aiell0 Date: Mon, 30 Sep 2019 17:32:26 -0400 Subject: [PATCH 2/2] Retest