Files
n8n-enterprise-unlocked/packages/nodes-base/nodes/Google/GSuiteAdmin/test/SearchFunctions.test.ts
2025-05-02 17:27:08 +01:00

105 lines
3.0 KiB
TypeScript

import type { ILoadOptionsFunctions } from 'n8n-workflow';
import { googleApiRequest, googleApiRequestAllItems } from '../GenericFunctions';
import { searchUsers, searchGroups, searchDevices } from '../SearchFunctions';
jest.mock('../GenericFunctions');
describe('searchFunctions', () => {
let mockContext: ILoadOptionsFunctions;
beforeEach(() => {
mockContext = {
getNodeParameter: jest.fn(),
} as unknown as ILoadOptionsFunctions;
jest.clearAllMocks();
});
describe('searchUsers', () => {
it('should return formatted user search results', async () => {
(googleApiRequestAllItems as jest.Mock).mockResolvedValueOnce([
{ id: '123', name: { fullName: 'John Doe' } },
{ id: '456' },
]);
const result = await searchUsers.call(mockContext);
expect(googleApiRequestAllItems).toHaveBeenCalledWith(
expect.anything(),
'GET',
'/directory/v1/users',
{},
{ customer: 'my_customer' },
);
expect(result).toEqual({
results: [
{ name: 'John Doe', value: '123' },
{ name: '456', value: '456' },
],
});
});
it('should return an empty array if no users found', async () => {
(googleApiRequestAllItems as jest.Mock).mockResolvedValueOnce([]);
const result = await searchUsers.call(mockContext);
expect(result).toEqual({ results: [] });
});
});
describe('searchGroups', () => {
it('should return formatted group search results', async () => {
(googleApiRequestAllItems as jest.Mock).mockResolvedValueOnce([
{ id: 'group1', name: 'Group One' },
{ id: 'group2', email: 'group@example.com' },
{ id: 'group3' },
]);
const result = await searchGroups.call(mockContext);
expect(result).toEqual({
results: [
{ name: 'Group One', value: 'group1' },
{ name: 'group@example.com', value: 'group2' },
{ name: 'Unnamed Group', value: 'group3' },
],
});
});
it('should return empty results if no groups found', async () => {
(googleApiRequestAllItems as jest.Mock).mockResolvedValueOnce([]);
const result = await searchGroups.call(mockContext);
expect(result).toEqual({ results: [] });
});
});
describe('searchDevices', () => {
it('should return formatted device search results', async () => {
(googleApiRequest as jest.Mock).mockResolvedValueOnce({
chromeosdevices: [{ deviceId: 'dev1', serialNumber: 'SN123' }, { deviceId: 'Dev2' }],
});
const result = await searchDevices.call(mockContext);
expect(googleApiRequest).toHaveBeenCalledWith(
'GET',
'/directory/v1/customer/my_customer/devices/chromeos/',
{},
{ customerId: 'my_customer' },
);
expect(result).toEqual({
results: [
{ name: 'SN123', value: 'dev1' },
{ name: 'Dev2', value: 'Dev2' },
],
});
});
it('should return empty results if no devices found', async () => {
(googleApiRequest as jest.Mock).mockResolvedValueOnce({ chromeosdevices: [] });
const result = await searchDevices.call(mockContext);
expect(result).toEqual({ results: [] });
});
});
});