From 44eae7956fd20d644bf236830b1668af4f8058c0 Mon Sep 17 00:00:00 2001 From: Ashwini Karke <v-akarke@microsoft.com> Date: Wed, 24 Apr 2024 17:35:04 +0530 Subject: [PATCH 1/3] Added test cases for Application --- .../Get-EntraApplication.Tests.ps1 | 36 +++++++++++++++++++ .../New-EntraApplication.Tests.ps1 | 28 +++++++++++++++ .../Set-EntraApplication.Tests.ps1 | 34 ++++++++++++++++++ test/module/Entra/Integration/setenv.ps1 | 3 ++ 4 files changed, 101 insertions(+) create mode 100644 test/module/Entra/Integration/Get-EntraApplication.Tests.ps1 create mode 100644 test/module/Entra/Integration/New-EntraApplication.Tests.ps1 create mode 100644 test/module/Entra/Integration/Set-EntraApplication.Tests.ps1 create mode 100644 test/module/Entra/Integration/setenv.ps1 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..f7a3425ed1 --- /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-MgGraph -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 From 33d224eeaf91852c473708ab9687ba10b6153a9f Mon Sep 17 00:00:00 2001 From: Ashwini Karke <v-akarke@microsoft.com> Date: Thu, 25 Apr 2024 12:23:16 +0530 Subject: [PATCH 2/3] Integration-Testing --- .../Add-EntraGroupMember.Tests.ps1 | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 test/module/Entra/Integration/Add-EntraGroupMember.Tests.ps1 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..bc84fac5c1 --- /dev/null +++ b/test/module/Entra/Integration/Add-EntraGroupMember.Tests.ps1 @@ -0,0 +1,45 @@ +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 + $groupId = (Get-EntraGroup -Top 1).Id + $user = (Get-EntraUser -Top 1).Id + $servicePrincipal = (Get-EntraServicePrincipal -Top 1).Id + } + + It "should successfully add user to the Group" { + Add-EntraGroupMember -ObjectId $groupId -RefObjectId $memberId + $result = Get-EntraGroupMember -ObjectId $groupId + $result.Id | Should -Contain $memberId + } + + It "should successfully add service principal to the Group" { + Add-EntraGroupMember -ObjectId $groupId -RefObjectId $memberId + $result = Get-EntraGroupMember -ObjectId $servicePrincipal + $result.Id | Should -Contain $memberId + } + + It "should successfully add group to the Group" { + Add-EntraGroupMember -ObjectId $groupId -RefObjectId $memberId + $result = Get-EntraGroupMember -ObjectId $servicePrincipal + $result.Id | Should -Contain $memberId + } + # It "should throw an exception if a nonexistent object ID parameter is specified" { + # $Id = (New-Guid).Guid + # Get-EntraGroupMember -ObjectId $Id -ErrorAction Stop + # $Error[0] | Should -match "Resource '([^']+)' does not exist" + # } + + AfterAll { + Remove-EntraGroupMember -ObjectId $groupId -MemberId $memberId + } + } +} From f61f184314c2e7bc62828f97169d4febfe092453 Mon Sep 17 00:00:00 2001 From: Ashwini Karke <v-akarke@microsoft.com> Date: Thu, 25 Apr 2024 15:48:22 +0530 Subject: [PATCH 3/3] added Add-EntraGroupMember --- .../Add-EntraGroupMember.Tests.ps1 | 49 +++++++++---------- .../Set-EntraApplication.Tests.ps1 | 2 +- 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/test/module/Entra/Integration/Add-EntraGroupMember.Tests.ps1 b/test/module/Entra/Integration/Add-EntraGroupMember.Tests.ps1 index bc84fac5c1..87c2f031b8 100644 --- a/test/module/Entra/Integration/Add-EntraGroupMember.Tests.ps1 +++ b/test/module/Entra/Integration/Add-EntraGroupMember.Tests.ps1 @@ -1,6 +1,6 @@ -Describe "The Get-EntraApplication command executing unmocked" { +Describe "The Add-EntraGroupMember command executing unmocked" { - Context "When getting applications" { + Context "When getting user and group" { BeforeAll { $testReportPath = join-path $psscriptroot "\setenv.ps1" Import-Module -Name $testReportPath @@ -10,36 +10,35 @@ Describe "The Get-EntraApplication command executing unmocked" { Connect-Entra -TenantId $tenantId -AppId $appId -CertificateThumbprint $cert $thisTestInstanceId = New-Guid | select -expandproperty guid - $groupId = (Get-EntraGroup -Top 1).Id - $user = (Get-EntraUser -Top 1).Id - $servicePrincipal = (Get-EntraServicePrincipal -Top 1).Id - } + $testName = 'SimpleTest' + $thisTestInstanceId - It "should successfully add user to the Group" { - Add-EntraGroupMember -ObjectId $groupId -RefObjectId $memberId - $result = Get-EntraGroupMember -ObjectId $groupId - $result.Id | Should -Contain $memberId + #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 service principal to the Group" { - Add-EntraGroupMember -ObjectId $groupId -RefObjectId $memberId - $result = Get-EntraGroupMember -ObjectId $servicePrincipal - $result.Id | Should -Contain $memberId - } + 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 - It "should successfully add group to the Group" { - Add-EntraGroupMember -ObjectId $groupId -RefObjectId $memberId - $result = Get-EntraGroupMember -ObjectId $servicePrincipal - $result.Id | Should -Contain $memberId + Add-EntraGroupMember -ObjectId $group.Id -RefObjectId $user.Id + $result = Get-EntraGroupMember -ObjectId $group.Id + $result.Id | Should -Contain $user.Id } - # It "should throw an exception if a nonexistent object ID parameter is specified" { - # $Id = (New-Guid).Guid - # Get-EntraGroupMember -ObjectId $Id -ErrorAction Stop - # $Error[0] | Should -match "Resource '([^']+)' does not exist" - # } AfterAll { - Remove-EntraGroupMember -ObjectId $groupId -MemberId $memberId + 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/Set-EntraApplication.Tests.ps1 b/test/module/Entra/Integration/Set-EntraApplication.Tests.ps1 index f7a3425ed1..54574437c5 100644 --- a/test/module/Entra/Integration/Set-EntraApplication.Tests.ps1 +++ b/test/module/Entra/Integration/Set-EntraApplication.Tests.ps1 @@ -7,7 +7,7 @@ Describe "The Get-EntraApplication command executing unmocked" { $appId = $env:TEST_APPID $tenantId = $env:TEST_TENANTID $cert = $env:CERTIFICATETHUMBPRINT - Connect-MgGraph -TenantId $tenantId -AppId $appId -CertificateThumbprint $cert + Connect-Entra -TenantId $tenantId -AppId $appId -CertificateThumbprint $cert $thisTestInstanceId = New-Guid | select -expandproperty guid $testAppName = 'SimpleTestAppRead' + $thisTestInstanceId