mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-23 05:12:39 +00:00
chore: vitest support (#4026)
* chore: vitest * chore: move test files * chore: support vitest * fix: exclude test files * chore(ci): add test workflow * feat: remove read env
This commit is contained in:
1
test/mocks/index.ts
Normal file
1
test/mocks/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
import './request';
|
89
test/mocks/request.ts
Normal file
89
test/mocks/request.ts
Normal file
@@ -0,0 +1,89 @@
|
||||
import { AuthUserTypeEnum } from '@fastgpt/global/support/permission/constant';
|
||||
import { vi } from 'vitest';
|
||||
|
||||
// vi.mock(import('@/service/middleware/entry'), async () => {
|
||||
// const NextAPI = vi.fn((handler: any) => handler);
|
||||
// return {
|
||||
// NextAPI
|
||||
// };
|
||||
// });
|
||||
|
||||
vi.mock(import('@fastgpt/service/common/middle/entry'), async (importOriginal) => {
|
||||
const mod = await importOriginal();
|
||||
const NextEntry = vi.fn(({ beforeCallback = [] }: { beforeCallback?: Promise<any>[] }) => {
|
||||
return (...args: any) => {
|
||||
return async function api(req: any, res: any) {
|
||||
try {
|
||||
await Promise.all([...beforeCallback]);
|
||||
let response = null;
|
||||
for await (const handler of args) {
|
||||
response = await handler(req, res);
|
||||
if (res.writableFinished) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return {
|
||||
code: 200,
|
||||
data: response
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
code: 500,
|
||||
error,
|
||||
url: req.url
|
||||
};
|
||||
}
|
||||
};
|
||||
};
|
||||
});
|
||||
|
||||
return {
|
||||
...mod,
|
||||
NextEntry
|
||||
};
|
||||
});
|
||||
|
||||
export type parseHeaderCertRet = {
|
||||
userId: string;
|
||||
teamId: string;
|
||||
tmbId: string;
|
||||
appId: string;
|
||||
authType: AuthUserTypeEnum;
|
||||
sourceName: string | undefined;
|
||||
apikey: string;
|
||||
isRoot: boolean;
|
||||
};
|
||||
|
||||
export type MockReqType<B = any, Q = any> = {
|
||||
body?: B;
|
||||
query?: Q;
|
||||
auth?: parseHeaderCertRet;
|
||||
[key: string]: any;
|
||||
};
|
||||
|
||||
vi.mock(import('@fastgpt/service/support/permission/controller'), async (importOriginal) => {
|
||||
const mod = await importOriginal();
|
||||
const parseHeaderCert = vi.fn(
|
||||
({
|
||||
req,
|
||||
authToken = false,
|
||||
authRoot = false,
|
||||
authApiKey = false
|
||||
}: {
|
||||
req: MockReqType;
|
||||
authToken?: boolean;
|
||||
authRoot?: boolean;
|
||||
authApiKey?: boolean;
|
||||
}) => {
|
||||
const { auth } = req;
|
||||
if (!auth) {
|
||||
return Promise.reject(Error('unAuthorization'));
|
||||
}
|
||||
return Promise.resolve(auth);
|
||||
}
|
||||
);
|
||||
return {
|
||||
...mod,
|
||||
parseHeaderCert
|
||||
};
|
||||
});
|
Reference in New Issue
Block a user