mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-06-09 17:31:19 +00:00
* chore: reduce auth and balance operational noise * chore: tighten balance and capability noise handling * chore: avoid balance 404s when disabled * chore: use response locals for balance handoff
72 lines
2 KiB
JavaScript
72 lines
2 KiB
JavaScript
jest.mock('~/models', () => ({
|
|
findBalanceByUser: jest.fn(),
|
|
}));
|
|
|
|
const { findBalanceByUser } = require('~/models');
|
|
const balanceController = require('./Balance');
|
|
|
|
describe('balanceController', () => {
|
|
const createResponse = () => ({
|
|
locals: {},
|
|
status: jest.fn().mockReturnThis(),
|
|
json: jest.fn().mockReturnThis(),
|
|
sendStatus: jest.fn().mockReturnThis(),
|
|
});
|
|
|
|
beforeEach(() => {
|
|
jest.clearAllMocks();
|
|
});
|
|
|
|
it('returns no content without reading balance when balance config is disabled', async () => {
|
|
const req = {
|
|
user: { id: 'user-1' },
|
|
};
|
|
const res = createResponse();
|
|
res.locals.balanceConfigEnabled = false;
|
|
|
|
await balanceController(req, res);
|
|
|
|
expect(findBalanceByUser).not.toHaveBeenCalled();
|
|
expect(res.sendStatus).toHaveBeenCalledWith(204);
|
|
expect(res.status).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it('uses balance data attached by middleware without a second read', async () => {
|
|
const req = {
|
|
user: { id: 'user-1' },
|
|
};
|
|
const res = createResponse();
|
|
res.locals.balanceConfigEnabled = true;
|
|
res.locals.balanceData = {
|
|
_id: 'balance-1',
|
|
user: 'user-1',
|
|
tokenCredits: 100,
|
|
autoRefillEnabled: false,
|
|
};
|
|
|
|
await balanceController(req, res);
|
|
|
|
expect(findBalanceByUser).not.toHaveBeenCalled();
|
|
expect(res.status).toHaveBeenCalledWith(200);
|
|
expect(res.json).toHaveBeenCalledWith({
|
|
user: 'user-1',
|
|
tokenCredits: 100,
|
|
autoRefillEnabled: false,
|
|
});
|
|
});
|
|
|
|
it('returns not found when balance is enabled and no record exists', async () => {
|
|
findBalanceByUser.mockResolvedValue(null);
|
|
const req = {
|
|
user: { id: 'user-1' },
|
|
};
|
|
const res = createResponse();
|
|
res.locals.balanceConfigEnabled = true;
|
|
|
|
await balanceController(req, res);
|
|
|
|
expect(findBalanceByUser).toHaveBeenCalledWith('user-1');
|
|
expect(res.status).toHaveBeenCalledWith(404);
|
|
expect(res.json).toHaveBeenCalledWith({ error: 'Balance not found' });
|
|
});
|
|
});
|