Tests/Integration/Evolution.Tests.ps1
|
# CCF_Evolution_v1.3_Test.ps1 Import-Module "C:\test\ArgosCCF\ArgosCCF.psm1" -Force Import-Module "C:\test\ArgosCCF\Core\Logging.psm1" -Force Import-Module "C:\test\ArgosCCF\Core\Plugins.psm1" -Force Init-CCFLogger -FileName "CCF_v1.3_Evolution.log" Log-Header "--- TEST 1: MANIFIESTOS Y METADATOS LEGACY ---" # Crear plugin con manifiesto $pluginDir = Join-Path (Get-CCFPath -Target "Plugins") "ManifestTest" if (-not (Test-Path $pluginDir)) { New-Item -ItemType Directory -Path $pluginDir } $manifest = @{ Name = "Manifest-Plugin" Version = "2.0.0" Author = "CASIEL-Team" Description = "Plugin verificado via JSON" } $manifest | ConvertTo-Json | Out-File (Join-Path $pluginDir "ccf_plugin.json") -Force "Write-Host 'Plugin con manifiesto ejecutado'" | Out-File (Join-Path $pluginDir "Plugin.ps1") -Force $plugins = Get-CCFPlugins $mPlugin = $plugins | Where-Object { $_.Name -eq "Manifest-Plugin" } if ($mPlugin -and $mPlugin.Version -eq "2.0.0") { Log-Success "Carga de manifiesto JSON verificada." } else { Log-Error "Fallo al cargar manifiesto JSON." } Log-Header "--- TEST 2: VERIFICACION DE FIRMAS ---" $signedScript = Join-Path (Get-CCFPath -Target "Plugins") "SignedPlugin.ps1" "return 'Signed Success'" | Out-File $signedScript -Encoding utf8 -Force $unsignedScript = Join-Path (Get-CCFPath -Target "Plugins") "UnsignedPlugin.ps1" "return 'Unsigned Success'" | Out-File $unsignedScript -Encoding utf8 -Force # Firmar el script $thumbprint = "C88A28333E8E713B6C9E4CC7C613F200CAC8C360" $cert = Get-ChildItem Cert:\CurrentUser\My | Where-Object Thumbprint -eq $thumbprint if ($cert) { Set-AuthenticodeSignature -FilePath $signedScript -Certificate $cert -TimestampServer "http://timestamp.digicert.com" -ErrorAction SilentlyContinue if ($null -eq $null) { # Just to avoid empty blocks if needed Set-AuthenticodeSignature -FilePath $signedScript -Certificate $cert } Start-Sleep -Seconds 1 # Dar tiempo a que la firma se asiente $check = Get-AuthenticodeSignature $signedScript Log-Info "Estado de firma tras Set: $($check.Status)" } # 1. Probar con RequireSignedPlugins = $false (Por defecto) $sObj = [PSCustomObject]@{ Name = "Signed"; Path = $signedScript } $uObj = [PSCustomObject]@{ Name = "Unsigned"; Path = $unsignedScript } Log-Info "Probando ejecucion SIN restriccion de firma..." $resU = Invoke-CCFPlugin -Plugin $uObj if ($resU -eq "Unsigned Success") { Log-Success "Ejecucion sin firma permitida (Correcto)." } # 2. Probar con RequireSignedPlugins = $true # Simulamos config inyectada o modificada para el test # En una app real esto vendria de ccf_core.json function Get-CCFConfig { return @{ Security = @{ RequireSignedPlugins = $true } Logging = @{ EnableJson = $false } } } Log-Info "Probando ejecucion CON restriccion de firma..." $resU2 = Invoke-CCFPlugin -Plugin $uObj if ($null -eq $resU2) { Log-Success "Bloqueo de script NO firmado verificado." } else { Log-Error "FALLO: Se permitio la ejecucion de un script NO firmado." } $resS = Invoke-CCFPlugin -Plugin $sObj if ($resS -eq "Signed Success") { Log-Success "Ejecucion de script FIRMADO permitida." } Log-Header "--- VERIFICACION v1.3 COMPLETADA ---" |