mirror of
https://github.com/whyour/qinglong.git
synced 2026-08-17 23:56:57 +08:00
100 lines
2.8 KiB
JavaScript
100 lines
2.8 KiB
JavaScript
const assert = require('node:assert/strict');
|
|
const test = require('node:test');
|
|
const express = require('express');
|
|
const { Container } = require('typedi');
|
|
|
|
test('initialization returns the username and password validation result', async (t) => {
|
|
const originalGet = Container.get;
|
|
const userServicePath = require.resolve('../../back/services/user');
|
|
const originalUserService = require.cache[userServicePath];
|
|
const i18nPath = require.resolve('../../back/shared/i18n');
|
|
const originalI18n = require.cache[i18nPath];
|
|
const utilPath = require.resolve('../../back/config/util');
|
|
const originalUtil = require.cache[utilPath];
|
|
const authPath = require.resolve('../../back/shared/auth');
|
|
const originalAuth = require.cache[authPath];
|
|
require.cache[userServicePath] = {
|
|
id: userServicePath,
|
|
filename: userServicePath,
|
|
loaded: true,
|
|
exports: { __esModule: true, default: class UserService {} },
|
|
children: [],
|
|
paths: [],
|
|
};
|
|
require.cache[utilPath] = {
|
|
id: utilPath,
|
|
filename: utilPath,
|
|
loaded: true,
|
|
exports: { getToken: () => '', isDemoEnv: () => false },
|
|
children: [],
|
|
paths: [],
|
|
};
|
|
require.cache[authPath] = {
|
|
id: authPath,
|
|
filename: authPath,
|
|
loaded: true,
|
|
exports: { isDefaultAuthInfo: () => false },
|
|
children: [],
|
|
paths: [],
|
|
};
|
|
require.cache[i18nPath] = {
|
|
id: i18nPath,
|
|
filename: i18nPath,
|
|
loaded: true,
|
|
exports: { t: (message) => message },
|
|
children: [],
|
|
paths: [],
|
|
};
|
|
Container.get = () => ({
|
|
updateUsernameAndPassword: async () => ({
|
|
code: 400,
|
|
message: 'password rejected',
|
|
}),
|
|
});
|
|
t.after(() => {
|
|
Container.get = originalGet;
|
|
if (originalUserService) {
|
|
require.cache[userServicePath] = originalUserService;
|
|
} else {
|
|
delete require.cache[userServicePath];
|
|
}
|
|
if (originalI18n) {
|
|
require.cache[i18nPath] = originalI18n;
|
|
} else {
|
|
delete require.cache[i18nPath];
|
|
}
|
|
if (originalUtil) {
|
|
require.cache[utilPath] = originalUtil;
|
|
} else {
|
|
delete require.cache[utilPath];
|
|
}
|
|
if (originalAuth) {
|
|
require.cache[authPath] = originalAuth;
|
|
} else {
|
|
delete require.cache[authPath];
|
|
}
|
|
});
|
|
|
|
const app = express.Router();
|
|
require('../../back/api/user').default(app);
|
|
const userRouter = app.stack.find((layer) => layer.name === 'router').handle;
|
|
const initRoute = userRouter.stack.find(
|
|
(layer) => layer.route?.path === '/init',
|
|
);
|
|
const handler = initRoute.route.stack.at(-1).handle;
|
|
let responseBody;
|
|
|
|
await handler(
|
|
{ body: { username: 'admin', password: 'admin' } },
|
|
{ send: (body) => (responseBody = body) },
|
|
(error) => {
|
|
throw error;
|
|
},
|
|
);
|
|
|
|
assert.deepEqual(responseBody, {
|
|
code: 400,
|
|
message: 'password rejected',
|
|
});
|
|
});
|