Tests/Private/Set-TFPhoneNumber.Tests.ps1
# Module: TeamsFunctions # Function: Test # Author: David Eberhardt # Updated: 05-AUG-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 'Set-TFPhoneNumber'" { BeforeEach { Mock Remove-CsPhoneNumberAssignment { return $null } Mock Set-CsPhoneNumberAssignment { return $null } function Get-TeamsPhoneNumber ($PhoneNumber) { $PhoneNumberObject = [TFPhoneNumberObject]@{ PhoneNumber = $null NumberType = 'DirectRouting' LocationId = $null LocationName = $null City = $null Capability = @('ConferenceAssignment', 'VoiceApplicationAssignment', 'UserAssignment' ) Assigned = $false AssignedTo = $null AssignedToSIP = $null AssignedToObjectType = $null AssignedPstnTargetId = $null } switch ($PhoneNumber) { '1234567890' { $PhoneNumberObject.PhoneNumber = '1234567890' return $PhoneNumberObject } '1234567890;ext=1234' { $PhoneNumberObject.PhoneNumber = '1234567890' return $PhoneNumberObject } '' { return $PhoneNumberObject } default { return $PhoneNumberObject } } } } Context 'CmdLet should fail' { BeforeEach { $PhoneNumber = '1234567890' } It 'should detect mismatching objects' { { Set-TFPhoneNumber -UserObject $CsOnlineUserBad1 -Userlicense $AzureAdUserLicenseGood1 -PhoneNumber $PhoneNumber } | Should -Throw } It 'should throw an Error if unlicensed' { { Set-TFPhoneNumber -UserObject $CsOnlineUserBad1 -Userlicense $AzureAdUserLicenseBad1 -PhoneNumber $PhoneNumber } | Should -Throw } } Context 'CmdLet should succeed' { BeforeEach { $PhoneNumber = '1234567890' Mock Set-AzureAdUserLicenseServicePlan { return $null } Mock Get-AzureAdUserLicense { return $AzureAdUserLicenseGood1 } } It 'should enable a disabled PhoneSystem Service Plan' { { Set-TFPhoneNumber -UserObject $CsOnlineUserToRemedy1 -Userlicense $AzureAdUserLicenseToRemedy1 -PhoneNumber $PhoneNumber } | Should -Not -Throw } } Context 'PhoneNumber is provided in different formats' { It "should apply valid -PhoneNumber '<PhoneNumber>'" -TestCases @( @{ PhoneNumber = '1234567890' } @{ PhoneNumber = '1234567890;ext=1234' } @{ PhoneNumber = '' } ) { param ($PhoneNumber) { Set-TFPhoneNumber -UserObject $CsOnlineUserGood1 -Userlicense $AzureAdUserLicenseGood1 -PhoneNumber $PhoneNumber } | Should -Not -Throw } } } } |