diff --git a/.github/workflows/BuildAndTest.yml b/.github/workflows/BuildAndTest.yml index a7eaf88..4637eca 100644 --- a/.github/workflows/BuildAndTest.yml +++ b/.github/workflows/BuildAndTest.yml @@ -139,7 +139,7 @@ jobs: $OidcTokenResponse = Invoke-RestMethod @Params $OidcToken = $OidcTokenResponse.value - Import-Module ./output/AzAuth + Import-Module ./output/module/AzAuth Get-AzToken -WorkloadIdentity -ExternalToken $OidcToken -TenantId $env:TENANT_ID -ClientId $env:CLIENT_ID -ErrorAction Stop | Out-Null Write-Host "Successfully retrieved token for Workload Identity." diff --git a/.vscode/launch.json b/.vscode/launch.json index e1fe9a4..3827078 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -14,7 +14,7 @@ "-NoExit", "-NoProfile", "-Command", - "Import-Module ${workspaceFolder}/output/AzAuth -Verbose", + "Import-Module ${workspaceFolder}/output/module/AzAuth -Verbose", ], "cwd": "${workspaceFolder}", "stopAtEntry": false, diff --git a/tests/cases/TestCases.ps1 b/tests/cases/TestCases.ps1 index 15f36f1..16e52ac 100644 --- a/tests/cases/TestCases.ps1 +++ b/tests/cases/TestCases.ps1 @@ -84,19 +84,8 @@ function Get-TestCaseByType { # } # } if ('NonInteractiveTests' -in $CaseType) { - # Create or resolve the PEM file path - $PemPath = try { - (New-Item -Name 'azauth.pem' -Value @" -$env:CLIENT_CERTIFICATE -$env:CLIENT_CERTIFICATE_PRIVATE_KEY -"@).FullName - } - catch { - (Resolve-Path 'azauth.pem').Path - } - $TestCases += [ordered]@{ - 'Client Secret' = @{ + 'Client Secret' = @{ Tenant = $env:TENANT_ID ClientId = $env:CLIENT_ID ClientSecret = $env:CLIENT_SECRET @@ -104,21 +93,41 @@ $env:CLIENT_CERTIFICATE_PRIVATE_KEY Scope = @('.default') ExpectedScope = 'https://management.azure.com/.default' } - 'Certificate Object' = @{ - Tenant = $env:TENANT_ID - ClientId = $env:CLIENT_ID - ClientCertificate = New-ClientCertificateFromPem -Certificate $env:CLIENT_CERTIFICATE -PrivateKey $env:CLIENT_CERTIFICATE_PRIVATE_KEY - Resource = 'https://graph.microsoft.com' - Scope = @('.default') - ExpectedScope = 'https://graph.microsoft.com/.default' + } + + $HasCertificateMaterial = + -not [string]::IsNullOrWhiteSpace($env:CLIENT_CERTIFICATE) -and + -not [string]::IsNullOrWhiteSpace($env:CLIENT_CERTIFICATE_PRIVATE_KEY) + + if ($HasCertificateMaterial) { + # Create or resolve the PEM file path. + $PemPath = try { + (New-Item -Name 'azauth.pem' -Value @" +$env:CLIENT_CERTIFICATE +$env:CLIENT_CERTIFICATE_PRIVATE_KEY +"@).FullName + } + catch { + (Resolve-Path 'azauth.pem').Path } - 'Certificate Path' = @{ - Tenant = $env:TENANT_ID - ClientId = $env:CLIENT_ID - ClientCertificatePath = $PemPath - Resource = 'https://storage.azure.com' - Scope = @('.default') - ExpectedScope = 'https://storage.azure.com/.default' + + $TestCases += [ordered]@{ + 'Certificate Object' = @{ + Tenant = $env:TENANT_ID + ClientId = $env:CLIENT_ID + ClientCertificate = New-ClientCertificateFromPem -Certificate $env:CLIENT_CERTIFICATE -PrivateKey $env:CLIENT_CERTIFICATE_PRIVATE_KEY + Resource = 'https://graph.microsoft.com' + Scope = @('.default') + ExpectedScope = 'https://graph.microsoft.com/.default' + } + 'Certificate Path' = @{ + Tenant = $env:TENANT_ID + ClientId = $env:CLIENT_ID + ClientCertificatePath = $PemPath + Resource = 'https://storage.azure.com' + Scope = @('.default') + ExpectedScope = 'https://storage.azure.com/.default' + } } } }