| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- import { describe, it, expect } from 'vitest';
- import {
- buildScriptCommand,
- buildDockerRun,
- buildDockerCompose,
- type InstallOptions,
- } from './install';
- const base: InstallOptions = {
- method: 'script',
- version: '',
- enableFail2ban: true,
- panelPort: '',
- webBasePath: '',
- };
- describe('buildScriptCommand', () => {
- it('uses the master install.sh for the latest version', () => {
- expect(buildScriptCommand(base)).toBe(
- 'bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)',
- );
- });
- it('pins a specific version by passing the tag to master install.sh', () => {
- const cmd = buildScriptCommand({ ...base, version: 'v3.4.1' });
- expect(cmd).toBe(
- 'bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) v3.4.1',
- );
- });
- it('supports the rolling dev-latest build', () => {
- const cmd = buildScriptCommand({ ...base, version: 'dev-latest' });
- expect(cmd).toBe(
- 'bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) dev-latest',
- );
- });
- });
- describe('buildDockerRun', () => {
- it('reflects fail2ban, port, and base path options', () => {
- const cmd = buildDockerRun({
- ...base,
- enableFail2ban: false,
- panelPort: '8443',
- webBasePath: '/panel',
- });
- expect(cmd).toContain('XUI_ENABLE_FAIL2BAN=false');
- expect(cmd).toContain('XUI_PORT=8443');
- expect(cmd).toContain('XUI_INIT_WEB_BASE_PATH=/panel');
- expect(cmd).toContain('ghcr.io/mhsanaei/3x-ui:latest');
- expect(cmd).toContain('-v $PWD/db/:/etc/x-ui/');
- });
- it('omits unset port and path', () => {
- const cmd = buildDockerRun(base);
- expect(cmd).not.toContain('XUI_PORT');
- expect(cmd).not.toContain('XUI_INIT_WEB_BASE_PATH');
- });
- });
- describe('buildDockerCompose', () => {
- it('produces valid-looking compose with the image and volumes', () => {
- const yaml = buildDockerCompose({ ...base, panelPort: '2096' });
- expect(yaml).toContain('image: ghcr.io/mhsanaei/3x-ui:latest');
- expect(yaml).toContain('network_mode: host');
- expect(yaml).toContain("XUI_PORT: '2096'");
- expect(yaml).toContain('- ./db/:/etc/x-ui/');
- });
- });
|