38 lines
1.5 KiB
TypeScript
38 lines
1.5 KiB
TypeScript
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'")
|
|
})
|
|
})
|