Skip to content

Commit

Permalink
Add tests
Browse files Browse the repository at this point in the history
Added tests for `verifySignedCommits` workflow

See: #13604
  • Loading branch information
radoslawkrzemien committed Jun 30, 2023
1 parent 4428ec7 commit a01c9c3
Show file tree
Hide file tree
Showing 4 changed files with 152 additions and 1 deletion.
3 changes: 2 additions & 1 deletion .github/workflows/verifySignedCommits.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ jobs:
verifySignedCommits:
runs-on: ubuntu-latest
steps:
- uses: Expensify/App/.github/actions/javascript/verifySignedCommits@main
- name: Verify signed commits
uses: Expensify/App/.github/actions/javascript/verifySignedCommits@main
with:
GITHUB_TOKEN: ${{ github.token }}
27 changes: 27 additions & 0 deletions workflow_tests/assertions/verifySignedCommitsAssertions.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
const utils = require('../utils/utils');

const assertVerifySignedCommitsJobExecuted = (workflowResult, didExecute = true) => {
const steps = [
utils.getStepAssertion(
'Verify signed commits',
true,
null,
'VERIFYSIGNEDCOMMITS',
'Verify signed commits',
[{key: 'GITHUB_TOKEN', value: '***'}],
[],
),
];

for (const expectedStep of steps) {
if (didExecute) {
expect(workflowResult).toEqual(expect.arrayContaining([expectedStep]));
} else {
expect(workflowResult).not.toEqual(expect.arrayContaining([expectedStep]));
}
}
};

module.exports = {
assertVerifySignedCommitsJobExecuted,
};
17 changes: 17 additions & 0 deletions workflow_tests/mocks/verifySignedCommitsMocks.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
const utils = require('../utils/utils');

// verifysignedcommits
const VERIFYSIGNEDCOMMITS__VERIFYSIGNEDCOMMITS__VERIFY_SIGNED_COMMITS__STEP_MOCK = utils.getMockStep(
'Verify signed commits',
'Verify signed commits',
'VERIFYSIGNEDCOMMITS',
['GITHUB_TOKEN'],
[],
);
const VERIFYSIGNEDCOMMITS__VERIFYSIGNEDCOMMITS__STEP_MOCKS = [
VERIFYSIGNEDCOMMITS__VERIFYSIGNEDCOMMITS__VERIFY_SIGNED_COMMITS__STEP_MOCK,
];

module.exports = {
VERIFYSIGNEDCOMMITS__VERIFYSIGNEDCOMMITS__STEP_MOCKS,
};
106 changes: 106 additions & 0 deletions workflow_tests/verifySignedCommits.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
const path = require('path');
const kieMockGithub = require('@kie/mock-github');
const utils = require('./utils/utils');
const assertions = require('./assertions/verifySignedCommitsAssertions');
const mocks = require('./mocks/verifySignedCommitsMocks');
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', 'verifySignedCommits.yml'),
dest: '.github/workflows/verifySignedCommits.yml',
},
];

describe('test workflow verifySignedCommits', () => {
const githubToken = 'dummy_github_token';
const actor = 'Dummy Actor';
beforeEach(async () => {
// create a local repository and copy required files
mockGithub = new kieMockGithub.MockGithub({
repo: {
testVerifySignedCommitsWorkflowRepo: {
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('test stub', async () => {
const repoPath = mockGithub.repo.getPath('testVerifySignedCommitsWorkflowRepo') || '';
const workflowPath = path.join(repoPath, '.github', 'workflows', 'verifySignedCommits.yml');
let act = new eAct.ExtendedAct(repoPath, workflowPath);
act = utils.setUpActParams(
act,
event,
eventOptions,
{},
githubToken,
);
const testMockSteps = {
verifySignedCommits: mocks.VERIFYSIGNEDCOMMITS__VERIFYSIGNEDCOMMITS__STEP_MOCKS,
};
const result = await act
.runEvent(event, {
workflowFile: path.join(repoPath, '.github', 'workflows'),
mockSteps: testMockSteps,
actor,
});

assertions.assertVerifySignedCommitsJobExecuted(result);
});
});
describe('pull request synchronized', () => {
const event = 'pull_request';
const eventOptions = {
action: 'synchronize',
};
it('test stub', async () => {
const repoPath = mockGithub.repo.getPath('testVerifySignedCommitsWorkflowRepo') || '';
const workflowPath = path.join(repoPath, '.github', 'workflows', 'verifySignedCommits.yml');
let act = new eAct.ExtendedAct(repoPath, workflowPath);
act = utils.setUpActParams(
act,
event,
eventOptions,
{},
githubToken,
);
const testMockSteps = {
verifySignedCommits: mocks.VERIFYSIGNEDCOMMITS__VERIFYSIGNEDCOMMITS__STEP_MOCKS,
};
const result = await act
.runEvent(event, {
workflowFile: path.join(repoPath, '.github', 'workflows'),
mockSteps: testMockSteps,
actor,
});

assertions.assertVerifySignedCommitsJobExecuted(result);
});
});
});

0 comments on commit a01c9c3

Please sign in to comment.