Tests/Public/UserManagement/TeamsCallableEntity/Assert-TeamsCallableEntity.Tests.ps1
# Module: TeamsFunctions # Function: Test # Author: David Eberhardt # Updated: 23-JUL-2022 InModuleScope TeamsFunctions { BeforeAll { # Mocking basic connection commands to avoid connectivity related errors Mock Assert-AzureADConnection { return $true } Mock Assert-MicrosoftTeamsConnection { return $true } Mock Test-MicrosoftTeamsConnection { return $true } # Splatting Parameters $Params = @{ WarningAction = 'SilentlyContinue' InformationAction = 'SilentlyContinue' } # Dot Sourcing Mock Objects . "$(Get-ParentDirectoryPath -TargetParentDirectory 'Tests' -DirectoryName $PSScriptRoot)\Public\Testing-MockedObjects.ps1" } Describe -Tags ('Unit', 'Acceptance') "Function 'Assert-TeamsCallableEntity'" { #TODO User Requires to be called with -RequireEV - Add additional checks for without? Context 'User - Assertion is not successful' { # Using Testing-MockedObjects.ps1: $CsOnlineUserBad1, $AzureAdUserLicenseBad1 BeforeEach { Mock Get-CsOnlineUser { return $CsOnlineUserBad1 } Mock Get-AzureAdUserLicense { return $AzureAdUserLicenseBad1 } Mock Set-AzureAdUserLicenseServicePlan { throw } Mock Start-Sleep { return $null } Mock Test-TeamsUserLicense { return $false } Mock Enable-TeamsUserForEnterpriseVoice { return $false } #Mock Get-TeamsResourceAccount { return $false } } It 'should return FALSE (ParameterSet UserPrincipalName)' { $Identity = $CsOnlineUserBad1.UserPrincipalName #Assert-TeamsCallableEntity -UserPrincipalName $Identity -RequireEV @Params | Should -BeFalse } It 'should return FALSE (ParameterSet Object - UserObject)' { #Assert-TeamsCallableEntity -UserObject $CsOnlineUserBad1 -RequireEV @Params | Should -BeFalse } It 'should return FALSE (ParameterSet Object - UserObject + LicenseObject)' { #Assert-TeamsCallableEntity -UserObject $CsOnlineUserBad1 -LicenseObject $AzureAdUserLicenseBad1 -RequireEV @Params | Should -BeFalse } } Context 'User - ParameterSet UserPrincipalName - Assertion is not successful but can be remedied' { # Using Testing-MockedObjects.ps1: $CsOnlineUserToRemedy1, $AzureAdUserLicenseToRemedy1 BeforeEach { Mock Get-CsOnlineUser { return $CsOnlineUserToRemedy1 } Mock Get-AzureAdUserLicense { return $AzureAdUserLicenseToRemedy1 } Mock Set-AzureAdUserLicenseServicePlan { return $null } # Remediation Mock Start-Sleep { return $null } Mock Test-TeamsUserLicense { return $true } # Remediation Mock Enable-TeamsUserForEnterpriseVoice { return $true } # Remediation #Mock Get-TeamsResourceAccount { return $false } } It 'should return TRUE (ParameterSet UserPrincipalName)' { $Identity = $CsOnlineUserToRemedy1.UserPrincipalName #Assert-TeamsCallableEntity -UserPrincipalName $Identity -RequireEV @Params | Should -BeTrue } It 'should return TRUE (ParameterSet Object - UserObject)' { #Assert-TeamsCallableEntity -UserObject $CsOnlineUserToRemedy1 -RequireEV @Params | Should -BeTrue } It 'should return TRUE (ParameterSet Object - UserObject + LicenseObject)' { #Assert-TeamsCallableEntity -UserObject $CsOnlineUserToRemedy1 -LicenseObject $AzureAdUserLicenseToRemedy1 -RequireEV @Params | Should -BeTrue } } Context 'User - ParameterSet UserPrincipalName - Assertion is successful' { # Using Testing-MockedObjects.ps1: $CsOnlineUserGood1, $AzureAdUserLicenseGood1 BeforeEach { Mock Get-CsOnlineUser { return $CsOnlineUserGood1 } Mock Get-AzureAdUserLicense { return $AzureAdUserLicenseGood1 } Mock Set-AzureAdUserLicenseServicePlan { throw } #Mock Start-Sleep { return $null } #Mock Test-TeamsUserLicense { return $true } #Mock Enable-TeamsUserForEnterpriseVoice { return $false } #Mock Get-TeamsResourceAccount { return $false } } It 'should return TRUE (ParameterSet UserPrincipalName)' { $Identity = $CsOnlineUserGood1.UserPrincipalName #Assert-TeamsCallableEntity -UserPrincipalName $Identity -RequireEV @Params | Should -BeTrue } It 'should return TRUE (ParameterSet Object - UserObject)' { #Assert-TeamsCallableEntity -UserObject $CsOnlineUserGood1 -RequireEV @Params | Should -BeTrue } It 'should return TRUE (ParameterSet Object - UserObject + LicenseObject)' { #Assert-TeamsCallableEntity -UserObject $CsOnlineUserGood1 -LicenseObject $AzureAdUserLicenseGood1 -RequireEV @Params | Should -BeTrue } } '' Context 'ApplicationInstance - Assertion is not successful' { # Using Testing-MockedObjects.ps1: $CsOnlineUserRABad1, $AzureAdUserLicenseRABad1 BeforeEach { Mock Get-CsOnlineUser { return $CsOnlineUserRABad1 } Mock Get-AzureAdUserLicense { return $AzureAdUserLicenseRABad1 } Mock Set-AzureAdUserLicenseServicePlan { throw } Mock Start-Sleep { return $null } Mock Test-TeamsUserLicense { return $false } Mock Enable-TeamsUserForEnterpriseVoice { return $false } #Mock Get-TeamsResourceAccount { return $false } } It 'should return FALSE (ParameterSet UserPrincipalName)' { $Identity = $CsOnlineUserRABad1.UserPrincipalName #Assert-TeamsCallableEntity -UserPrincipalName $Identity @Params | Should -BeFalse } It 'should return FALSE (ParameterSet Object - UserObject)' { #Assert-TeamsCallableEntity -UserObject $CsOnlineUserRABad1 @Params | Should -BeFalse } It 'should return FALSE (ParameterSet Object - UserObject + LicenseObject)' { #Assert-TeamsCallableEntity -UserObject $CsOnlineUserRABad1 -LicenseObject $AzureAdUserLicenseRABad1 @Params | Should -BeFalse } } Context 'ApplicationInstance - Assertion is not successful but can be remedied' { # Using Testing-MockedObjects.ps1: $CsOnlineUserRAToRemedy1, $AzureAdUserLicenseRAToRemedy1 BeforeEach { Mock Get-CsOnlineUser { return $CsOnlineUserRAToRemedy1 } Mock Get-AzureAdUserLicense { return $AzureAdUserLicenseRAToRemedy1 } Mock Set-AzureAdUserLicenseServicePlan { return $null } # Remediation Mock Start-Sleep { return $null } Mock Test-TeamsUserLicense { return $true } # Remediation Mock Enable-TeamsUserForEnterpriseVoice { return $true } # Remediation #Mock Get-TeamsResourceAccount { return $false } } It 'should return TRUE (ParameterSet UserPrincipalName)' { $Identity = $CsOnlineUserRAToRemedy1.UserPrincipalName #Assert-TeamsCallableEntity -UserPrincipalName $Identity @Params | Should -BeTrue } It 'should return TRUE (ParameterSet Object - UserObject)' { #Assert-TeamsCallableEntity -UserObject $CsOnlineUserRAToRemedy1 @Params | Should -BeTrue } It 'should return TRUE (ParameterSet Object - UserObject + LicenseObject)' { #Assert-TeamsCallableEntity -UserObject $CsOnlineUserRAToRemedy1 -LicenseObject $AzureAdUserLicenseRAToRemedy1 @Params | Should -BeTrue } } Context 'ApplicationInstance - Assertion is successful' { # Using Testing-MockedObjects.ps1: $CsOnlineUserRAGood1, $AzureAdUserLicenseRAGood1 BeforeEach { Mock Get-CsOnlineUser { return $CsOnlineUserRAGood1 } Mock Get-AzureAdUserLicense { return $AzureAdUserLicenseRAGood1 } Mock Set-AzureAdUserLicenseServicePlan { throw } #Mock Start-Sleep { return $null } #Mock Test-TeamsUserLicense { return $true } #Mock Enable-TeamsUserForEnterpriseVoice { return $false } #Mock Get-TeamsResourceAccount { return $false } } It 'should return TRUE (ParameterSet UserPrincipalName)' { $Identity = $CsOnlineUserRAGood1.UserPrincipalName #Assert-TeamsCallableEntity -UserPrincipalName $Identity @Params | Should -BeTrue } It 'should return TRUE (ParameterSet Object - UserObject)' { #Assert-TeamsCallableEntity -UserObject $CsOnlineUserRAGood1 @Params | Should -BeTrue } It 'should return TRUE (ParameterSet Object - UserObject + LicenseObject)' { #Assert-TeamsCallableEntity -UserObject $CsOnlineUserRAGood1 -LicenseObject $AzureAdUserLicenseRAGood1 @Params | Should -BeTrue } } } } |