flnxi-Wu/scripts/__tests__/smoke-install-script.test.ts
2026-06-01 17:28:00 +08:00

56 lines
2.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import fs from 'fs'
import path from 'path'
describe('scripts/smoke-install.ps1', () => {
const script = fs.readFileSync(
path.join(process.cwd(), 'scripts/smoke-install.ps1'),
'utf8'
)
it('首装验收可以选择启动 Compose,但默认也能只做检查', () => {
expect(script).toContain('[switch]$Start')
expect(script).toContain('[switch]$PreflightOnly')
expect(script).toContain('[switch]$PrepareDirectories')
expect(script).toContain('"up", "-d"')
expect(script).toContain('"config", "--quiet"')
expect(script).toContain('@("ps")')
})
it('启动前先拦截占位配置、latest 镜像和缺失数据目录', () => {
expect(script).toContain('Invoke-InstallPreflight')
expect(script).toContain('Test-PlaceholderValue')
expect(script).toContain('APP_IMAGE 不能使用 latest')
expect(script).toContain('APP_IMAGE 必须写完整镜像站地址')
expect(script).toContain('DATABASE_URL 仍是示例地址')
expect(script).toContain('缺少 $Name 目录')
expect(script).toContain('安装前检查完成,未启动或检查容器。')
})
it('验收运行镜像、版本文件、迁移状态和健康接口', () => {
expect(script).toContain('Wait-ServiceRunning')
expect(script).toContain('docker inspect $appContainerId --format')
expect(script).toContain('cat VERSION.txt')
expect(script).toContain('[string]$ExpectedVersion = ""')
expect(script).toContain('应用版本符合预期')
expect(script).toContain('/api/health 正常,版本符合预期')
expect(script).toContain('没有返回期望版本')
expect(script).toContain('npx", "prisma", "migrate", "status"')
expect(script).toContain('/api/health')
})
it('验收内置对象存储 bucket,并允许外部对象存储跳过', () => {
expect(script).toContain('[switch]$SkipObjectStorageCheck')
expect(script).toContain('Test-ExternalObjectStorage')
expect(script).toContain('"S3_ENDPOINT", "S3_BUCKET", "S3_ACCESS_KEY_ID", "S3_SECRET_ACCESS_KEY"')
expect(script).toContain('"MINIO_ROOT_USER", "MINIO_ROOT_PASSWORD", "S3_BUCKET"')
expect(script).toContain('S3_BUCKET')
expect(script).toContain('检测到外部对象存储,跳过内置 MinIO bucket 检查')
expect(script).toContain('test -d /data/$bucket')
})
it('验收失败时会读取应用日志辅助排查', () => {
expect(script).toContain('logs --tail 80')
expect(script).toContain('读取应用日志失败')
})
})