mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 10:02:05 +00:00
feat(core): Add credential runtime checks and prevent tampering in manual run (#4481)
* ✨ Create `PermissionChecker` * ⚡ Adjust helper * 🔥 Remove superseded helpers * ⚡ Use `PermissionChecker` * 🧪 Add test for dynamic router switching * ⚡ Simplify checks * ⚡ Export utils * ⚡ Add missing `init` method * 🧪 Write tests for `PermissionChecker` * 📘 Update types * 🧪 Fix tests * ✨ Set up `runManually()` * ⚡ Refactor to reuse methods * 🧪 Clear shared tables first * 🔀 Adjust merge * ⚡ Adjust imports
This commit is contained in:
@@ -17,12 +17,12 @@ jest.mock('@/telemetry');
|
||||
|
||||
let app: express.Application;
|
||||
let testDbName = '';
|
||||
|
||||
let globalOwnerRole: Role;
|
||||
let globalMemberRole: Role;
|
||||
let credentialOwnerRole: Role;
|
||||
let authAgent: AuthAgent;
|
||||
let saveCredential: SaveCredentialFunction;
|
||||
let isSharingEnabled: jest.SpyInstance<boolean>;
|
||||
let workflowRunner: ActiveWorkflowRunner;
|
||||
let sharingSpy: jest.SpyInstance<boolean>;
|
||||
|
||||
@@ -45,7 +45,9 @@ beforeAll(async () => {
|
||||
utils.initTestLogger();
|
||||
utils.initTestTelemetry();
|
||||
|
||||
config.set('enterprise.workflowSharingEnabled', true);
|
||||
isSharingEnabled = jest.spyOn(UserManagementHelpers, 'isSharingEnabled').mockReturnValue(true);
|
||||
|
||||
config.set('enterprise.workflowSharingEnabled', true); // @TODO: Remove once temp flag is removed
|
||||
|
||||
await utils.initNodeTypes();
|
||||
workflowRunner = await utils.initActiveWorkflowRunner();
|
||||
@@ -62,6 +64,32 @@ afterAll(async () => {
|
||||
await testDb.terminate(testDbName);
|
||||
});
|
||||
|
||||
test('Router should switch dynamically', async () => {
|
||||
const owner = await testDb.createUser({ globalRole: globalOwnerRole });
|
||||
const member = await testDb.createUser({ globalRole: globalMemberRole });
|
||||
|
||||
const createWorkflowResponse = await authAgent(owner).post('/workflows').send(makeWorkflow());
|
||||
const { id } = createWorkflowResponse.body.data;
|
||||
|
||||
// free router
|
||||
|
||||
isSharingEnabled.mockReturnValueOnce(false);
|
||||
|
||||
const freeShareResponse = await authAgent(owner)
|
||||
.put(`/workflows/${id}/share`)
|
||||
.send({ shareWithIds: [member.id] });
|
||||
|
||||
expect(freeShareResponse.status).toBe(404);
|
||||
|
||||
// EE router
|
||||
|
||||
const paidShareResponse = await authAgent(owner)
|
||||
.put(`/workflows/${id}/share`)
|
||||
.send({ shareWithIds: [member.id] });
|
||||
|
||||
expect(paidShareResponse.status).toBe(200);
|
||||
});
|
||||
|
||||
describe('PUT /workflows/:id', () => {
|
||||
test('PUT /workflows/:id/share should save sharing with new users', async () => {
|
||||
const owner = await testDb.createUser({ globalRole: globalOwnerRole });
|
||||
|
||||
Reference in New Issue
Block a user