tests/Test-IWComposite.ps1
|
#Requires -Version 7 $ErrorActionPreference = 'Stop' . (Join-Path $PSScriptRoot '_TestHelpers.ps1') $wizardRoot = Split-Path $PSScriptRoot -Parent Import-Module (Join-Path $wizardRoot 'modules/IW.Core.psm1') -Force Import-Module (Join-Path $wizardRoot 'modules/IW.Render.psm1') -Force Import-Module (Join-Path $wizardRoot 'modules/ISC.OperatorConsole.psm1') -Force Import-Module (Join-Path $wizardRoot 'modules/Definitions/Aws.Connector.psm1') -Force Import-Module (Join-Path $wizardRoot 'modules/Definitions/Aws.Entro.psm1') -Force Register-IntegrationWizardPlatform -Name 'AWS' -Title 'AWS' -CoreOptions @('SaaSConnector', 'Entro') -CliName 'aws' ` -EntroCompanions @{ SaaSConnector = @{ EntroSwitch = 'Entro' } } Register-AwsConnectorDefinitions Register-AwsEntroDefinitions $ctx = @{ SaaSConnector = $true Entro = $true IscExternalId = '11111111-2222-3333-4444-555555555555' EntroExternalId = '22222222-3333-4444-5555-666666666666' Method = 'AssumeRole' Action = 'BuildRequirements' NonInteractive = $true } $plan = Resolve-IntegrationWizardPlan -Platform 'AWS' -Context $ctx Assert-True ($plan.IsComposite) 'composite plan for AWS SaaS + Entro' Assert-True ($plan.Title -match '\+') 'composite title joins member titles' $tempRoot = if ($env:TEMP) { $env:TEMP } elseif ($env:TMPDIR) { $env:TMPDIR } else { '/tmp' } $outDir = Join-Path $tempRoot "iw-composite-test-$(Get-Random)" New-Item -ItemType Directory -Path $outDir -Force | Out-Null $ctx.OutputDirectory = $outDir try { New-IntegrationWizardRequirementsDoc -Definition $plan -Context $ctx -OutputPath (Join-Path $outDir 'aws-composite-requirements.md') $md = Get-Content (Join-Path $outDir 'aws-composite-requirements.md') -Raw Assert-True ($md -match 'Entro AWS integration') 'requirements doc includes Entro section heading' Assert-True ($md -match 'SaaS') 'requirements doc includes SaaS connector section' $stepHeadings = ([regex]::Matches($md, '^#### \d+\.', [System.Text.RegularExpressions.RegexOptions]::Multiline)).Count Assert-True ($stepHeadings -ge 2) 'requirements doc lists steps from both members' } finally { Remove-Item -LiteralPath $outDir -Recurse -Force -ErrorAction SilentlyContinue } Write-Host 'PASS (6 assertions)' |