Test-Local.ps1
|
# Локальное тестирование модуля CPCertMigrator # Импорт модуля Import-Module .\CPCertMigrator.psd1 -Force # Проверка функций Write-Host "=== Доступные функции ===" -ForegroundColor Cyan Get-Command -Module CPCertMigrator # Проверка манифеста Write-Host "`n=== Проверка манифеста ===" -ForegroundColor Cyan Test-ModuleManifest .\CPCertMigrator.psd1 # Тест основных функций (безопасно) Write-Host "`n=== Тест просмотра сертификатов ===" -ForegroundColor Cyan try { $certs = Get-CryptoProCertificates -Scope CurrentUser -ErrorAction Stop Write-Host "Найдено сертификатов: $($certs.Count)" -ForegroundColor Green } catch { Write-Host "Ошибка: $($_.Exception.Message)" -ForegroundColor Red } # Тест интерактивного меню (закомментировано для автоматического запуска) # Write-Host "`n=== Запуск интерактивного меню ===" -ForegroundColor Cyan # Start-CryptoProCertMigrator Write-Host "`nТестирование завершено!" -ForegroundColor GreenndColor Green $functions | ForEach-Object { Write-Host " - $($_.Name)" -ForegroundColor Gray } # Проверка манифеста try { $manifest = Test-ModuleManifest .\CPCertMigrator.psd1 Write-Host "✅ Манифест валиден (версия: $($manifest.Version))" -ForegroundColor Green } catch { Write-Host "❌ Ошибка манифеста: $($_.Exception.Message)" -ForegroundColor Red } # Проверка прав администратора $isAdmin = Test-AdminRights Write-Host "✅ Права администратора: $(if($isAdmin){'Да'}else{'Нет'})" -ForegroundColor $(if($isAdmin){'Green'}else{'Yellow'}) # 2. ТЕСТ ПРОСМОТРА СЕРТИФИКАТОВ Write-Host "`n2. Тест просмотра сертификатов..." -ForegroundColor Yellow try { $userCerts = Get-CryptoProCertificates -Scope CurrentUser -ErrorAction Stop Write-Host "✅ CurrentUser: найдено $($userCerts.Count) сертификатов" -ForegroundColor Green if ($userCerts.Count -gt 0) { $expiringSoon = $userCerts | Where-Object { $_.DaysRemaining -lt 30 } if ($expiringSoon.Count -gt 0) { Write-Host "⚠️ Истекают скоро: $($expiringSoon.Count) сертификатов" -ForegroundColor Yellow } } } catch { Write-Host "❌ Ошибка CurrentUser: $($_.Exception.Message)" -ForegroundColor Red } if ($isAdmin) { try { $machineCerts = Get-CryptoProCertificates -Scope LocalMachine -ErrorAction Stop Write-Host "✅ LocalMachine: найдено $($machineCerts.Count) сертификатов" -ForegroundColor Green } catch { Write-Host "❌ Ошибка LocalMachine: $($_.Exception.Message)" -ForegroundColor Red } } else { Write-Host "⚠️ LocalMachine: пропущено (нет прав администратора)" -ForegroundColor Yellow } # 3. ТЕСТ ФИЛЬТРАЦИИ Write-Host "`n3. Тест фильтрации..." -ForegroundColor Yellow try { $filtered = Get-CryptoProCertificates -Scope CurrentUser -MinDaysRemaining 365 Write-Host "✅ Фильтр по сроку (>365 дней): $($filtered.Count) сертификатов" -ForegroundColor Green } catch { Write-Host "❌ Ошибка фильтрации: $($_.Exception.Message)" -ForegroundColor Red } # 4. ПОЛНОЕ ТЕСТИРОВАНИЕ (с созданием тестовых файлов) if ($FullTest) { Write-Host "`n4. Полное тестирование (с файлами)..." -ForegroundColor Yellow # Создаем тестовую папку if (-not (Test-Path $TestCertPath)) { New-Item -ItemType Directory -Path $TestCertPath -Force | Out-Null } # Тест WhatIf экспорта try { Export-CryptoProCertificates -Scope CurrentUser -ExportFolder $TestCertPath -Password "TestPass123" -WhatIf Write-Host "✅ WhatIf экспорт: успешно" -ForegroundColor Green } catch { Write-Host "❌ WhatIf экспорт: $($_.Exception.Message)" -ForegroundColor Red } # Реальный экспорт (если есть сертификаты) if ($userCerts.Count -gt 0) { $confirm = Read-Host "Выполнить реальный экспорт сертификатов? (y/N)" if ($confirm -eq 'y' -or $confirm -eq 'Y') { try { Export-CryptoProCertificates -Scope CurrentUser -ExportFolder $TestCertPath -Password "TestPass123" -ShowProgress Write-Host "✅ Реальный экспорт: успешно" -ForegroundColor Green # Проверяем созданные файлы $pfxFiles = Get-ChildItem -Path $TestCertPath -Filter *.pfx Write-Host "✅ Создано PFX файлов: $($pfxFiles.Count)" -ForegroundColor Green # Тест валидации PFX $validFiles = 0 $pfxFiles | ForEach-Object { if (Test-PfxFile -FilePath $_.FullName -Password "TestPass123") { $validFiles++ } } Write-Host "✅ Валидных PFX файлов: $validFiles" -ForegroundColor Green } catch { Write-Host "❌ Реальный экспорт: $($_.Exception.Message)" -ForegroundColor Red } } } # Очистка тестовых файлов $cleanup = Read-Host "Удалить тестовые файлы? (Y/n)" if ($cleanup -ne 'n' -and $cleanup -ne 'N') { Remove-Item -Path $TestCertPath -Recurse -Force -ErrorAction SilentlyContinue Write-Host "✅ Тестовые файлы удалены" -ForegroundColor Green } } # 5. ИНТЕРАКТИВНОЕ ТЕСТИРОВАНИЕ if ($InteractiveTest) { Write-Host "`n5. Интерактивное тестирование..." -ForegroundColor Yellow Write-Host "Запуск интерактивного меню (нажмите 0 для выхода)" -ForegroundColor Gray Start-CryptoProCertMigrator } # ИТОГИ Write-Host "`n=== ИТОГИ ТЕСТИРОВАНИЯ ===" -ForegroundColor Cyan Write-Host "Модуль: CPCertMigrator v$($manifest.Version)" -ForegroundColor White Write-Host "Функций: $($functions.Count)" -ForegroundColor White Write-Host "Сертификатов CurrentUser: $($userCerts.Count)" -ForegroundColor White if ($isAdmin -and $machineCerts) { Write-Host "Сертификатов LocalMachine: $($machineCerts.Count)" -ForegroundColor White } Write-Host "Статус: $(if($functions.Count -eq 4){'✅ ВСЕ ТЕСТЫ ПРОЙДЕНЫ'}else{'⚠️ ЕСТЬ ПРОБЛЕМЫ'})" -ForegroundColor $(if($functions.Count -eq 4){'Green'}else{'Yellow'}) Write-Host "`nДля полного тестирования запустите:" -ForegroundColor Gray Write-Host ".\Test-Local.ps1 -FullTest -InteractiveTest" -ForegroundColor White |