From 551dbfde24808a21e7e2216b2492474cf66a455f Mon Sep 17 00:00:00 2001 From: Guillaume Jacquart Date: Fri, 12 Dec 2025 11:48:35 +0100 Subject: [PATCH] feat(core): Use credential entity resolver fields on resolving and storing process (#23107) --- packages/cli/src/__tests__/credentials-helper.test.ts | 5 +++++ packages/cli/src/credentials-helper.ts | 8 +++----- packages/cli/src/oauth/__tests__/oauth.service.test.ts | 3 +++ packages/cli/src/oauth/oauth.service.ts | 8 +++----- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/packages/cli/src/__tests__/credentials-helper.test.ts b/packages/cli/src/__tests__/credentials-helper.test.ts index 2baf88ca84d..48b7b77ddb4 100644 --- a/packages/cli/src/__tests__/credentials-helper.test.ts +++ b/packages/cli/src/__tests__/credentials-helper.test.ts @@ -417,6 +417,8 @@ describe('CredentialsHelper', () => { name: 'Test Credentials', type: credentialType, data: cipher.encrypt({ apiKey: 'static-key' }), + isResolvable: false, + resolvableAllowFallback: false, } as CredentialsEntity; beforeEach(() => { @@ -431,6 +433,7 @@ describe('CredentialsHelper', () => { const resolvedData = { apiKey: 'dynamic-key' }; mockCredentialResolutionProvider.resolveIfNeeded.mockResolvedValue(resolvedData); + credentialsRepository.findOneByOrFail.mockResolvedValue(mockCredentialEntity); const result = await credentialsHelper.getDecrypted( mockAdditionalData, @@ -447,6 +450,8 @@ describe('CredentialsHelper', () => { name: mockCredentialEntity.name, isResolvable: false, type: 'testApi', + resolverId: undefined, + resolvableAllowFallback: false, }, { apiKey: 'static-key' }, mockAdditionalData.executionContext, diff --git a/packages/cli/src/credentials-helper.ts b/packages/cli/src/credentials-helper.ts index d3a699d2a17..c77d1bdac2b 100644 --- a/packages/cli/src/credentials-helper.ts +++ b/packages/cli/src/credentials-helper.ts @@ -363,12 +363,10 @@ export class CredentialsHelper extends ICredentialsHelper { { id: credentialsEntity.id, name: credentialsEntity.name, - isResolvable: false, type: credentialsEntity.type, - // TODO: use the actual values from the entity once they are added - // isResolvable: credentialsEntity.isResolvable, - // resolverId: (credentialsEntity as any).resolverId, - // resolvableAllowFallback: (credentialsEntity as any).resolvableAllowFallback, + isResolvable: credentialsEntity.isResolvable, + resolverId: credentialsEntity.resolverId ?? undefined, + resolvableAllowFallback: credentialsEntity.resolvableAllowFallback, }, decryptedDataOriginal, additionalData.executionContext, diff --git a/packages/cli/src/oauth/__tests__/oauth.service.test.ts b/packages/cli/src/oauth/__tests__/oauth.service.test.ts index fdacc903593..529e981c2cd 100644 --- a/packages/cli/src/oauth/__tests__/oauth.service.test.ts +++ b/packages/cli/src/oauth/__tests__/oauth.service.test.ts @@ -835,6 +835,8 @@ describe('OauthService', () => { name: 'Test Credential', type: 'googleOAuth2Api', data: 'encrypted-data', + isResolvable: true, + resolverId: 'resolver-id', }); const oauthTokenData = { access_token: 'access-token', @@ -858,6 +860,7 @@ describe('OauthService', () => { name: 'Test Credential', type: 'googleOAuth2Api', isResolvable: true, + resolverId: 'resolver-id', }, oauthTokenData, { version: 1, identity: authToken }, diff --git a/packages/cli/src/oauth/oauth.service.ts b/packages/cli/src/oauth/oauth.service.ts index 11c3f246985..b83a93e0a12 100644 --- a/packages/cli/src/oauth/oauth.service.ts +++ b/packages/cli/src/oauth/oauth.service.ts @@ -582,14 +582,12 @@ export class OauthService { id: credential.id, name: credential.name, type: credential.type, - isResolvable: true, + isResolvable: credential.isResolvable, + resolverId: credentialResolverId, }; await this.dynamicCredentialsProxy.storeIfNeeded( - { - ...credentialStoreMetadata, - isResolvable: true, - }, + credentialStoreMetadata, oauthTokenData, // todo parse this { version: 1, identity: authHeader },