Public/Add-EntraIDFederatedCredentialTokenProfile.tests.ps1
|
BeforeAll { $Script:Module = Import-Module "$PSScriptRoot/../" -Force -PassThru $Script:TenantId = "12345678-1234-1234-1234-123456789012" $Script:ClientIdForCredItself = "98fe3f87-d6ce-43b7-96d1-ddd2eb4fd2f1" $Script:ClientIdWithFedCred = "bb3d51a9-8f6e-4f51-b52b-9c284bfe3120" } Describe "Add-EntraIDFederatedCredentialTokenProfile.1" -Tag Mocked, Dev { BeforeAll { Mock -ModuleName $Script:Module.Name -CommandName Invoke-RestMethod -ParameterFilter { $Uri -like "https://login.microsoftonline.com/$($Script:TenantId)/oauth2/v2.0/token" } -MockWith { Write-Verbose "Mocked Invoke-RestMethod called with Uri: $Uri" -Verbose $ClientId = $Body["client_id"] $scope = $Body["scope"] ?? "https://graph.microsoft.com/.default" if ($Body["client_assertion"]) { $CA = $Body["client_assertion"] | ConvertFrom-EntraIDAccessToken -AsHashTable if ($CA.payload.aud -ne "fb60f99c-7a34-4190-8149-302f77469936") { throw "Invalid audience $($CA.payload.aud) in client_assertion" } } $aud = ($scope.Replace("/.default", "")) -replace "api://AzureADTokenExchange", "fb60f99c-7a34-4190-8149-302f77469936" return @{ access_token = New-DummyJWT -Aud $aud -Iss "https://sts.windows.net/$($Script:TenantId)/" -Sub $ClientId -Verbose expires_in = "3599" expires_on = (Get-Date -Date (Get-Date).AddHours(1) -UFormat %s) } } } It "Calls the Add-EntraIDFederatedCredentialTokenProfile function without throwing an error" { { Add-EntraIDClientSecretAccessTokenProfile -Name "CredItself" -ClientId $Script:ClientIdForCredItself -TenantId $Script:TenantId -ClientSecret (ConvertTo-SecureString -String "dummy" -AsPlainText -Force) -Scope "api://AzureADTokenExchange/.default" } | Should -Not -Throw { Add-EntraIDFederatedCredentialTokenProfile -Name "Fedprod" -Scope "https://graph.microsoft.com/.default" -ClientId $Script:ClientIdWithFedCred -TenantId $Script:TenantId -FederatedAccessTokenProfile "CredItself" } | Should -Not -Throw $AccessToken = Get-EntraIDAccessToken -Profile "Fedprod" | ConvertFrom-EntraIDAccessToken -AsHashTable $AccessToken.Payload.iss | Should -BeLike "*$($Script:TenantId)*" $AccessToken.Payload.aud | Should -Be "https://graph.microsoft.com" } } |