-
Notifications
You must be signed in to change notification settings - Fork 3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added tests for `verifyPodfile` workflow See: #13604
- Loading branch information
1 parent
a01c9c3
commit bec56b0
Showing
4 changed files
with
261 additions
and
3 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
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,45 @@ | ||
const utils = require('../utils/utils'); | ||
|
||
const assertVerifyJobExecuted = (workflowResult, didExecute = true) => { | ||
const steps = [ | ||
utils.getStepAssertion( | ||
'Checkout', | ||
true, | ||
null, | ||
'VERIFY', | ||
'Checkout', | ||
[{key: 'fetch-depth', value: '0'}], | ||
[], | ||
), | ||
utils.getStepAssertion( | ||
'Setup Node', | ||
true, | ||
null, | ||
'VERIFY', | ||
'Setup Node', | ||
[], | ||
[], | ||
), | ||
utils.getStepAssertion( | ||
'Verify podfile', | ||
true, | ||
null, | ||
'VERIFY', | ||
'Verify podfile', | ||
[], | ||
[], | ||
), | ||
]; | ||
|
||
for (const expectedStep of steps) { | ||
if (didExecute) { | ||
expect(workflowResult).toEqual(expect.arrayContaining([expectedStep])); | ||
} else { | ||
expect(workflowResult).not.toEqual(expect.arrayContaining([expectedStep])); | ||
} | ||
} | ||
}; | ||
|
||
module.exports = { | ||
assertVerifyJobExecuted, | ||
}; |
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,33 @@ | ||
const utils = require('../utils/utils'); | ||
|
||
// verify | ||
const VERIFYPODFILE__VERIFY__CHECKOUT__STEP_MOCK = utils.getMockStep( | ||
'Checkout', | ||
'Checkout', | ||
'VERIFY', | ||
['fetch-depth'], | ||
[], | ||
); | ||
const VERIFYPODFILE__VERIFY__SETUP_NODE__STEP_MOCK = utils.getMockStep( | ||
'Setup Node', | ||
'Setup Node', | ||
'VERIFY', | ||
[], | ||
[], | ||
); | ||
const VERIFYPODFILE__VERIFY__VERIFY_PODFILE__STEP_MOCK = utils.getMockStep( | ||
'Verify podfile', | ||
'Verify podfile', | ||
'VERIFY', | ||
[], | ||
[], | ||
); | ||
const VERIFYPODFILE__VERIFY__STEP_MOCKS = [ | ||
VERIFYPODFILE__VERIFY__CHECKOUT__STEP_MOCK, | ||
VERIFYPODFILE__VERIFY__SETUP_NODE__STEP_MOCK, | ||
VERIFYPODFILE__VERIFY__VERIFY_PODFILE__STEP_MOCK, | ||
]; | ||
|
||
module.exports = { | ||
VERIFYPODFILE__VERIFY__STEP_MOCKS, | ||
}; |
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,177 @@ | ||
const path = require('path'); | ||
const kieMockGithub = require('@kie/mock-github'); | ||
const utils = require('./utils/utils'); | ||
const assertions = require('./assertions/verifyPodfileAssertions'); | ||
const mocks = require('./mocks/verifyPodfileMocks'); | ||
const eAct = require('./utils/ExtendedAct'); | ||
|
||
jest.setTimeout(60 * 1000); | ||
let mockGithub; | ||
const FILES_TO_COPY_INTO_TEST_REPO = [ | ||
{ | ||
src: path.resolve(__dirname, '..', '.github', 'actions'), | ||
dest: '.github/actions', | ||
}, | ||
{ | ||
src: path.resolve(__dirname, '..', '.github', 'libs'), | ||
dest: '.github/libs', | ||
}, | ||
{ | ||
src: path.resolve(__dirname, '..', '.github', 'scripts'), | ||
dest: '.github/scripts', | ||
}, | ||
{ | ||
src: path.resolve(__dirname, '..', '.github', 'workflows', 'verifyPodfile.yml'), | ||
dest: '.github/workflows/verifyPodfile.yml', | ||
}, | ||
]; | ||
|
||
describe('test workflow verifyPodfile', () => { | ||
const githubToken = 'dummy_github_token'; | ||
const actor = 'Dummy Actor'; | ||
const osbotifyActor = 'OSBotify'; | ||
beforeEach(async () => { | ||
// create a local repository and copy required files | ||
mockGithub = new kieMockGithub.MockGithub({ | ||
repo: { | ||
testVerifyPodfileWorkflowRepo: { | ||
files: FILES_TO_COPY_INTO_TEST_REPO, | ||
}, | ||
}, | ||
}); | ||
|
||
await mockGithub.setup(); | ||
}); | ||
|
||
afterEach(async () => { | ||
await mockGithub.teardown(); | ||
}); | ||
describe('pull request opened', () => { | ||
const event = 'pull_request'; | ||
const eventOptions = { | ||
action: 'opened', | ||
}; | ||
it('executes workflow', async () => { | ||
const repoPath = mockGithub.repo.getPath('testVerifyPodfileWorkflowRepo') || ''; | ||
const workflowPath = path.join(repoPath, '.github', 'workflows', 'verifyPodfile.yml'); | ||
let act = new eAct.ExtendedAct(repoPath, workflowPath); | ||
act = utils.setUpActParams( | ||
act, | ||
event, | ||
eventOptions, | ||
{}, | ||
githubToken, | ||
); | ||
act = utils.setJobRunners( | ||
act, | ||
{verify: 'ubuntu-latest'}, | ||
workflowPath, | ||
); | ||
const testMockSteps = { | ||
verify: mocks.VERIFYPODFILE__VERIFY__STEP_MOCKS, | ||
}; | ||
const result = await act | ||
.runEvent(event, { | ||
workflowFile: path.join(repoPath, '.github', 'workflows'), | ||
mockSteps: testMockSteps, | ||
actor, | ||
}); | ||
|
||
assertions.assertVerifyJobExecuted(result); | ||
}); | ||
describe('actor is OSBotify', () => { | ||
it('does not execute workflow', async () => { | ||
const repoPath = mockGithub.repo.getPath('testVerifyPodfileWorkflowRepo') || ''; | ||
const workflowPath = path.join(repoPath, '.github', 'workflows', 'verifyPodfile.yml'); | ||
let act = new eAct.ExtendedAct(repoPath, workflowPath); | ||
act = utils.setUpActParams( | ||
act, | ||
event, | ||
eventOptions, | ||
{}, | ||
githubToken, | ||
); | ||
act = utils.setJobRunners( | ||
act, | ||
{verify: 'ubuntu-latest'}, | ||
workflowPath, | ||
); | ||
const testMockSteps = { | ||
verify: mocks.VERIFYPODFILE__VERIFY__STEP_MOCKS, | ||
}; | ||
const result = await act | ||
.runEvent(event, { | ||
workflowFile: path.join(repoPath, '.github', 'workflows'), | ||
mockSteps: testMockSteps, | ||
actor: osbotifyActor, | ||
}); | ||
|
||
assertions.assertVerifyJobExecuted(result, false); | ||
}); | ||
}); | ||
}); | ||
describe('pull request synchronized', () => { | ||
const event = 'pull_request'; | ||
const eventOptions = { | ||
action: 'synchronize', | ||
}; | ||
it('executes workflow', async () => { | ||
const repoPath = mockGithub.repo.getPath('testVerifyPodfileWorkflowRepo') || ''; | ||
const workflowPath = path.join(repoPath, '.github', 'workflows', 'verifyPodfile.yml'); | ||
let act = new eAct.ExtendedAct(repoPath, workflowPath); | ||
act = utils.setUpActParams( | ||
act, | ||
event, | ||
eventOptions, | ||
{}, | ||
githubToken, | ||
); | ||
act = utils.setJobRunners( | ||
act, | ||
{verify: 'ubuntu-latest'}, | ||
workflowPath, | ||
); | ||
const testMockSteps = { | ||
verify: mocks.VERIFYPODFILE__VERIFY__STEP_MOCKS, | ||
}; | ||
const result = await act | ||
.runEvent(event, { | ||
workflowFile: path.join(repoPath, '.github', 'workflows'), | ||
mockSteps: testMockSteps, | ||
actor, | ||
}); | ||
|
||
assertions.assertVerifyJobExecuted(result); | ||
}); | ||
describe('actor is OSBotify', () => { | ||
it('does not execute workflow', async () => { | ||
const repoPath = mockGithub.repo.getPath('testVerifyPodfileWorkflowRepo') || ''; | ||
const workflowPath = path.join(repoPath, '.github', 'workflows', 'verifyPodfile.yml'); | ||
let act = new eAct.ExtendedAct(repoPath, workflowPath); | ||
act = utils.setUpActParams( | ||
act, | ||
event, | ||
eventOptions, | ||
{}, | ||
githubToken, | ||
); | ||
act = utils.setJobRunners( | ||
act, | ||
{verify: 'ubuntu-latest'}, | ||
workflowPath, | ||
); | ||
const testMockSteps = { | ||
verify: mocks.VERIFYPODFILE__VERIFY__STEP_MOCKS, | ||
}; | ||
const result = await act | ||
.runEvent(event, { | ||
workflowFile: path.join(repoPath, '.github', 'workflows'), | ||
mockSteps: testMockSteps, | ||
actor: osbotifyActor, | ||
}); | ||
|
||
assertions.assertVerifyJobExecuted(result, false); | ||
}); | ||
}); | ||
}); | ||
}); |