From dbc39db1e9c2aaf8bbcb0c4748ab136f6a6f1e73 Mon Sep 17 00:00:00 2001 From: Cory Knox Date: Wed, 5 Jul 2023 11:38:17 -0700 Subject: [PATCH] (#3242) Add a script to run Authenticated tests Add a script to take in a repository and API Key so that the tests can be run against an authenticated end point using Windows Authentication. --- Invoke-AuthedTests.ps1 | 83 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 Invoke-AuthedTests.ps1 diff --git a/Invoke-AuthedTests.ps1 b/Invoke-AuthedTests.ps1 new file mode 100644 index 0000000000..34c7f7dac3 --- /dev/null +++ b/Invoke-AuthedTests.ps1 @@ -0,0 +1,83 @@ +#Requires -Module @{ ModuleName = 'pester'; ModuleVersion = '5.3.1' } +#Requires -RunAsAdministrator +<# + .SYNOPSIS + Prepares a system to test as thought it was test kitchen... +#> +param( + # Path to place Chocolatey test related artifacts. + [string] + $TestPath = "$env:TEMP/chocolateyTests", + + # Indicate to skip packaging all of the tests packages. Useful for running tests after you've performed the tests previously. + [switch] + $SkipPackaging, + + # The remote repository to push packages to and to use during tests. + [string] + $RemoteRepository, + + # API Key used by the remote repository for pushing packages + [string] + $ApiKey +) + +if (-not (Test-Path "$TestPath/packages") -or -not $SkipPackaging) { + if (($null -ne $RemoteRepository) -and ($null -ne $ApiKey)) + $null = New-Item -Path "$TestPath/packages" -ItemType Directory -Force + # Get and pack packages + $nuspecs = Get-ChildItem -Path $PSScriptRoot/src/chocolatey.tests.integration, $PSScriptRoot/tests/packages -Recurse -Include *.nuspec + Get-ChildItem -Path $PSScriptRoot/tests/packages -Recurse -Include *.nupkg | Copy-Item -Destination "$TestPath/packages" + + foreach ($file in $nuspecs) { + Write-Host "Packaging $file" + $null = choco pack $file.FullName --out "$TestPath/packages" + } + + Get-ChildItem -Path $TestPath/packages | ForEach-Object { + choco push $_.FullName -s $RemoteRepository -k $ApiKey --force --allow-unofficial + } +} + +try { + Push-Location $PSScriptRoot/tests + $env:PSModulePath = "$PSScriptRoot/tests;$env:PSModulePath" + + Import-Module $PSScriptRoot\tests\helpers\common-helpers.psm1 -Force + $null = Invoke-Choco source add --name hermes --source $RemoteRepository + Enable-ChocolateyFeature -Name allowGlobalConfirmation + $PesterConfiguration = [PesterConfiguration]@{ + Run = @{ + PassThru = $true + Path = "$PSScriptRoot/tests/chocolatey-tests" + } + TestResult = @{ + Enabled = $true + TestSuiteName = "Pester - Chocolatey" + } + Output = @{ + Verbosity = 'Minimal' + } + Filter = @{ + ExcludeTag = @( + 'Background' + 'Licensed' + 'CCM' + 'WIP' + 'NonAdmin' + 'Internal' + if (-not $env:VM_RUNNING -and -not $env:TEST_KITCHEN) { + 'VMOnly' + } + ) + } + Should = @{ + ErrorAction = 'Continue' + } + } + + Invoke-Pester -Configuration $PesterConfiguration +} +finally { + Pop-Location +}