chore: establish local platform baseline
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$PSNativeCommandUseErrorActionPreference = $true
|
||||
|
||||
$projectRoot = Split-Path -Parent $PSScriptRoot
|
||||
Set-Location -LiteralPath $projectRoot
|
||||
$tokenUrl = 'http://localhost:58180/realms/voice-local/protocol/openid-connect/token'
|
||||
|
||||
function Get-LocalAccessToken([string]$Username) {
|
||||
$response = Invoke-RestMethod -Method Post -Uri $tokenUrl `
|
||||
-ContentType 'application/x-www-form-urlencoded' `
|
||||
-Body @{
|
||||
grant_type = 'password'
|
||||
client_id = 'voice-platform-web'
|
||||
username = $Username
|
||||
password = 'LocalOnly123!'
|
||||
scope = 'openid'
|
||||
}
|
||||
return $response.access_token
|
||||
}
|
||||
|
||||
$expectedRoles = @{ owner = 'owner'; editor = 'editor'; outsider = 'viewer' }
|
||||
foreach ($username in $expectedRoles.Keys) {
|
||||
$accessToken = Get-LocalAccessToken -Username $username
|
||||
$currentUser = Invoke-RestMethod -Uri 'http://localhost:58080/api/v1/me' `
|
||||
-Headers @{ Authorization = "Bearer $accessToken" }
|
||||
$role = $currentUser.data.accounts[0].household_memberships[0].role
|
||||
if ($role -ne $expectedRoles[$username]) {
|
||||
throw "用户 $username 的角色是 $role,预期为 $($expectedRoles[$username])。"
|
||||
}
|
||||
Write-Host "OIDC映射通过:$username -> $role"
|
||||
}
|
||||
|
||||
try {
|
||||
Invoke-WebRequest -Uri 'http://localhost:58080/api/v1/me' -ErrorAction Stop | Out-Null
|
||||
throw '未登录请求不应成功。'
|
||||
} catch {
|
||||
if ([int]$_.Exception.Response.StatusCode -ne 401) { throw }
|
||||
Write-Host '未登录请求正确返回401。'
|
||||
}
|
||||
|
||||
$env:TEST_DATABASE_URL = 'postgres://voice:voice_dev_only@localhost:55432/voice_platform?sslmode=disable'
|
||||
go test ./internal/identity ./internal/idempotency ./internal/audit ./internal/outbox -count=1
|
||||
Write-Host '身份、租户隔离、幂等、审计和outbox集成测试通过。'
|
||||
Reference in New Issue
Block a user