diff --git a/test/module/Entra/Integration/Add-EntraGroupMember.Tests.ps1 b/test/module/Entra/Integration/Add-EntraGroupMember.Tests.ps1 new file mode 100644 index 0000000000..87c2f031b8 --- /dev/null +++ b/test/module/Entra/Integration/Add-EntraGroupMember.Tests.ps1 @@ -0,0 +1,44 @@ +Describe "The Add-EntraGroupMember command executing unmocked" { + + Context "When getting user and group" { + BeforeAll { + $testReportPath = join-path $psscriptroot "\setenv.ps1" + Import-Module -Name $testReportPath + $appId = $env:TEST_APPID + $tenantId = $env:TEST_TENANTID + $cert = $env:CERTIFICATETHUMBPRINT + Connect-Entra -TenantId $tenantId -AppId $appId -CertificateThumbprint $cert + + $thisTestInstanceId = New-Guid | select -expandproperty guid + $testName = 'SimpleTest' + $thisTestInstanceId + + #create test user + $PasswordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile + $PasswordProfile.Password = "Pass@1234" + $global:newUser = New-EntraUser -AccountEnabled $true -DisplayName $testName -PasswordProfile $PasswordProfile -MailNickName $testName -UserPrincipalName "SimpleTestUser@M365x99297270.OnMicrosoft.com" + + #create test group + $global:newGroup = New-EntraGroup -DisplayName $testName -MailEnabled $false -SecurityEnabled $true -MailNickName $testName + } + + It "should successfully add user to new created group" { + $user = Get-EntraUser -ObjectId $newUser.Id + $user.Id | Should -Be $newUser.Id + $user.DisplayName | Should -Be $testName + + $group = Get-EntraGroup -ObjectId $newGroup.Id + $group.Id | Should -Be $newGroup.Id + $group.DisplayName | Should -Be $testName + + Add-EntraGroupMember -ObjectId $group.Id -RefObjectId $user.Id + $result = Get-EntraGroupMember -ObjectId $group.Id + $result.Id | Should -Contain $user.Id + } + + AfterAll { + Remove-EntraGroupMember -ObjectId $newGroup.Id -MemberId $newUser.Id + Remove-EntraUser -ObjectId $newUser.Id + Remove-EntraGroup -ObjectId $newGroup.Id + } + } +} diff --git a/test/module/Entra/Integration/Get-EntraApplication.Tests.ps1 b/test/module/Entra/Integration/Get-EntraApplication.Tests.ps1 new file mode 100644 index 0000000000..199acea382 --- /dev/null +++ b/test/module/Entra/Integration/Get-EntraApplication.Tests.ps1 @@ -0,0 +1,36 @@ +Describe "The Get-EntraApplication command executing unmocked" { + + Context "When getting applications" { + BeforeAll { + $testReportPath = join-path $psscriptroot "\setenv.ps1" + Import-Module -Name $testReportPath + $appId = $env:TEST_APPID + $tenantId = $env:TEST_TENANTID + $cert = $env:CERTIFICATETHUMBPRINT + Connect-Entra -TenantId $tenantId -AppId $appId -CertificateThumbprint $cert + + $thisTestInstanceId = New-Guid | select -expandproperty guid + $testAppName = 'SimpleTestAppRead' + $thisTestInstanceId + $testApp = New-EntraApplication -DisplayName $testAppName + } + + It "should successfully read the application with expected properties when the application ID parameter is used" { + $app = Get-EntraApplication -ObjectId $testApp.Id + $app.Id | Should -Be $testApp.Id + $app.DisplayName | Should -Be $testAppName + } + + It "should throw an exception if a nonexistent object ID parameter is specified" { + $Id = (New-Guid).Guid + Get-EntraApplication -ObjectId $Id -ErrorAction Stop + $Error[0] | Should -match "Resource '([^']+)' does not exist" + } + + AfterAll { + foreach ($app in (Get-EntraApplication -All $true | Where-Object { $_.DisplayName -eq $testAppName})) { + Remove-EntraApplication -ObjectId $app.Id | Out-Null + } + + } + } +} diff --git a/test/module/Entra/Integration/New-EntraApplication.Tests.ps1 b/test/module/Entra/Integration/New-EntraApplication.Tests.ps1 new file mode 100644 index 0000000000..ce3951bac2 --- /dev/null +++ b/test/module/Entra/Integration/New-EntraApplication.Tests.ps1 @@ -0,0 +1,28 @@ +Describe "The Get-EntraApplication command executing unmocked" { + + Context "When creating applications" { + BeforeAll { + $testReportPath = join-path $psscriptroot "\setenv.ps1" + Import-Module -Name $testReportPath + $appId = $env:TEST_APPID + $tenantId = $env:TEST_TENANTID + $cert = $env:CERTIFICATETHUMBPRINT + Connect-Entra -TenantId $tenantId -AppId $appId -CertificateThumbprint $cert + + $thisTestInstanceId = New-Guid | select -expandproperty guid + } + + It "should succeed when creating a new application" { + $testAppName = 'SimpleTestApp' + $thisTestInstanceId + $newApp = New-EntraApplication -DisplayName $testAppName + $newApp.DisplayName | Should -Be $testAppName + { Get-EntraApplication -ObjectId $newApp.Id } | Should -Not -BeNullOrEmpty + } + + AfterAll { + foreach ($app in (Get-EntraApplication -All $true | Where-Object { $_.DisplayName -eq $testAppName})) { + Remove-EntraApplication -ObjectId $app.Id | Out-Null + } + } + } +} diff --git a/test/module/Entra/Integration/Set-EntraApplication.Tests.ps1 b/test/module/Entra/Integration/Set-EntraApplication.Tests.ps1 new file mode 100644 index 0000000000..54574437c5 --- /dev/null +++ b/test/module/Entra/Integration/Set-EntraApplication.Tests.ps1 @@ -0,0 +1,34 @@ +Describe "The Get-EntraApplication command executing unmocked" { + + Context "When getting applications" { + BeforeAll { + $testReportPath = join-path $psscriptroot "\setenv.ps1" + Import-Module -Name $testReportPath + $appId = $env:TEST_APPID + $tenantId = $env:TEST_TENANTID + $cert = $env:CERTIFICATETHUMBPRINT + Connect-Entra -TenantId $tenantId -AppId $appId -CertificateThumbprint $cert + + $thisTestInstanceId = New-Guid | select -expandproperty guid + $testAppName = 'SimpleTestAppRead' + $thisTestInstanceId + $testApp = New-EntraApplication -DisplayName $testAppName + } + + It "should successfully update the application with expected properties when the application ID parameter is used" { + $thisTestInstanceId = New-Guid | select -expandproperty guid + $newAppName = 'SimpleTestAppUpdate' + $thisTestInstanceId + Set-EntraApplication -ObjectId $testApp.Id -DisplayName $newAppName | Should -BeNullOrEmpty + + $app = Get-EntraApplication -ObjectId $testApp.Id + $app.Id | Should -Be $testApp.Id + $app.DisplayName | Should -Be $newAppName + } + + AfterAll { + foreach ($app in (Get-EntraApplication -All $true | Where-Object { $_.DisplayName -eq $newAppName})) { + Remove-EntraApplication -ObjectId $app.Id | Out-Null + } + + } + } +} diff --git a/test/module/Entra/Integration/setenv.ps1 b/test/module/Entra/Integration/setenv.ps1 new file mode 100644 index 0000000000..819497c12e --- /dev/null +++ b/test/module/Entra/Integration/setenv.ps1 @@ -0,0 +1,3 @@ +$env:TEST_APPID = "8886ad7b-1795-4542-9808-c85859d97f23" +$env:TEST_TENANTID = "d5aec55f-2d12-4442-8d2f-ccca95d4390e" +$env:CERTIFICATETHUMBPRINT = "714CCF133715A7987BADA4E766FB3E9A1B3D8A6F" \ No newline at end of file