Skip to content

Commit

Permalink
fix(core): Ensure the generic OAuth2 API credential uses the OAuth2 c…
Browse files Browse the repository at this point in the history
…redential test (#8941)
  • Loading branch information
ivov authored and krynble committed Mar 25, 2024
1 parent 5d129ba commit 578f01a
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 2 deletions.
5 changes: 3 additions & 2 deletions packages/cli/src/services/credentials-tester.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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,
Expand Down
32 changes: 32 additions & 0 deletions packages/cli/test/unit/credentials-tester.unit.test.ts
Original file line number Diff line number Diff line change
@@ -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<CredentialTypes>();
const nodeTypes = mock<NodeTypes>();
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<ICredentialType>({ test: undefined }));
credentialTypes.getSupportedNodes.mockReturnValue(['oAuth2Api']);
credentialTypes.getParentTypes.mockReturnValue([]);
nodeTypes.getByName.mockReturnValue(
mock<INodeType>({
description: { credentials: [{ name: 'oAuth2Api' }] },
}),
);

const testFn = credentialsTester.getCredentialTestFunction('oAuth2Api');

if (typeof testFn !== 'function') fail();

expect(testFn.name).toBe('oauth2CredTest');
});
});

0 comments on commit 578f01a

Please sign in to comment.