Files
3dp-manager/server/test/tunnels/tunnels.controller.spec.ts
T
Den Piligrim 26f3bb2934 v2.2.0
2026-05-21 22:58:29 +03:00

89 lines
2.5 KiB
TypeScript

/* eslint-disable @typescript-eslint/unbound-method */
import { Test, TestingModule } from '@nestjs/testing';
import { TunnelsController } from 'src/tunnels/tunnels.controller';
import { TunnelsService } from 'src/tunnels/tunnels.service';
describe('TunnelsController', () => {
let controller: TunnelsController;
let tunnelsService: TunnelsService;
const mockTunnelsService = {
create: jest.fn(),
findAll: jest.fn(),
remove: jest.fn(),
installScript: jest.fn(),
};
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
controllers: [TunnelsController],
providers: [
{
provide: TunnelsService,
useValue: mockTunnelsService,
},
],
}).compile();
controller = module.get<TunnelsController>(TunnelsController);
tunnelsService = module.get<TunnelsService>(TunnelsService);
});
afterEach(() => {
jest.clearAllMocks();
});
describe('create', () => {
it('должен создать туннель', async () => {
const dto = { ip: '192.168.1.1', sshPort: 22 };
const mockTunnel = { id: 1, ...dto };
mockTunnelsService.create.mockResolvedValue(mockTunnel);
const result = await controller.create(dto);
expect(result).toEqual(mockTunnel);
expect(tunnelsService.create).toHaveBeenCalledWith(dto);
});
});
describe('findAll', () => {
it('должен вернуть все туннели', async () => {
const mockTunnels = [
{ id: 1, ip: '192.168.1.1' },
{ id: 2, ip: '192.168.1.2' },
];
mockTunnelsService.findAll.mockResolvedValue(mockTunnels);
const result = await controller.findAll();
expect(result).toEqual(mockTunnels);
expect(tunnelsService.findAll).toHaveBeenCalledTimes(1);
});
});
describe('install', () => {
it('должен установить скрипт', async () => {
const mockResult = { success: true, output: 'done' };
mockTunnelsService.installScript.mockResolvedValue(mockResult);
const result = await controller.install('1');
expect(result).toEqual(mockResult);
expect(tunnelsService.installScript).toHaveBeenCalledWith(1);
});
});
describe('remove', () => {
it('должен удалить туннель', async () => {
mockTunnelsService.remove.mockResolvedValue(undefined);
await controller.remove('1');
expect(tunnelsService.remove).toHaveBeenCalledWith(1, false);
});
});
});