Skip to content

Commit 89beda7

Browse files
committed
feat: Add authentication option to markdown-confluence-sync. Run E2E tests to check the whole feature
1 parent e8143e1 commit 89beda7

File tree

4 files changed

+33
-3
lines changed

4 files changed

+33
-3
lines changed

.github/workflows/test-e2e.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ on:
77
push:
88
branches:
99
- main
10+
- feat/56/custom-auth-methods
1011

1112
permissions:
1213
contents: read

components/markdown-confluence-sync/markdown-confluence-sync.config.cjs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,11 @@ module.exports = {
3131
],
3232
confluence: {
3333
url: process.env.CONFLUENCE_URL,
34-
personalAccessToken: process.env.CONFLUENCE_PAT,
34+
authentication: {
35+
oauth2: {
36+
accessToken: process.env.CONFLUENCE_PAT,
37+
},
38+
},
3539
spaceKey: process.env.CONFLUENCE_SPACE_KEY,
3640
rootPageId: process.env.CONFLUENCE_ROOT_PAGE_ID,
3741
rootPageName: "Cross",

components/markdown-confluence-sync/src/lib/confluence/ConfluenceSync.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ import type {
3232
UrlOptionDefinition,
3333
NoticeTemplateOptionDefinition,
3434
NoticeTemplateOption,
35+
AuthenticationOptionDefinition,
36+
AuthenticationOption,
3537
} from "./ConfluenceSync.types.js";
3638
import { ConfluencePageTransformer } from "./transformer/ConfluencePageTransformer.js";
3739
import type { ConfluencePageTransformerInterface } from "./transformer/ConfluencePageTransformer.types.js";
@@ -78,6 +80,11 @@ const dryRunOption: DryRunOptionDefinition = {
7880
default: false,
7981
};
8082

83+
const authenticationOption: AuthenticationOptionDefinition = {
84+
name: "authentication",
85+
type: "object",
86+
};
87+
8188
export const ConfluenceSync: ConfluenceSyncConstructor = class ConfluenceSync
8289
implements ConfluenceSyncInterface
8390
{
@@ -90,6 +97,7 @@ export const ConfluenceSync: ConfluenceSyncConstructor = class ConfluenceSync
9097
private _rootPageNameOption: RootPageNameOption;
9198
private _noticeMessageOption: NoticeMessageOption;
9299
private _noticeTemplateOption: NoticeTemplateOption;
100+
private _authenticationOption: AuthenticationOption;
93101
private _dryRunOption: DryRunOption;
94102
private _initialized = false;
95103
private _logger: LoggerInterface;
@@ -113,6 +121,9 @@ export const ConfluenceSync: ConfluenceSyncConstructor = class ConfluenceSync
113121
this._noticeTemplateOption = config.addOption(
114122
noticeTemplateOption,
115123
) as NoticeTemplateOption;
124+
this._authenticationOption = config.addOption(
125+
authenticationOption,
126+
) as AuthenticationOption;
116127
this._dryRunOption = config.addOption(dryRunOption) as DryRunOption;
117128
this._modeOption = mode;
118129
this._logger = logger;
@@ -182,6 +193,7 @@ export const ConfluenceSync: ConfluenceSyncConstructor = class ConfluenceSync
182193
this._confluenceSyncPages = new ConfluenceSyncPages({
183194
url: this._urlOption.value,
184195
personalAccessToken: this._personalAccessTokenOption.value,
196+
authentication: this._authenticationOption.value,
185197
spaceId: this._spaceKeyOption.value,
186198
rootPageId: this._rootPageIdOption.value,
187199
logLevel: this._logger.level,

components/markdown-confluence-sync/src/lib/confluence/ConfluenceSync.types.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ import type {
77
OptionDefinition,
88
} from "@mocks-server/config";
99
import type { LoggerInterface } from "@mocks-server/logger";
10-
import type { ConfluenceInputPage } from "@telefonica/confluence-sync";
10+
import type {
11+
ConfluenceInputPage,
12+
ConfluenceClientAuthenticationConfig,
13+
} from "@telefonica/confluence-sync";
1114

1215
import type { ModeOption } from "../MarkdownConfluenceSync.types";
1316

@@ -27,8 +30,13 @@ declare global {
2730
confluence?: {
2831
/** Confluence URL */
2932
url?: UrlOptionValue;
30-
/** Confluence personal access token */
33+
/**
34+
* Confluence personal access token
35+
* @deprecated Use authentication.oauth2.accessToken instead
36+
**/
3137
personalAccessToken?: PersonalAccessTokenOptionValue;
38+
/** Confluence authentication */
39+
authentication?: ConfluenceClientAuthenticationConfig;
3240
/** Confluence space key */
3341
spaceKey?: SpaceKeyOptionValue;
3442
/** Confluence root page id */
@@ -63,6 +71,11 @@ export type DryRunOptionDefinition = OptionDefinition<
6371
{ hasDefault: true }
6472
>;
6573

74+
export type AuthenticationOptionDefinition =
75+
OptionDefinition<ConfluenceClientAuthenticationConfig>;
76+
77+
export type AuthenticationOption =
78+
OptionInterfaceOfType<ConfluenceClientAuthenticationConfig>;
6679
export type UrlOption = OptionInterfaceOfType<UrlOptionValue>;
6780
export type PersonalAccessTokenOption =
6881
OptionInterfaceOfType<PersonalAccessTokenOptionValue>;

0 commit comments

Comments
 (0)