import fs from 'fs' import path from 'path' describe('registry premium module proxy config', () => { const config = fs.readFileSync( path.join(process.cwd(), 'deploy', 'registry-proxy', 'nginx.module-auth.conf.template'), 'utf8' ) const existingRegistryCompose = fs.readFileSync( path.join(process.cwd(), 'deploy', 'registry-proxy', 'docker-compose.existing-registry.yml'), 'utf8' ) it('只对 flnxi/premium 模块拉取做验证服务器鉴权', () => { expect(config).toContain('^/v2/(?flnxi/premium/[^/]+)') expect(config).toContain('auth_request /_flnxi_module_auth') expect(config).toContain('if ($flnxi_is_pull_method = 0)') expect(config).toContain("return 200 '{}'") }) it('会把短期 token、仓库路径、请求类型和 digest 转发给许可证服务', () => { expect(config).toContain('proxy_set_header Authorization $http_authorization') expect(config).toContain('proxy_set_header X-Registry-Host $http_host') expect(config).toContain('proxy_set_header X-Registry-Repository $module_repository') expect(config).toContain('proxy_set_header X-Registry-Reference-Type $module_reference_type') expect(config).toContain('proxy_set_header X-Registry-Reference $module_reference') expect(config).toContain('proxy_set_header X-Registry-Digest $module_digest_header') expect(config).toContain('proxy_set_header X-Registry-Scope "repository:$module_repository:pull"') expect(config).toContain('${LICENSE_SERVER_AUTH_URL}') expect(config).toContain('proxy_set_header Authorization "${REGISTRY_BACKEND_AUTH}"') }) it('已有镜像站编排只新增代理,不创建第二个 Registry 数据卷', () => { expect(existingRegistryCompose).toContain('module-registry-proxy:') expect(existingRegistryCompose).toContain('REGISTRY_BACKEND: ${REGISTRY_BACKEND:-http://flnxi-registry:5000}') expect(existingRegistryCompose).toContain('REGISTRY_BACKEND_AUTH: ${REGISTRY_BACKEND_AUTH:-}') expect(existingRegistryCompose).toContain('name: ${REGISTRY_NETWORK_NAME:-flnxi-registry-net}') expect(existingRegistryCompose).toContain('external: true') expect(existingRegistryCompose).not.toContain('image: ${REGISTRY_IMAGE:-registry:2}') expect(existingRegistryCompose).not.toContain('registry_data:') }) })