Added examples for action github:pages and improved test cases
Signed-off-by: parmar-abhinav <abhinav.parmar@infosys.com>
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder-backend-module-github': patch
|
||||
---
|
||||
|
||||
Added examples for action github:pages and improved its test cases
|
||||
+360
-4
@@ -52,9 +52,14 @@ describe('github:pages', () => {
|
||||
let githubCredentialsProvider: GithubCredentialsProvider;
|
||||
let action: TemplateAction<any>;
|
||||
|
||||
const input = yaml.parse(examples[0].example).steps[0].input;
|
||||
const mockContext = createMockActionContext({
|
||||
input,
|
||||
input: {
|
||||
repoUrl: 'github.com?repo=repo&owner=owner',
|
||||
buildType: 'workflow',
|
||||
sourceBranch: 'main',
|
||||
sourcePath: '/',
|
||||
token: 'gph_YourGitHubToken',
|
||||
},
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
@@ -68,8 +73,20 @@ describe('github:pages', () => {
|
||||
|
||||
afterEach(jest.resetAllMocks);
|
||||
|
||||
it('should work with example input', async () => {
|
||||
await action.handler(mockContext);
|
||||
it(`Should ${examples[0].description}`, async () => {
|
||||
let input;
|
||||
try {
|
||||
input = yaml.parse(examples[0].example).steps[0].input;
|
||||
} catch (error) {
|
||||
console.error('Failed to parse YAML:', error);
|
||||
}
|
||||
await action.handler({
|
||||
...mockContext,
|
||||
input: {
|
||||
...mockContext.input,
|
||||
...input,
|
||||
},
|
||||
});
|
||||
|
||||
expect(mockOctokit.request).toHaveBeenCalledWith(
|
||||
'POST /repos/{owner}/{repo}/pages',
|
||||
@@ -87,4 +104,343 @@ describe('github:pages', () => {
|
||||
},
|
||||
);
|
||||
});
|
||||
it(`Should ${examples[1].description}`, async () => {
|
||||
let input;
|
||||
try {
|
||||
input = yaml.parse(examples[1].example).steps[0].input;
|
||||
} catch (error) {
|
||||
console.error('Failed to parse YAML:', error);
|
||||
}
|
||||
await action.handler({
|
||||
...mockContext,
|
||||
input: {
|
||||
...mockContext.input,
|
||||
...input,
|
||||
},
|
||||
});
|
||||
|
||||
expect(mockOctokit.request).toHaveBeenCalledWith(
|
||||
'POST /repos/{owner}/{repo}/pages',
|
||||
{
|
||||
owner: 'customOwner',
|
||||
repo: 'customPathRepo',
|
||||
build_type: 'workflow',
|
||||
source: {
|
||||
branch: 'main',
|
||||
path: '/docs',
|
||||
},
|
||||
headers: {
|
||||
'X-GitHub-Api-Version': '2022-11-28',
|
||||
},
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
it(`Should ${examples[2].description}`, async () => {
|
||||
let input;
|
||||
try {
|
||||
input = yaml.parse(examples[2].example).steps[0].input;
|
||||
} catch (error) {
|
||||
console.error('Failed to parse YAML:', error);
|
||||
}
|
||||
await action.handler({
|
||||
...mockContext,
|
||||
input: {
|
||||
...mockContext.input,
|
||||
...input,
|
||||
},
|
||||
});
|
||||
expect(mockOctokit.request).toHaveBeenCalledWith(
|
||||
'POST /repos/{owner}/{repo}/pages',
|
||||
{
|
||||
owner: 'legacyOwner',
|
||||
repo: 'legacyRepo',
|
||||
build_type: 'legacy',
|
||||
source: {
|
||||
branch: 'main',
|
||||
path: '/',
|
||||
},
|
||||
headers: {
|
||||
'X-GitHub-Api-Version': '2022-11-28',
|
||||
},
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
it(`Should ${examples[3].description}`, async () => {
|
||||
let input;
|
||||
try {
|
||||
input = yaml.parse(examples[3].example).steps[0].input;
|
||||
} catch (error) {
|
||||
console.error('Failed to parse YAML:', error);
|
||||
}
|
||||
await action.handler({
|
||||
...mockContext,
|
||||
input: {
|
||||
...mockContext.input,
|
||||
...input,
|
||||
},
|
||||
});
|
||||
expect(mockOctokit.request).toHaveBeenCalledWith(
|
||||
'POST /repos/{owner}/{repo}/pages',
|
||||
{
|
||||
owner: 'branchOwner',
|
||||
repo: 'customBranchRepo',
|
||||
build_type: 'workflow',
|
||||
source: {
|
||||
branch: 'develop',
|
||||
path: '/',
|
||||
},
|
||||
headers: {
|
||||
'X-GitHub-Api-Version': '2022-11-28',
|
||||
},
|
||||
},
|
||||
);
|
||||
});
|
||||
it(`Should ${examples[4].description}`, async () => {
|
||||
let input;
|
||||
try {
|
||||
input = yaml.parse(examples[4].example).steps[0].input;
|
||||
} catch (error) {
|
||||
console.error('Failed to parse YAML:', error);
|
||||
}
|
||||
await action.handler({
|
||||
...mockContext,
|
||||
input: {
|
||||
...mockContext.input,
|
||||
...input,
|
||||
},
|
||||
});
|
||||
expect(mockOctokit.request).toHaveBeenCalledWith(
|
||||
'POST /repos/{owner}/{repo}/pages',
|
||||
{
|
||||
owner: 'customOwner',
|
||||
repo: 'fullCustomRepo',
|
||||
build_type: 'workflow',
|
||||
source: {
|
||||
branch: 'main',
|
||||
path: '/docs',
|
||||
},
|
||||
headers: {
|
||||
'X-GitHub-Api-Version': '2022-11-28',
|
||||
},
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
it(`Should ${examples[5].description}`, async () => {
|
||||
let input;
|
||||
try {
|
||||
input = yaml.parse(examples[5].example).steps[0].input;
|
||||
} catch (error) {
|
||||
console.error('Failed to parse YAML:', error);
|
||||
}
|
||||
await action.handler({
|
||||
...mockContext,
|
||||
input: {
|
||||
...mockContext.input,
|
||||
...input,
|
||||
},
|
||||
});
|
||||
expect(mockOctokit.request).toHaveBeenCalledWith(
|
||||
'POST /repos/{owner}/{repo}/pages',
|
||||
{
|
||||
owner: 'minimalOwner',
|
||||
repo: 'minimalRepo',
|
||||
build_type: 'workflow',
|
||||
source: {
|
||||
branch: 'main',
|
||||
path: '/',
|
||||
},
|
||||
headers: {
|
||||
'X-GitHub-Api-Version': '2022-11-28',
|
||||
},
|
||||
},
|
||||
);
|
||||
});
|
||||
it(`Should ${examples[6].description}`, async () => {
|
||||
let input;
|
||||
try {
|
||||
input = yaml.parse(examples[6].example).steps[0].input;
|
||||
} catch (error) {
|
||||
console.error('Failed to parse YAML:', error);
|
||||
}
|
||||
await action.handler({
|
||||
...mockContext,
|
||||
input: {
|
||||
...mockContext.input,
|
||||
...input,
|
||||
},
|
||||
});
|
||||
expect(mockOctokit.request).toHaveBeenCalledWith(
|
||||
'POST /repos/{owner}/{repo}/pages',
|
||||
{
|
||||
owner: 'customOwner',
|
||||
repo: 'customBuildPathRepo',
|
||||
build_type: 'legacy',
|
||||
source: {
|
||||
branch: 'main',
|
||||
path: '/custom-path',
|
||||
},
|
||||
headers: {
|
||||
'X-GitHub-Api-Version': '2022-11-28',
|
||||
},
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
it(`Should ${examples[7].description}`, async () => {
|
||||
let input;
|
||||
try {
|
||||
input = yaml.parse(examples[7].example).steps[0].input;
|
||||
} catch (error) {
|
||||
console.error('Failed to parse YAML:', error);
|
||||
}
|
||||
await action.handler({
|
||||
...mockContext,
|
||||
input: {
|
||||
...mockContext.input,
|
||||
...input,
|
||||
},
|
||||
});
|
||||
expect(mockOctokit.request).toHaveBeenCalledWith(
|
||||
'POST /repos/{owner}/{repo}/pages',
|
||||
{
|
||||
owner: 'branchPathOwner',
|
||||
repo: 'customBranchPathRepo',
|
||||
build_type: 'workflow',
|
||||
source: {
|
||||
branch: 'feature-branch',
|
||||
path: '/project-docs',
|
||||
},
|
||||
headers: {
|
||||
'X-GitHub-Api-Version': '2022-11-28',
|
||||
},
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
it(`Should ${examples[8].description}`, async () => {
|
||||
let input;
|
||||
try {
|
||||
input = yaml.parse(examples[8].example).steps[0].input;
|
||||
} catch (error) {
|
||||
console.error('Failed to parse YAML:', error);
|
||||
}
|
||||
await action.handler({
|
||||
...mockContext,
|
||||
input: {
|
||||
...mockContext.input,
|
||||
...input,
|
||||
},
|
||||
});
|
||||
expect(mockOctokit.request).toHaveBeenCalledWith(
|
||||
'POST /repos/{owner}/{repo}/pages',
|
||||
{
|
||||
owner: 'customOwnerName',
|
||||
repo: 'customRepoName',
|
||||
build_type: 'workflow',
|
||||
source: {
|
||||
branch: 'main',
|
||||
path: '/',
|
||||
},
|
||||
headers: {
|
||||
'X-GitHub-Api-Version': '2022-11-28',
|
||||
},
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
it(`Should ${examples[9].description}`, async () => {
|
||||
let input;
|
||||
try {
|
||||
input = yaml.parse(examples[9].example).steps[0].input;
|
||||
} catch (error) {
|
||||
console.error('Failed to parse YAML:', error);
|
||||
}
|
||||
await action.handler({
|
||||
...mockContext,
|
||||
input: {
|
||||
...mockContext.input,
|
||||
...input,
|
||||
},
|
||||
});
|
||||
expect(mockOctokit.request).toHaveBeenCalledWith(
|
||||
'POST /repos/{owner}/{repo}/pages',
|
||||
{
|
||||
owner: 'tokenOwner',
|
||||
repo: 'customTokenRepo',
|
||||
build_type: 'workflow',
|
||||
source: {
|
||||
branch: 'main',
|
||||
path: '/site',
|
||||
},
|
||||
headers: {
|
||||
'X-GitHub-Api-Version': '2022-11-28',
|
||||
},
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
it(`Should ${examples[10].description}`, async () => {
|
||||
let input;
|
||||
try {
|
||||
input = yaml.parse(examples[10].example).steps[0].input;
|
||||
} catch (error) {
|
||||
console.error('Failed to parse YAML:', error);
|
||||
}
|
||||
await action.handler({
|
||||
...mockContext,
|
||||
input: {
|
||||
...mockContext.input,
|
||||
...input,
|
||||
},
|
||||
});
|
||||
expect(mockOctokit.request).toHaveBeenCalledWith(
|
||||
'POST /repos/{owner}/{repo}/pages',
|
||||
{
|
||||
owner: 'tokenOwner',
|
||||
repo: 'specificTokenRepo',
|
||||
build_type: 'workflow',
|
||||
source: {
|
||||
branch: 'main',
|
||||
path: '/',
|
||||
},
|
||||
headers: {
|
||||
'X-GitHub-Api-Version': '2022-11-28',
|
||||
},
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
it(`Should ${examples[11].description}`, async () => {
|
||||
let input;
|
||||
try {
|
||||
input = yaml.parse(examples[11].example).steps[0].input;
|
||||
} catch (error) {
|
||||
console.error('Failed to parse YAML:', error);
|
||||
}
|
||||
await action.handler({
|
||||
...mockContext,
|
||||
input: {
|
||||
...mockContext.input,
|
||||
...input,
|
||||
},
|
||||
});
|
||||
expect(mockOctokit.request).toHaveBeenCalledWith(
|
||||
'POST /repos/{owner}/{repo}/pages',
|
||||
{
|
||||
owner: 'docsOwner',
|
||||
repo: 'docSiteRepo',
|
||||
build_type: 'workflow',
|
||||
source: {
|
||||
branch: 'docs-branch',
|
||||
path: '/docs-site',
|
||||
},
|
||||
headers: {
|
||||
'X-GitHub-Api-Version': '2022-11-28',
|
||||
},
|
||||
},
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -37,4 +37,209 @@ export const examples: TemplateExample[] = [
|
||||
],
|
||||
}),
|
||||
},
|
||||
{
|
||||
description:
|
||||
'Enables GitHub Pages for a repository with a custom source path.',
|
||||
example: yaml.stringify({
|
||||
steps: [
|
||||
{
|
||||
action: 'github:pages',
|
||||
id: 'github-pages-custom-path',
|
||||
name: 'Enable GitHub Pages with Custom Source Path',
|
||||
input: {
|
||||
repoUrl: 'github.com?repo=customPathRepo&owner=customOwner',
|
||||
sourcePath: '/docs',
|
||||
token: 'gph_YourGitHubToken',
|
||||
},
|
||||
},
|
||||
],
|
||||
}),
|
||||
},
|
||||
{
|
||||
description:
|
||||
'Enables GitHub Pages for a repository using legacy build type.',
|
||||
example: yaml.stringify({
|
||||
steps: [
|
||||
{
|
||||
action: 'github:pages',
|
||||
id: 'github-pages-legacy',
|
||||
name: 'Enable GitHub Pages with Legacy Build Type',
|
||||
input: {
|
||||
repoUrl: 'github.com?repo=legacyRepo&owner=legacyOwner',
|
||||
buildType: 'legacy',
|
||||
token: 'gph_YourGitHubToken',
|
||||
},
|
||||
},
|
||||
],
|
||||
}),
|
||||
},
|
||||
{
|
||||
description:
|
||||
'Enables GitHub Pages for a repository with a custom source branch.',
|
||||
example: yaml.stringify({
|
||||
steps: [
|
||||
{
|
||||
action: 'github:pages',
|
||||
id: 'github-pages-custom-branch',
|
||||
name: 'Enable GitHub Pages with Custom Source Branch',
|
||||
input: {
|
||||
repoUrl: 'github.com?repo=customBranchRepo&owner=branchOwner',
|
||||
sourceBranch: 'develop',
|
||||
token: 'gph_YourGitHubToken',
|
||||
},
|
||||
},
|
||||
],
|
||||
}),
|
||||
},
|
||||
|
||||
{
|
||||
description:
|
||||
'Enables GitHub Pages for a repository with full customization.',
|
||||
example: yaml.stringify({
|
||||
steps: [
|
||||
{
|
||||
action: 'github:pages',
|
||||
id: 'github-pages-full-custom',
|
||||
name: 'Enable GitHub Pages with Full Customization',
|
||||
input: {
|
||||
repoUrl: 'github.com?repo=fullCustomRepo&owner=customOwner',
|
||||
buildType: 'workflow',
|
||||
sourceBranch: 'main',
|
||||
sourcePath: '/docs',
|
||||
token: 'gph_YourGitHubToken',
|
||||
},
|
||||
},
|
||||
],
|
||||
}),
|
||||
},
|
||||
{
|
||||
description:
|
||||
'Enables GitHub Pages for a repository with minimal configuration.',
|
||||
example: yaml.stringify({
|
||||
steps: [
|
||||
{
|
||||
action: 'github:pages',
|
||||
id: 'github-pages-minimal',
|
||||
name: 'Enable GitHub Pages with Minimal Configuration',
|
||||
input: {
|
||||
repoUrl: 'github.com?repo=minimalRepo&owner=minimalOwner',
|
||||
token: 'gph_YourGitHubToken',
|
||||
},
|
||||
},
|
||||
],
|
||||
}),
|
||||
},
|
||||
{
|
||||
description:
|
||||
'Enables GitHub Pages for a repository with custom build type and source path.',
|
||||
example: yaml.stringify({
|
||||
steps: [
|
||||
{
|
||||
action: 'github:pages',
|
||||
id: 'github-pages-custom-build-path',
|
||||
name: 'Enable GitHub Pages with Custom Build Type and Source Path',
|
||||
input: {
|
||||
repoUrl: 'github.com?repo=customBuildPathRepo&owner=customOwner',
|
||||
buildType: 'legacy',
|
||||
sourcePath: '/custom-path',
|
||||
token: 'gph_YourGitHubToken',
|
||||
},
|
||||
},
|
||||
],
|
||||
}),
|
||||
},
|
||||
{
|
||||
description:
|
||||
'Enables GitHub Pages for a repository with custom source branch and path.',
|
||||
example: yaml.stringify({
|
||||
steps: [
|
||||
{
|
||||
action: 'github:pages',
|
||||
id: 'github-pages-custom-branch-path',
|
||||
name: 'Enable GitHub Pages with Custom Source Branch and Path',
|
||||
input: {
|
||||
repoUrl:
|
||||
'github.com?repo=customBranchPathRepo&owner=branchPathOwner',
|
||||
sourceBranch: 'feature-branch',
|
||||
sourcePath: '/project-docs',
|
||||
token: 'gph_YourGitHubToken',
|
||||
},
|
||||
},
|
||||
],
|
||||
}),
|
||||
},
|
||||
{
|
||||
description:
|
||||
'Enables GitHub Pages for a repository with a custom owner and repository name.',
|
||||
example: yaml.stringify({
|
||||
steps: [
|
||||
{
|
||||
action: 'github:pages',
|
||||
id: 'github-pages-custom-owner-repo',
|
||||
name: 'Enable GitHub Pages with Custom Owner and Repository Name',
|
||||
input: {
|
||||
repoUrl: 'github.com?repo=customRepoName&owner=customOwnerName',
|
||||
token: 'gph_YourGitHubToken',
|
||||
},
|
||||
},
|
||||
],
|
||||
}),
|
||||
},
|
||||
{
|
||||
description:
|
||||
'Enables GitHub Pages for a repository with full customization and a different token.',
|
||||
example: yaml.stringify({
|
||||
steps: [
|
||||
{
|
||||
action: 'github:pages',
|
||||
id: 'github-pages-full-custom-diff-token',
|
||||
name: 'Enable GitHub Pages with Full Customization and Different Token',
|
||||
input: {
|
||||
repoUrl: 'github.com?repo=customTokenRepo&owner=tokenOwner',
|
||||
buildType: 'workflow',
|
||||
sourceBranch: 'main',
|
||||
sourcePath: '/site',
|
||||
token: 'gph_DifferentGitHubToken',
|
||||
},
|
||||
},
|
||||
],
|
||||
}),
|
||||
},
|
||||
{
|
||||
description:
|
||||
'Enables GitHub Pages for a repository with a specific token for authorization.',
|
||||
example: yaml.stringify({
|
||||
steps: [
|
||||
{
|
||||
action: 'github:pages',
|
||||
id: 'github-pages-specific-token',
|
||||
name: 'Enable GitHub Pages with Specific Token',
|
||||
input: {
|
||||
repoUrl: 'github.com?repo=specificTokenRepo&owner=tokenOwner',
|
||||
token: 'gph_SpecificGitHubToken',
|
||||
},
|
||||
},
|
||||
],
|
||||
}),
|
||||
},
|
||||
{
|
||||
description:
|
||||
'Enables GitHub Pages for a documentation site with custom configuration.',
|
||||
example: yaml.stringify({
|
||||
steps: [
|
||||
{
|
||||
action: 'github:pages',
|
||||
id: 'github-pages-doc-site',
|
||||
name: 'Enable GitHub Pages for Documentation Site',
|
||||
input: {
|
||||
repoUrl: 'github.com?repo=docSiteRepo&owner=docsOwner',
|
||||
buildType: 'workflow',
|
||||
sourceBranch: 'docs-branch',
|
||||
sourcePath: '/docs-site',
|
||||
token: 'gph_DocsGitHubToken',
|
||||
},
|
||||
},
|
||||
],
|
||||
}),
|
||||
},
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user