import fs from 'fs' import path from 'path' describe('premium module source packages', () => { const moduleIds = [ 'license-limits-core', 'custom-templates-core', 'intranet-penetration-core', ] it('所有授权模块都应可作为独立模块镜像构建', () => { for (const moduleId of moduleIds) { const moduleDir = path.join(process.cwd(), 'premium-modules', moduleId) const dockerfile = fs.readFileSync(path.join(moduleDir, 'Dockerfile'), 'utf8') const server = fs.readFileSync(path.join(moduleDir, 'server.mjs'), 'utf8') expect(fs.existsSync(path.join(moduleDir, 'VERSION.txt'))).toBe(true) expect(fs.existsSync(path.join(moduleDir, 'package.json'))).toBe(true) expect(dockerfile).toContain('HEALTHCHECK') expect(dockerfile).toContain('EXPOSE 8787') expect(server).toContain(`const moduleId = '${moduleId}'`) expect(server).toContain("url.pathname === '/health'") expect(server).not.toContain("status: 'success'") } }) it('内网穿透模块未接真实 provider 时必须明确返回未配置', () => { const moduleDir = path.join(process.cwd(), 'premium-modules', 'intranet-penetration-core') const server = fs.readFileSync(path.join(moduleDir, 'server.mjs'), 'utf8') expect(server).toContain("status: 'provider_not_configured'") expect(server).toContain("url.pathname === '/start'") expect(server).toContain("url.pathname === '/status'") expect(server).toContain("url.pathname === '/stop'") expect(server).not.toContain("status: 'success'") }) })