56 lines
2.5 KiB
TypeScript
56 lines
2.5 KiB
TypeScript
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('读取应用日志失败')
|
||
})
|
||
})
|