From 7db2ad4c866f8919ca5fc163c3afd117718626b3 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Thu, 11 May 2023 11:11:12 -0500 Subject: [PATCH] Fixed inverted basic and bearer Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- .../README.md | 22 +++++----- .../docs/sample-template.yaml | 44 +++++++++++++++++++ .../src/actions/confluence/helpers.test.ts | 24 +++++----- .../src/actions/confluence/helpers.ts | 12 ++--- 4 files changed, 73 insertions(+), 29 deletions(-) create mode 100644 plugins/scaffolder-backend-module-confluence-to-markdown/docs/sample-template.yaml diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/README.md b/plugins/scaffolder-backend-module-confluence-to-markdown/README.md index 108898d1a0..0618f4cea1 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/README.md +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/README.md @@ -65,7 +65,7 @@ There is some configuration that needs to be setup to use this action, here are ```yaml confluence: baseUrl: 'https://confluence.example.com' - auth: 'basic' + auth: 'bearer' token: '${CONFLUENCE_TOKEN}' email: 'example@company.org' username: 'your-username' @@ -80,16 +80,7 @@ If you are using a self-hosted Confluence instance this does not apply to you. Y #### Auth Methods -The default authorization method is `basic` but `bearer` and `userpass` are also supported. Here's how you would configure each of these: - -For `basic`: - -```yaml -confluence: - baseUrl: 'https://confluence.example.com' - auth: 'basic' - token: '${CONFLUENCE_TOKEN}' -``` +The default authorization method is `bearer` but `basic` and `userpass` are also supported. Here's how you would configure each of these: For `bearer`: @@ -98,6 +89,15 @@ confluence: baseUrl: 'https://confluence.example.com' auth: 'bearer' token: '${CONFLUENCE_TOKEN}' +``` + +For `basic`: + +```yaml +confluence: + baseUrl: 'https://confluence.example.com' + auth: 'basic' + token: '${CONFLUENCE_TOKEN}' email: 'example@company.org' ``` diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/docs/sample-template.yaml b/plugins/scaffolder-backend-module-confluence-to-markdown/docs/sample-template.yaml new file mode 100644 index 0000000000..a78383e86b --- /dev/null +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/docs/sample-template.yaml @@ -0,0 +1,44 @@ +apiVersion: scaffolder.backstage.io/v1beta3 +kind: Template +metadata: + name: confluence-to-markdown + title: Confluence to Markdown + description: This template converts a single confluence document to Markdown for Techdocs and adds it to a given GitHub repo. + tags: + - do-not-use + - poc +spec: + owner: team-d + type: service + parameters: + - title: Confluence and Github Repo Information + properties: + confluenceUrls: + type: array + description: Urls for confluence doc to be converted to markdown. In format /display// or /spaces//pages// for Confluence cloud + items: + type: string + default: confluence url + ui:options: + addable: true + minItems: 1 + maxItems: 5 + repoUrl: + type: string + title: GitHub URL mkdocs.yaml link + description: The GitHub repo URL to your mkdocs.yaml file. Example + steps: + - id: create-docs + name: Get markdown file created and update markdown.yaml file + action: confluence:transform:markdown + input: + confluenceUrls: ${{ parameters.confluenceUrls }} + repoUrl: ${{ parameters.repoUrl }} + - id: publish + name: Publish PR to GitHub + action: publish:github:pull-request + input: + repoUrl: ?repo=${{ steps['create-docs'].output.repo }}&owner=${{ steps['create-docs'].output.owner }} + branchName: confluence-to-markdown + title: Confluence to Markdown + description: PR for converting confluence page to mkdocs \ No newline at end of file diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/helpers.test.ts b/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/helpers.test.ts index 5cfd679a5e..43d3b4b7dc 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/helpers.test.ts +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/helpers.test.ts @@ -53,11 +53,11 @@ describe('createConfluenceVariables', () => { }); describe('getConfluenceConfig', () => { - it('should return validate basic Confluence config', async () => { + it('should return validate bearer Confluence config', async () => { const config = new ConfigReader({ confluence: { baseUrl: 'https://example.atlassian.net', - auth: 'basic', + auth: 'bearer', token: 'fake_token', }, }); @@ -66,7 +66,7 @@ describe('getConfluenceConfig', () => { expect(validated).toEqual({ baseUrl: 'https://example.atlassian.net', - auth: 'basic', + auth: 'bearer', token: 'fake_token', email: undefined, username: undefined, @@ -74,11 +74,11 @@ describe('getConfluenceConfig', () => { }); }); - it('should return validate bearer Confluence config', async () => { + it('should return validate basic Confluence config', async () => { const config = new ConfigReader({ confluence: { baseUrl: 'https://example.atlassian.net', - auth: 'bearer', + auth: 'basic', token: 'fake_token', email: 'example@example.atlassian.net', }, @@ -88,7 +88,7 @@ describe('getConfluenceConfig', () => { expect(validated).toEqual({ baseUrl: 'https://example.atlassian.net', - auth: 'bearer', + auth: 'basic', token: 'fake_token', email: 'example@example.atlassian.net', username: undefined, @@ -120,22 +120,22 @@ describe('getConfluenceConfig', () => { }); describe('getAuthorizationHeaderValue', () => { - it('should return basic auth header value', async () => { + it('should return bearer auth header value', async () => { const config = { baseUrl: 'https://example.atlassian.net', - auth: 'basic', + auth: 'bearer', token: 'fake_token', }; const authHeaderValue = getAuthorizationHeaderValue(config); - expect(authHeaderValue).toEqual('Basic fake_token'); + expect(authHeaderValue).toEqual('Bearer fake_token'); }); - it('should return bearer auth header value', async () => { + it('should return basic auth header value', async () => { const config = { baseUrl: 'https://example.atlassian.net', - auth: 'bearer', + auth: 'basic', token: 'fake_token', email: 'example@example.atlassian.net', }; @@ -144,7 +144,7 @@ describe('getAuthorizationHeaderValue', () => { // Note: this is fake and just the encoded result expect(authHeaderValue).toEqual( - 'Bearer ZXhhbXBsZUBleGFtcGxlLmF0bGFzc2lhbi5uZXQ6ZmFrZV90b2tlbg==', + 'Basic ZXhhbXBsZUBleGFtcGxlLmF0bGFzc2lhbi5uZXQ6ZmFrZV90b2tlbg==', ); }); diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/helpers.ts b/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/helpers.ts index c85689e372..6d290a6e8c 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/helpers.ts +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/helpers.ts @@ -55,7 +55,7 @@ export type ConfluenceConfig = { export const getConfluenceConfig = (config: Config) => { const confluenceConfig: ConfluenceConfig = { baseUrl: config.getString('confluence.baseUrl'), - auth: config.getOptionalString('confluence.auth') ?? 'basic', + auth: config.getOptionalString('confluence.auth') ?? 'bearer', token: config.getOptionalString('confluence.token'), email: config.getOptionalString('confluence.email'), username: config.getOptionalString('confluence.username'), @@ -71,7 +71,7 @@ export const getConfluenceConfig = (config: Config) => { ); } - if (confluenceConfig.auth === 'bearer' && !confluenceConfig.email) { + if (confluenceConfig.auth === 'basic' && !confluenceConfig.email) { throw new Error( `No email provided for the configured '${confluenceConfig.auth}' auth method`, ); @@ -92,12 +92,12 @@ export const getConfluenceConfig = (config: Config) => { export const getAuthorizationHeaderValue = (config: ConfluenceConfig) => { let authHeaderValue: string = ''; switch (config.auth) { - case 'basic': - authHeaderValue = `Basic ${config.token}`; + case 'bearer': + authHeaderValue = `Bearer ${config.token}`; break; - case 'bearer': { + case 'basic': { const buffer = Buffer.from(`${config.email}:${config.token}`, 'utf8'); - authHeaderValue = `Bearer ${buffer.toString('base64')}`; + authHeaderValue = `Basic ${buffer.toString('base64')}`; break; } case 'userpass': {