Files
octokit.net/script/configure-integration-tests.ps1
2023-06-16 12:26:39 -05:00

124 lines
4.1 KiB
PowerShell

function SetVariable([string]$key, [string]$value)
{
[environment]::SetEnvironmentVariable($key, $value, "User")
[environment]::SetEnvironmentVariable($key, $value)
}
function AskYesNoQuestion([string]$question, [string]$key)
{
$answer = Read-Host -Prompt ($question + " Press Y to set this, otherwise we'll skip it")
if ($answer -eq "Y")
{
SetVariable $key "YES"
}
else
{
SetVariable $key $null
}
Write-Host
return ($answer -eq "Y")
}
function VerifyEnvironmentVariable([string]$friendlyName, [string]$key, [bool]$optional = $false)
{
if ($optional -eq $true)
{
$label = "(optional)"
}
else
{
$label = "(required)"
}
$existing_value = [environment]::GetEnvironmentVariable($key,"User")
if ($existing_value -eq $null)
{
$value = Read-Host -Prompt "Set the $friendlyName to use for the integration tests $label"
SetVariable $key $value
}
else
{
Write-Host "$existing_value found as the configured $friendlyName"
if ($optional -eq $true)
{
$clear = Read-Host -Prompt 'Want to remove or change this optional value, press Y'
if ($clear -eq "Y")
{
$reset = Read-Host -Prompt "Press R to remove and Press C to change the value, otherwise we'll move on"
if ($reset -eq "C")
{
$value = Read-Host -Prompt "Change the $friendlyName to use for the integration tests"
SetVariable $key $value
}
elseif ($reset -eq "R")
{
SetVariable $key $null
}
}
}
else
{
$reset = Read-Host -Prompt "Press Y to change this value, otherwise we'll move on "
if ($reset -eq "Y")
{
$value = Read-Host -Prompt "Change the $friendlyName to use for the integration tests"
SetVariable $key $value
}
}
}
Write-Host
}
Write-Host
Write-Warning "BIG FREAKING WARNING!!!!!"
Write-Warning "You should use a test account when running the Octokit integration tests!"
Write-Host
Write-Host
VerifyEnvironmentVariable "test account name" "OCTOKIT_GITHUBUSERNAME"
VerifyEnvironmentVariable "test account password" "OCTOKIT_GITHUBPASSWORD" $true
VerifyEnvironmentVariable "test account OAuth token" "OCTOKIT_OAUTHTOKEN"
if (AskYesNoQuestion "Some tests require a second test account, do you want to set one up?" "OCTOKIT_PRIVATEREPOSITORIES")
{
VerifyEnvironmentVariable "Second test account name" "OCTOKIT_GITHUBUSERNAME_2"
VerifyEnvironmentVariable "Second account password" "OCTOKIT_GITHUBPASSWORD_2"
}
AskYesNoQuestion "Do you have private repositories associated with your test account?" "OCTOKIT_PRIVATEREPOSITORIES" | Out-Null
VerifyEnvironmentVariable "organization name" "OCTOKIT_GITHUBORGANIZATION" $true
VerifyEnvironmentVariable "Override GitHub URL" "OCTOKIT_CUSTOMURL" $true
VerifyEnvironmentVariable "application ClientID" "OCTOKIT_CLIENTID" $true
VerifyEnvironmentVariable "application Secret" "OCTOKIT_CLIENTSECRET" $true
if (AskYesNoQuestion "Do you wish to setup GitHubApps integration test settings?" "OCTOKIT_GITHUBAPP_ENABLED")
{
VerifyEnvironmentVariable "GitHub App ID" "OCTOKIT_GITHUBAPP_ID"
VerifyEnvironmentVariable "GitHub App SLUG" "OCTOKIT_GITHUBAPP_SLUG"
VerifyEnvironmentVariable "GitHub App Pem File" "OCTOKIT_GITHUBAPP_PEMFILE"
}
if (AskYesNoQuestion "Do you wish to enable GitHub Enterprise (GHE) Integration Tests?" "OCTOKIT_GHE_ENABLED")
{
VerifyEnvironmentVariable "GitHub Enterprise account name" "OCTOKIT_GHE_USERNAME"
VerifyEnvironmentVariable "GitHub Enterprise account password" "OCTOKIT_GHE_PASSWORD" $true
VerifyEnvironmentVariable "GitHub Enterprise Management Console password" "OCTOKIT_GHE_CONSOLEPASSWORD" $true
VerifyEnvironmentVariable "GitHub Enterprise OAuth token" "OCTOKIT_GHE_OAUTHTOKEN"
VerifyEnvironmentVariable "GitHub Enterprise organization name" "OCTOKIT_GHE_ORGANIZATION" $true
VerifyEnvironmentVariable "GitHub Enterprise URL" "OCTOKIT_GHE_URL" $true
VerifyEnvironmentVariable "GitHub Enterprise application ClientID" "OCTOKIT_GHE_CLIENTID" $true
VerifyEnvironmentVariable "GitHub Enterprise application Secret" "OCTOKIT_GHE_CLIENTSECRET" $true
}
VerifyEnvironmentVariable "Repository with codespaces" "OCTOKIT_REPOSITORY_WITH_CODESPACES" $true