Merge branch 'main' into next
Some checks failed
Build Docker Image / build-and-push (push) Waiting to run
Build Pro Image / build-and-push (push) Waiting to run
E2E / Build (push) Waiting to run
E2E / Core and plugins (push) Blocked by required conditions
E2E / plugin-workflow (push) Blocked by required conditions
E2E / plugin-workflow-approval (push) Blocked by required conditions
E2E / plugin-data-source-main (push) Blocked by required conditions
E2E / Comment on PR (push) Blocked by required conditions
NocoBase FrontEnd Test / frontend-test (18) (push) Waiting to run
NocoBase Backend Test / sqlite-test (20, false) (push) Has been cancelled
NocoBase Backend Test / sqlite-test (20, true) (push) Has been cancelled
NocoBase Backend Test / postgres-test (public, 20, nocobase, false) (push) Has been cancelled
NocoBase Backend Test / postgres-test (public, 20, nocobase, true) (push) Has been cancelled
NocoBase Backend Test / postgres-test (public, 20, public, false) (push) Has been cancelled
NocoBase Backend Test / postgres-test (public, 20, public, true) (push) Has been cancelled
NocoBase Backend Test / postgres-test (user_schema, 20, nocobase, false) (push) Has been cancelled
NocoBase Backend Test / postgres-test (user_schema, 20, nocobase, true) (push) Has been cancelled
NocoBase Backend Test / postgres-test (user_schema, 20, public, false) (push) Has been cancelled
NocoBase Backend Test / postgres-test (user_schema, 20, public, true) (push) Has been cancelled
NocoBase Backend Test / mysql-test (20, false) (push) Has been cancelled
NocoBase Backend Test / mysql-test (20, true) (push) Has been cancelled
NocoBase Backend Test / mariadb-test (20, false) (push) Has been cancelled
NocoBase Backend Test / mariadb-test (20, true) (push) Has been cancelled
Test on Windows / build (push) Has been cancelled

This commit is contained in:
GitHub Actions Bot 2024-07-30 06:43:19 +00:00
commit dc20cb5ec6
2 changed files with 43 additions and 3 deletions

View File

@ -248,6 +248,7 @@ export default class PluginWorkflowServer extends Plugin {
'executions:list',
'executions:get',
'executions:cancel',
'executions:destroy',
'flow_nodes:update',
'flow_nodes:destroy',
],

View File

@ -19,10 +19,15 @@ describe('workflow > actions > executions', () => {
let PostRepo;
let WorkflowModel;
let workflow;
let users;
let userAgents;
beforeEach(async () => {
app = await getApp();
agent = app.agent();
app = await getApp({
plugins: ['users', 'acl', 'auth', 'data-source-manager'],
acl: true,
});
agent = app.agent().loginUsingId(1);
db = app.db;
WorkflowModel = db.getCollection('workflows').model;
PostRepo = db.getCollection('posts').repository;
@ -35,6 +40,14 @@ describe('workflow > actions > executions', () => {
collection: 'posts',
},
});
const UserRepo = db.getCollection('users').repository;
users = await UserRepo.createMany({
records: [
{ id: 2, nickname: 'a', roles: ['admin'] },
{ id: 3, nickname: 'b' },
],
});
userAgents = users.map((user) => app.agent().login(user));
});
afterEach(async () => await app.destroy());
@ -48,11 +61,12 @@ describe('workflow > actions > executions', () => {
expect(e1.length).toBe(1);
expect(e1[0].get('status')).toBe(EXECUTION_STATUS.RESOLVED);
await agent.resource('executions').destroy({
const res1 = await agent.resource('executions').destroy({
filter: {
key: workflow.key,
},
});
expect(res1.status).toBe(200);
const e2 = await workflow.getExecutions();
expect(e2.length).toBe(0);
@ -79,6 +93,31 @@ describe('workflow > actions > executions', () => {
const e2 = await workflow.getExecutions();
expect(e2.length).toBe(1);
});
it('role as admin could delete execution', async () => {
const post = await PostRepo.create({ values: { title: 't1' } });
await sleep(500);
const e1 = await workflow.getExecutions();
expect(e1.length).toBe(1);
expect(e1[0].get('status')).toBe(EXECUTION_STATUS.RESOLVED);
const res1 = await userAgents[1].resource('executions').destroy({
filter: {
key: workflow.key,
},
});
expect(res1.status).toBe(403);
const res2 = await userAgents[0].resource('executions').destroy({
filter: {
key: workflow.key,
},
});
expect(res2.status).toBe(200);
const e2 = await workflow.getExecutions();
expect(e2.length).toBe(0);
});
});
describe('cancel', () => {