52 lines
3.3 KiB
JavaScript
52 lines
3.3 KiB
JavaScript
import assert from 'node:assert/strict'
|
|
import { readFileSync } from 'node:fs'
|
|
import test from 'node:test'
|
|
|
|
const config = readFileSync(new URL('../../nginx/default.conf.template', import.meta.url), 'utf8')
|
|
const testCompose = readFileSync(new URL('../../docker-compose.test.yml', import.meta.url), 'utf8')
|
|
const developmentCompose = readFileSync(new URL('../../docker-compose.development.yml', import.meta.url), 'utf8')
|
|
const jenkinsfile = readFileSync(new URL('../../Jenkinsfile', import.meta.url), 'utf8')
|
|
const dockerfile = readFileSync(new URL('../../Dockerfile', import.meta.url), 'utf8')
|
|
|
|
test('allows 50 MiB uploads with multipart overhead through both API proxies', () => {
|
|
assert.match(config, /location \/api\/ \{[\s\S]*?client_max_body_size 55m;/)
|
|
assert.match(config, /location \/overseas-api\/ \{[\s\S]*?client_max_body_size 55m;/)
|
|
assert.equal(config.match(/client_max_body_size 55m;/g)?.length, 2)
|
|
})
|
|
|
|
test('routes domestic and overseas browser APIs to their test gateways without duplicate api prefixes', () => {
|
|
assert.match(testCompose, /API_UPSTREAM: "http:\/\/test-api-cn\.buggoglobal\.com"/)
|
|
assert.match(testCompose, /OVERSEAS_API_UPSTREAM: "http:\/\/test-api-global\.buggoglobal\.com"/)
|
|
assert.match(testCompose, /VITE_ADMIN_WEB_ORIGIN: "\$\{VITE_ADMIN_WEB_ORIGIN:-https:\/\/test-admin\.buggoglobal\.com\}"/)
|
|
assert.match(config, /location \/overseas-api\/ \{[\s\S]*?rewrite \^\/overseas-api\/\(\.\*\)\$ \/api\/\$1 break;[\s\S]*?proxy_pass \$\{OVERSEAS_API_UPSTREAM\};/)
|
|
assert.match(config, /proxy_set_header Host \$proxy_host;/)
|
|
assert.doesNotMatch(config, /\/api\/api/)
|
|
})
|
|
|
|
test('connects the development client proxy to both development gateways', () => {
|
|
assert.match(developmentCompose, /API_UPSTREAM: "http:\/\/firstleg-development-gateway:9000"/)
|
|
assert.match(developmentCompose, /OVERSEAS_API_UPSTREAM: "http:\/\/firstleg-development-gateway-overseas:9300"/)
|
|
assert.match(developmentCompose, /- development-backend/)
|
|
assert.match(developmentCompose, /- development-overseas-backend/)
|
|
assert.match(developmentCompose, /development-overseas-backend:[\s\S]*?external: true[\s\S]*?name: firstleg-development-overseas-network/)
|
|
assert.doesNotMatch(developmentCompose, /test-api|prod(?:uction)?/i)
|
|
})
|
|
|
|
test('runs each deployment on its target node without controller-local SSH files', () => {
|
|
assert.match(jenkinsfile, /env\.JOB_BASE_NAME\?\.endsWith\('-dev'\) \? 'java-dev' : 'java-test'/)
|
|
assert.match(jenkinsfile, /DEVELOPMENT_COMPOSE_PROJECT = 'client-web'/)
|
|
assert.match(jenkinsfile, /docker compose -p "\$DEVELOPMENT_COMPOSE_PROJECT" -f "\$DEVELOPMENT_COMPOSE_FILE" up -d/)
|
|
assert.doesNotMatch(jenkinsfile, /\/var\/jenkins_home\/\.ssh|docker save|\bssh\b/)
|
|
})
|
|
|
|
test('uses authenticated internal base images in CI', () => {
|
|
assert.match(dockerfile, /ARG NODE_IMAGE=node:22-alpine/)
|
|
assert.match(dockerfile, /ARG NGINX_IMAGE=nginx:1\.27-alpine/)
|
|
assert.match(dockerfile, /FROM \$\{NODE_IMAGE\} AS build/)
|
|
assert.match(dockerfile, /FROM \$\{NGINX_IMAGE\}/)
|
|
assert.match(jenkinsfile, /NODE_BASE_IMAGE = '172\.31\.198\.7:10082\/java-project\/node:22-alpine'/)
|
|
assert.match(jenkinsfile, /NGINX_BASE_IMAGE = '172\.31\.198\.7:10082\/java-project\/nginx:1\.27-alpine'/)
|
|
assert.match(jenkinsfile, /withCredentials\(\[usernamePassword\(/)
|
|
assert.match(jenkinsfile, /export DOCKER_CONFIG="\$\{WORKSPACE\}@tmp\/docker-auth"/)
|
|
})
|