From 9ad36d6016cf4148f7a28751d18d10ede815cf31 Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Sat, 24 Jan 2026 08:44:28 +0100 Subject: [PATCH] feat: support for GITHUB_CLIENT_ID --- plugins/nextjs-plugin/src/index.ts | 3 ++ plugins/nextjs-plugin/src/tests/index.spec.ts | 6 ++- plugins/plugin-tools/src/config.ts | 9 ++-- plugins/plugin-tools/src/tests/config.spec.ts | 44 ++++++++++++++++++- plugins/plugin-tools/src/types.ts | 8 +++- plugins/vite-plugin/src/index.ts | 3 ++ plugins/vite-plugin/src/tests/index.spec.ts | 6 ++- 7 files changed, 68 insertions(+), 11 deletions(-) diff --git a/plugins/nextjs-plugin/src/index.ts b/plugins/nextjs-plugin/src/index.ts index f880ed9..5da887f 100644 --- a/plugins/nextjs-plugin/src/index.ts +++ b/plugins/nextjs-plugin/src/index.ts @@ -90,6 +90,9 @@ export const withJuno = async (params?: { }), ...(authClientIds?.google !== undefined && { [`${prefix}GOOGLE_CLIENT_ID`]: authClientIds.google + }), + ...(authClientIds?.github !== undefined && { + [`${prefix}GITHUB_CLIENT_ID`]: authClientIds.github }) }, ...REQUIRED_NEXT_CONFIG diff --git a/plugins/nextjs-plugin/src/tests/index.spec.ts b/plugins/nextjs-plugin/src/tests/index.spec.ts index 587cd65..6b7af97 100644 --- a/plugins/nextjs-plugin/src/tests/index.spec.ts +++ b/plugins/nextjs-plugin/src/tests/index.spec.ts @@ -15,7 +15,8 @@ describe('withJuno', () => { satelliteId: 'sat-id', orbiterId: 'orb-id', authClientIds: { - google: 'google-client-id-123' + google: 'google-client-id-123', + github: 'github-client-id-123' }, icpIds: { internetIdentityId: 'ii-id', @@ -55,7 +56,8 @@ describe('withJuno', () => { NEXT_PUBLIC_SNS_WASM_ID: 'sns-wasm-id', NEXT_PUBLIC_NNS_DAPP_ID: 'nns-dapp-id', NEXT_PUBLIC_CONTAINER: 'http://localhost:1234', - NEXT_PUBLIC_GOOGLE_CLIENT_ID: 'google-client-id-123' + NEXT_PUBLIC_GOOGLE_CLIENT_ID: 'google-client-id-123', + NEXT_PUBLIC_GITHUB_CLIENT_ID: 'github-client-id-123' } }); }); diff --git a/plugins/plugin-tools/src/config.ts b/plugins/plugin-tools/src/config.ts index 19d2e2f..b50178f 100644 --- a/plugins/plugin-tools/src/config.ts +++ b/plugins/plugin-tools/src/config.ts @@ -176,15 +176,14 @@ export const authClientIds = async ({mode}: ConfigArgs): Promise { expect(ids).toBeUndefined(); }); - it('returns undefined if authentication.google is undefined', async () => { + it('returns undefined if authentication empty object', async () => { vi.spyOn(configLoader, 'junoConfigExist').mockResolvedValue(true); vi.spyOn(configLoader, 'readJunoConfig').mockResolvedValue({ satellite: {authentication: {}} @@ -469,6 +469,17 @@ describe('config', () => { expect(ids).toBeUndefined(); }); + it('returns undefined if authentication when google and github are undefined', async () => { + vi.spyOn(configLoader, 'junoConfigExist').mockResolvedValue(true); + vi.spyOn(configLoader, 'readJunoConfig').mockResolvedValue({ + satellite: {authentication: {github: undefined, google: undefined}} + } as unknown as JunoConfig); + + const ids = await authClientIds({params: {}, mode: MODE_DEVELOPMENT}); + + expect(ids).toBeUndefined(); + }); + it('returns google clientId when set', async () => { vi.spyOn(configLoader, 'junoConfigExist').mockResolvedValue(true); vi.spyOn(configLoader, 'readJunoConfig').mockResolvedValue({ @@ -483,5 +494,36 @@ describe('config', () => { expect(ids).toEqual({google: 'google-client-id-123'}); }); + + it('returns github clientId when set', async () => { + vi.spyOn(configLoader, 'junoConfigExist').mockResolvedValue(true); + vi.spyOn(configLoader, 'readJunoConfig').mockResolvedValue({ + satellite: { + authentication: { + github: {clientId: 'github-client-id-123'} + } + } + } as unknown as JunoConfig); + + const ids = await authClientIds({params: {}, mode: 'production'}); + + expect(ids).toEqual({github: 'github-client-id-123'}); + }); + + it('returns google and github clientIds when set', async () => { + vi.spyOn(configLoader, 'junoConfigExist').mockResolvedValue(true); + vi.spyOn(configLoader, 'readJunoConfig').mockResolvedValue({ + satellite: { + authentication: { + google: {clientId: 'google-client-id-123'}, + github: {clientId: 'github-client-id-123'} + } + } + } as unknown as JunoConfig); + + const ids = await authClientIds({params: {}, mode: 'production'}); + + expect(ids).toEqual({google: 'google-client-id-123', github: 'github-client-id-123'}); + }); }); }); diff --git a/plugins/plugin-tools/src/types.ts b/plugins/plugin-tools/src/types.ts index c57553d..62d6c7b 100644 --- a/plugins/plugin-tools/src/types.ts +++ b/plugins/plugin-tools/src/types.ts @@ -125,5 +125,11 @@ export interface AuthClientIds { * Google client ID. * @type {string} */ - google: string; + google?: string; + + /** + * GitHub client ID. + * @type {string} + */ + github?: string; } diff --git a/plugins/vite-plugin/src/index.ts b/plugins/vite-plugin/src/index.ts index 47c35a1..23693c7 100644 --- a/plugins/vite-plugin/src/index.ts +++ b/plugins/vite-plugin/src/index.ts @@ -65,6 +65,9 @@ export default function Juno(params?: JunoParams): Plugin { }), ...(authClientIds?.google !== undefined && { [`${prefix}GOOGLE_CLIENT_ID`]: JSON.stringify(authClientIds.google) + }), + ...(authClientIds?.github !== undefined && { + [`${prefix}GITHUB_CLIENT_ID`]: JSON.stringify(authClientIds.github) }) } }; diff --git a/plugins/vite-plugin/src/tests/index.spec.ts b/plugins/vite-plugin/src/tests/index.spec.ts index 0ca2dd8..2c547ae 100644 --- a/plugins/vite-plugin/src/tests/index.spec.ts +++ b/plugins/vite-plugin/src/tests/index.spec.ts @@ -13,7 +13,8 @@ describe('vite-plugin-juno', () => { satelliteId: 'sat-id', orbiterId: 'orb-id', authClientIds: { - google: 'google-client-id-123' + google: 'google-client-id-123', + github: 'github-client-id-123' }, icpIds: { internetIdentityId: 'ii-id', @@ -58,7 +59,8 @@ describe('vite-plugin-juno', () => { 'import.meta.env.VITE_SNS_WASM_ID': JSON.stringify('sns-wasm-id'), 'import.meta.env.VITE_NNS_DAPP_ID': JSON.stringify('nns-dapp-id'), 'import.meta.env.VITE_CONTAINER': JSON.stringify('http://localhost:1234'), - 'import.meta.env.VITE_GOOGLE_CLIENT_ID': JSON.stringify('google-client-id-123') + 'import.meta.env.VITE_GOOGLE_CLIENT_ID': JSON.stringify('google-client-id-123'), + 'import.meta.env.VITE_GITHUB_CLIENT_ID': JSON.stringify('github-client-id-123') } }); });