diff --git a/packages/cli/src/services/credentials-tester.service.ts b/packages/cli/src/services/credentials-tester.service.ts index 59b4abb5db581..0f56ef3600d81 100644 --- a/packages/cli/src/services/credentials-tester.service.ts +++ b/packages/cli/src/services/credentials-tester.service.ts @@ -84,7 +84,7 @@ export class CredentialsTester { return 'access_token' in oauthTokenData; } - private getCredentialTestFunction( + getCredentialTestFunction( credentialType: string, ): ICredentialTestFunction | ICredentialTestRequestData | undefined { // Check if test is defined on credentials @@ -116,7 +116,8 @@ export class CredentialsTester { for (const { name, testedBy } of nodeType.description.credentials ?? []) { if ( name === credentialType && - this.credentialTypes.getParentTypes(name).includes('oAuth2Api') + (this.credentialTypes.getParentTypes(name).includes('oAuth2Api') || + name === 'oAuth2Api') ) { return async function oauth2CredTest( this: ICredentialTestFunctions, diff --git a/packages/cli/test/unit/credentials-tester.unit.test.ts b/packages/cli/test/unit/credentials-tester.unit.test.ts new file mode 100644 index 0000000000000..e2987f5c84293 --- /dev/null +++ b/packages/cli/test/unit/credentials-tester.unit.test.ts @@ -0,0 +1,32 @@ +import { CredentialsTester } from '@/services/credentials-tester.service'; +import mock from 'jest-mock-extended/lib/Mock'; +import type { CredentialTypes } from '@/CredentialTypes'; +import type { ICredentialType, INodeType } from 'n8n-workflow'; +import type { NodeTypes } from '@/NodeTypes'; + +describe('CredentialsTester', () => { + const credentialTypes = mock(); + const nodeTypes = mock(); + const credentialsTester = new CredentialsTester(mock(), credentialTypes, nodeTypes, mock()); + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should find the OAuth2 credential test for a generic OAuth2 API credential', () => { + credentialTypes.getByName.mockReturnValue(mock({ test: undefined })); + credentialTypes.getSupportedNodes.mockReturnValue(['oAuth2Api']); + credentialTypes.getParentTypes.mockReturnValue([]); + nodeTypes.getByName.mockReturnValue( + mock({ + description: { credentials: [{ name: 'oAuth2Api' }] }, + }), + ); + + const testFn = credentialsTester.getCredentialTestFunction('oAuth2Api'); + + if (typeof testFn !== 'function') fail(); + + expect(testFn.name).toBe('oauth2CredTest'); + }); +});