mirror of
https://github.com/n8n-io/n8n.git
synced 2026-05-27 14:57:21 +02:00
68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
import type { IHookFunctions } from 'n8n-workflow';
|
|
|
|
import { calendlyApiRequest } from '../GenericFunctions';
|
|
|
|
describe('Calendly GenericFunctions', () => {
|
|
const requestWithAuthentication = jest.fn();
|
|
|
|
const mockHookFunctions = {
|
|
getNodeParameter: jest.fn(),
|
|
helpers: {
|
|
requestWithAuthentication,
|
|
},
|
|
} as unknown as jest.Mocked<IHookFunctions>;
|
|
|
|
beforeEach(() => {
|
|
jest.clearAllMocks();
|
|
requestWithAuthentication.mockResolvedValue({});
|
|
mockHookFunctions.getNodeParameter.mockReturnValue('apiKey');
|
|
});
|
|
|
|
it('should use personal access token credentials for PAT authentication', async () => {
|
|
await calendlyApiRequest.call(mockHookFunctions, 'GET', '/users/me');
|
|
|
|
expect(requestWithAuthentication).toHaveBeenCalledWith(
|
|
'calendlyApi',
|
|
expect.objectContaining({
|
|
method: 'GET',
|
|
uri: 'https://api.calendly.com/users/me',
|
|
}),
|
|
);
|
|
});
|
|
|
|
it('should use OAuth2 credentials for OAuth2 authentication', async () => {
|
|
mockHookFunctions.getNodeParameter.mockReturnValue('oAuth2');
|
|
|
|
await calendlyApiRequest.call(mockHookFunctions, 'GET', '/users/me');
|
|
|
|
expect(requestWithAuthentication).toHaveBeenCalledWith(
|
|
'calendlyOAuth2Api',
|
|
expect.objectContaining({
|
|
method: 'GET',
|
|
uri: 'https://api.calendly.com/users/me',
|
|
}),
|
|
);
|
|
});
|
|
|
|
it('should send requests to Calendly API v2', async () => {
|
|
await calendlyApiRequest.call(mockHookFunctions, 'POST', '/webhook_subscriptions', {
|
|
events: ['invitee.created'],
|
|
});
|
|
|
|
expect(requestWithAuthentication).toHaveBeenCalledWith(
|
|
expect.any(String),
|
|
expect.objectContaining({
|
|
uri: 'https://api.calendly.com/webhook_subscriptions',
|
|
}),
|
|
);
|
|
});
|
|
|
|
it('should omit empty body and query string parameters', async () => {
|
|
await calendlyApiRequest.call(mockHookFunctions, 'GET', '/users/me');
|
|
|
|
const requestOptions = requestWithAuthentication.mock.calls[0][1];
|
|
expect(requestOptions).not.toHaveProperty('body');
|
|
expect(requestOptions).not.toHaveProperty('qs');
|
|
});
|
|
});
|