diff --git a/packages/core/test/src/server/mock-server.ts b/packages/core/test/src/server/mock-server.ts index 3d1c030bd0..3e2e75070f 100644 --- a/packages/core/test/src/server/mock-server.ts +++ b/packages/core/test/src/server/mock-server.ts @@ -111,9 +111,10 @@ export class MockServer extends Application { await AppSupervisor.getInstance().destroy(); } - agent(): ExtendedAgent { - const agent = supertest.agent(this.callback()); + agent(callback?): ExtendedAgent { + const agent = supertest.agent(callback || this.callback()); const prefix = this.resourcer.options.prefix; + const proxy = new Proxy(agent, { get(target, method: string, receiver) { if (['login', 'loginUsingId'].includes(method)) { diff --git a/packages/plugins/@nocobase/plugin-multi-app-manager/src/server/__tests__/mock-server.test.ts b/packages/plugins/@nocobase/plugin-multi-app-manager/src/server/__tests__/mock-server.test.ts new file mode 100644 index 0000000000..46b8e9bc9c --- /dev/null +++ b/packages/plugins/@nocobase/plugin-multi-app-manager/src/server/__tests__/mock-server.test.ts @@ -0,0 +1,49 @@ +/** + * This file is part of the NocoBase (R) project. + * Copyright (c) 2020-2024 NocoBase Co., Ltd. + * Authors: NocoBase Team. + * + * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. + * For more information, please refer to: https://www.nocobase.com/agreement. + */ + +import { createMockServer, MockServer } from '@nocobase/test'; +import { AppSupervisor } from '@nocobase/server'; + +describe('sub app', async () => { + let app: MockServer; + let agent: any; + + beforeEach(async () => { + app = await createMockServer({ + plugins: ['multi-app-manager', 'client', 'ui-schema-storage', 'system-settings'], + }); + await app.db.getRepository('applications').create({ + values: { + name: 'test_sub', + options: { + plugins: ['client', 'ui-schema-storage', 'system-settings'], + }, + }, + context: { + waitSubAppInstall: true, + }, + }); + + agent = app.agent(); + }); + + afterEach(async () => { + await app.destroy(); + }); + + test('sub agent', async () => { + const res = await agent.get('/app:getInfo'); + expect(res.body.data.name).toBe('main'); + + const subApp = await AppSupervisor.getInstance().getApp('test_sub'); + + const res1 = await app.agent(subApp.callback()).get('/api/app:getInfo'); + expect(res1.body.data.name).toBe('test_sub'); + }); +});