kt-template-online-api/test/qqbot/account/qqbot-account.controller.spec.ts

80 lines
2.3 KiB
TypeScript

jest.mock('@/admin/auth/jwt-auth.guard', () => ({
JwtAuthGuard: class {
canActivate() {
return true;
}
},
}));
jest.mock('@/qqbot/account/qqbot-account.service', () => ({
QqbotAccountService: class {},
}));
jest.mock('@/qqbot/account/qqbot-napcat-login.service', () => ({
QqbotNapcatLoginService: class {},
}));
jest.mock('@/qqbot/connection/qqbot-reverse-ws.service', () => ({
QqbotReverseWsService: class {},
}));
import * as request from 'supertest';
import { Test } from '@nestjs/testing';
import type { INestApplication } from '@nestjs/common';
import { QqbotAccountController } from '@/qqbot/account/qqbot-account.controller';
import { QqbotAccountService } from '@/qqbot/account/qqbot-account.service';
import { QqbotNapcatLoginService } from '@/qqbot/account/qqbot-napcat-login.service';
import { QqbotReverseWsService } from '@/qqbot/connection/qqbot-reverse-ws.service';
describe('QqbotAccountController', () => {
let app: INestApplication;
const accountService = {
save: jest.fn().mockResolvedValue('account-1'),
};
beforeAll(async () => {
const moduleRef = await Test.createTestingModule({
controllers: [QqbotAccountController],
providers: [
{ provide: QqbotAccountService, useValue: accountService },
{ provide: QqbotNapcatLoginService, useValue: {} },
{ provide: QqbotReverseWsService, useValue: {} },
],
}).compile();
app = moduleRef.createNestApplication();
await app.init();
});
afterAll(async () => {
await app.close();
});
beforeEach(() => {
accountService.save.mockClear();
});
it('accepts encrypted NapCat login password through account save API', async () => {
await request(app.getHttpServer())
.post('/qqbot/account/save')
.send({
encryptedLoginPassword: 'encrypted-login-password',
name: 'Mirror',
selfId: '1914728559',
})
.expect(200)
.expect((response) => {
expect(response.body).toEqual(
expect.objectContaining({
code: 200,
data: 'account-1',
}),
);
});
expect(accountService.save).toHaveBeenCalledWith(
expect.objectContaining({
encryptedLoginPassword: 'encrypted-login-password',
selfId: '1914728559',
}),
);
});
});