94 lines
3.7 KiB
PowerShell
94 lines
3.7 KiB
PowerShell
#Requires -Version 5.1
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
. (Join-Path $scriptDir "Initialize-PublicApiBaseUrl.ps1")
|
|
|
|
$tempDir = Join-Path ([System.IO.Path]::GetTempPath()) ("easyai-public-url-" + [Guid]::NewGuid())
|
|
[System.IO.Directory]::CreateDirectory($tempDir) | Out-Null
|
|
|
|
function Write-TestEnv {
|
|
param([string]$Name, [string[]]$Lines)
|
|
$path = Join-Path $tempDir $Name
|
|
[System.IO.File]::WriteAllText($path, ($Lines -join "`r`n") + "`r`n", [System.Text.UTF8Encoding]::new($false))
|
|
return $path
|
|
}
|
|
|
|
function Assert-PublicUrl {
|
|
param([string]$Path, [string]$Expected)
|
|
$content = Get-Content $Path -Raw -Encoding UTF8
|
|
$actual = Get-PublicEnvValue $content "CONFIG_PUBLIC_API_BASE_URL"
|
|
if ($actual -ne $Expected) { throw "Expected '$Expected', got '$actual'" }
|
|
}
|
|
|
|
try {
|
|
$existing = Write-TestEnv "existing.env" @(
|
|
"CONFIG_PUBLIC_API_BASE_URL=https://existing.example.com:8443/api",
|
|
"NUXT_PUBLIC_BASE_APIURL=/api"
|
|
)
|
|
Initialize-PublicApiBaseUrl -Path $existing -Mode upgrade
|
|
Assert-PublicUrl $existing "https://existing.example.com:8443/api"
|
|
|
|
$absolute = Write-TestEnv "absolute.env" @(
|
|
"CONFIG_PUBLIC_API_BASE_URL=",
|
|
"NUXT_PUBLIC_BASE_APIURL=http://10.0.0.8:4100"
|
|
)
|
|
Initialize-PublicApiBaseUrl -Path $absolute -Mode upgrade
|
|
Assert-PublicUrl $absolute "http://10.0.0.8:4100"
|
|
|
|
$websocket = Write-TestEnv "websocket.env" @(
|
|
"CONFIG_PUBLIC_API_BASE_URL=",
|
|
"NUXT_PUBLIC_BASE_APIURL=/api",
|
|
"NUXT_PUBLIC_BASE_SOCKETURL=wss://demo.example.com/socket.io"
|
|
)
|
|
Initialize-PublicApiBaseUrl -Path $websocket -Mode upgrade
|
|
Assert-PublicUrl $websocket "https://demo.example.com/api"
|
|
|
|
$securityOrigin = Write-TestEnv "security-origin.env" @(
|
|
"CONFIG_PUBLIC_API_BASE_URL=",
|
|
"NUXT_PUBLIC_BASE_APIURL=/api",
|
|
"NUXT_PUBLIC_BASE_SOCKETURL=",
|
|
"CONFIG_SECURITY_ORIGIN=http://demo.example.com,https://demo.example.com"
|
|
)
|
|
Initialize-PublicApiBaseUrl -Path $securityOrigin -Mode upgrade
|
|
Assert-PublicUrl $securityOrigin "http://demo.example.com/api"
|
|
|
|
$fileOverride = Write-TestEnv "file-override.env" @(
|
|
"CONFIG_PUBLIC_API_BASE_URL=",
|
|
"DEPLOY_PUBLIC_API_BASE_URL=https://proxy.example.com:9443/custom-api",
|
|
"NUXT_PUBLIC_BASE_APIURL=/api"
|
|
)
|
|
Initialize-PublicApiBaseUrl -Path $fileOverride -Mode upgrade
|
|
Assert-PublicUrl $fileOverride "https://proxy.example.com:9443/custom-api"
|
|
|
|
$explicitOverride = Write-TestEnv "explicit-override.env" @(
|
|
"CONFIG_PUBLIC_API_BASE_URL=",
|
|
"NUXT_PUBLIC_BASE_APIURL=/api"
|
|
)
|
|
Initialize-PublicApiBaseUrl `
|
|
-Path $explicitOverride `
|
|
-Mode configure `
|
|
-Override "http://192.168.1.20:4567"
|
|
Assert-PublicUrl $explicitOverride "http://192.168.1.20:4567"
|
|
|
|
$invalid = Write-TestEnv "invalid.env" @(
|
|
"CONFIG_PUBLIC_API_BASE_URL=ftp://bad.example.com/api",
|
|
"NUXT_PUBLIC_BASE_APIURL=https://good.example.com/api"
|
|
)
|
|
$blocked = $false
|
|
try { Initialize-PublicApiBaseUrl -Path $invalid -Mode upgrade } catch { $blocked = $true }
|
|
if (-not $blocked) { throw "Invalid existing CONFIG_PUBLIC_API_BASE_URL must block startup" }
|
|
|
|
$unresolved = Write-TestEnv "unresolved.env" @(
|
|
"CONFIG_PUBLIC_API_BASE_URL=",
|
|
"NUXT_PUBLIC_BASE_APIURL=/api"
|
|
)
|
|
$blocked = $false
|
|
try { Initialize-PublicApiBaseUrl -Path $unresolved -Mode upgrade } catch { $blocked = $true }
|
|
if (-not $blocked) { throw "Unresolved public API URL must block startup" }
|
|
|
|
Write-Host "Public API base URL PowerShell tests passed" -ForegroundColor Green
|
|
} finally {
|
|
Remove-Item $tempDir -Recurse -Force -ErrorAction SilentlyContinue
|
|
}
|