tests/Test-AgentAdapter.ps1

param(
    [string]$ModuleRoot = (Join-Path (Split-Path -Parent $PSScriptRoot) 'modules')
)

. (Join-Path $PSScriptRoot '_TestHelpers.ps1')
$script:AssertionCount = 0

Import-IscModule -Path (Join-Path $ModuleRoot 'ISC.AgentAdapter.psm1') -Force -Global
Import-IscModule -Path (Join-Path $ModuleRoot 'ISC.EntraSourceSetup.psm1') -Force

$request = [ordered]@{
    schemaVersion = 1
    connector     = 'entra-id'
    config        = [ordered]@{ applicationName = 'Test App' }
}

$hash = Get-AgentRequestHash -Request $request
Assert-True ($hash.Length -eq 64) 'request hash is sha256 hex'

$redacted = ConvertTo-RedactedAgentObject -InputObject ([ordered]@{
    'Client Secret' = 'super-secret-value'
    'Client ID'     = '11111111-2222-3333-4444-555555555555'
})
Assert-Equal '***redacted***' $redacted.'Client Secret' 'secret field redacted'
Assert-True ($redacted.'Client ID' -like '*5555') 'non-secret preserved'

$plan = New-EntraAgentPlan -Request $request
Assert-True ($plan.status -in @('ready', 'needsInput')) 'plan returns structured status'

$tempDir = Join-Path ([System.IO.Path]::GetTempPath()) ("isc-agent-test-$([Guid]::NewGuid().ToString('n'))")
New-Item -ItemType Directory -Path $tempDir -Force | Out-Null
$secretPath = Join-Path $tempDir 'secret.txt'
Set-AgentRestrictedFile -Path $secretPath -Content 'top-secret'
Assert-True (Test-Path -LiteralPath $secretPath) 'restricted secret file written'
$resolved = Resolve-AgentSecretReference -Reference "file:$secretPath"
Assert-Equal 'top-secret' $resolved 'secret reference resolves from file'

$catalog = Invoke-AgentAdapter -Operation Catalog -Connector 'entra-id'
Assert-Equal 'catalog' $catalog.kind 'catalog envelope kind'

Write-Host "PASS ($script:AssertionCount assertions)"