// Test TLS config additions in startTaskAgent import fs from 'fs'; import path from 'path'; import axios from 'axios'; import { simpleGit } from 'simple-git'; import { startTaskAgent } from '../src/services/startTaskAgent'; jest.mock('simple-git', () => ({ simpleGit: jest.fn() })); jest.mock('axios'); describe('startTaskAgent TLS config', () => { let gitMock: any; beforeEach(() => { jest.clearAllMocks(); process.env.GITLAB_TOKEN = 'token'; // Stub simple-git gitMock = { addConfig: jest.fn(), status: jest.fn().mockResolvedValue({ files: [] }), getRemotes: jest.fn().mockResolvedValue([{ name: 'origin', refs: { fetch: 'git@host:ns/proj.git', push: null } }]), fetch: jest.fn(), checkout: jest.fn(), pull: jest.fn(), branch: jest.fn().mockResolvedValue({ all: [] }), checkoutBranch: jest.fn(), add: jest.fn(), commit: jest.fn().mockResolvedValue({ commit: 'sha' }), push: jest.fn(), revparse: jest.fn().mockResolvedValue('sha'), }; (simpleGit as jest.Mock).mockReturnValue(gitMock); // Stub project and issue API (axios.get as jest.Mock) .mockResolvedValueOnce({ data: { id: 1 } }) .mockResolvedValueOnce({ data: { title: 'Test Title' }, status: 200, headers: { 'content-type': 'application/json' } }); // Stub create_branch (axios.post as jest.Mock) = jest.fn().mockResolvedValue({ data: {} }); // Stub fs.existsSync for TLS files jest.spyOn(fs, 'existsSync').mockImplementation((p: any) => { const file = path.basename(p); return file === 'tls.crt' || file === 'tls.key'; }); }); it('adds SSL cert and key configs when present', async () => { const res = await startTaskAgent({ id: '1', gitlabToken: 'token', workDir: '/home/testdir' }); // Expect addConfig called twice for cert and key expect(gitMock.addConfig).toHaveBeenCalledTimes(2); const baseUrl = 'https://gitlab.teleport.ftprod.fr'.replace(/\/+$/, ''); expect(gitMock.addConfig).toHaveBeenCalledWith(`http.${baseUrl}.sslcert`, expect.stringContaining('tls.crt')); expect(gitMock.addConfig).toHaveBeenCalledWith(`http.${baseUrl}.sslkey`, expect.stringContaining('tls.key')); // Should return branch and commit expect(res).toEqual({ branch: expect.any(String), commitSha: 'sha' }); }); });