Files
n8n-enterprise-unlocked/packages/cli/test/integration/controllers/module-settings.controller.test.ts
2025-08-19 14:48:33 +03:00

62 lines
2.0 KiB
TypeScript

import { mockInstance } from '@n8n/backend-test-utils';
import type { ModuleSettings } from '@n8n/decorators';
import { createMember, createOwner } from '../shared/db/users';
import type { SuperAgentTest } from '../shared/types';
import { setupTestServer } from '../shared/utils';
import { FrontendService } from '@/services/frontend.service';
describe('ModuleSettingsController', () => {
const frontendService = mockInstance(FrontendService);
const testServer = setupTestServer({ endpointGroups: ['module-settings'] });
let ownerAgent: SuperAgentTest;
let memberAgent: SuperAgentTest;
beforeAll(async () => {
const owner = await createOwner();
const member = await createMember();
ownerAgent = testServer.authAgentFor(owner);
memberAgent = testServer.authAgentFor(member);
});
beforeEach(() => {
jest.clearAllMocks();
});
describe('GET /module-settings', () => {
const mockSettings: { [key: string]: ModuleSettings } = { module: { some: 'settings' } };
it('should require authentication', async () => {
await testServer.authlessAgent.get('/module-settings').expect(401);
});
it('should allow authenticated owner to get module settings', async () => {
frontendService.getModuleSettings.mockReturnValue(mockSettings);
const response = await ownerAgent.get('/module-settings').expect(200);
expect(response.body).toEqual({ data: mockSettings });
expect(frontendService.getModuleSettings).toHaveBeenCalledTimes(1);
});
it('should allow authenticated member to get module settings', async () => {
frontendService.getModuleSettings.mockReturnValue(mockSettings);
const response = await memberAgent.get('/module-settings').expect(200);
expect(response.body).toEqual({ data: mockSettings });
expect(frontendService.getModuleSettings).toHaveBeenCalledTimes(1);
});
it('should handle service errors gracefully', async () => {
frontendService.getModuleSettings.mockImplementation(() => {
throw new Error('Service error');
});
await ownerAgent.get('/module-settings').expect(500);
});
});
});