diff --git a/packages/cli/src/constants/__tests__/credential-sharing.test.ts b/packages/cli/src/constants/__tests__/credential-sharing.test.ts new file mode 100644 index 00000000000..079694939fd --- /dev/null +++ b/packages/cli/src/constants/__tests__/credential-sharing.test.ts @@ -0,0 +1,34 @@ +import { isCredSharingEnabled } from '@/constants/credential-sharing'; + +describe('isCredSharingEnabled', () => { + const originalEnv = process.env; + + beforeEach(() => { + process.env = { ...originalEnv }; + }); + + afterAll(() => { + process.env = originalEnv; + }); + + it('should return true when N8N_ENV_FEAT_CRED_SHARING is "true"', () => { + process.env.N8N_ENV_FEAT_CRED_SHARING = 'true'; + + expect(isCredSharingEnabled()).toBe(true); + }); + + it('should return false when N8N_ENV_FEAT_CRED_SHARING is unset', () => { + delete process.env.N8N_ENV_FEAT_CRED_SHARING; + + expect(isCredSharingEnabled()).toBe(false); + }); + + it.each(['false', 'TRUE', '1', ''])( + 'should return false when N8N_ENV_FEAT_CRED_SHARING is %p', + (value) => { + process.env.N8N_ENV_FEAT_CRED_SHARING = value; + + expect(isCredSharingEnabled()).toBe(false); + }, + ); +}); diff --git a/packages/cli/src/constants/credential-sharing.ts b/packages/cli/src/constants/credential-sharing.ts new file mode 100644 index 00000000000..46e3e8b5363 --- /dev/null +++ b/packages/cli/src/constants/credential-sharing.ts @@ -0,0 +1,10 @@ +import { isEnvFeatureEnabled } from '@n8n/backend-common'; + +/** + * More granular credential sharing (personal-space credentials usable in any + * project their owner works in, the can-see/can-use split, and related + * behavior) is opt-in while it lands on master in incremental pieces. + */ +export function isCredSharingEnabled(): boolean { + return isEnvFeatureEnabled('N8N_ENV_FEAT_CRED_SHARING'); +}