Tests/Public/Support/VoiceConfig/Get-TeamsPhoneNumber.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 } # Mocking Output for some functions function Get-CsOnlineLisLocation { param ( $LocationId, $Location ) if ( $LocationId.IsPresent ) { return '00000000-0000-0000-0000-000000000000' } elseif ( $Location.IsPresent ) { return '00000000-0000-0000-0000-000000000000' } else { return $null } } function Get-CsPhoneNumberAssignment { param ( $TelephoneNumberStartsWith, $TelephoneNumber, $Location, $City, $CapabilitiesContain ) $PhoneNumberObject = [PSCustomObject][ordered]@{ TelephoneNumber = $null NumberType = 'DirectRouting' ActivationState = $null AssignedPstnTargetId = $null Capability = @('ConferenceAssignment', 'VoiceApplicationAssignment', 'UserAssignment' ) City = $null CivicAddressId = '00000000-0000-0000-0000-000000000000' IsoCountryCode = $null IsoSubdivision = $null LocationId = '00000000-0000-0000-0000-000000000000' LocationUpdateSupported = $true PortInOrderStatus = $null PstnAssignmentStatus = $null PstnPartnerId = $null PstnPartnerName = $null } switch ($PhoneNumber) { '1234567890' { $PhoneNumberObject.TelephoneNumber = '1234567890' return $PhoneNumberObject } '' { return $PhoneNumberObject } default { return $PhoneNumberObject } } } } Describe -Tags ('Unit', 'Acceptance') "Function 'Get-TeamsPhoneNumber'" { #TODO Test Cases need to cover All input optios as well as relevant mocking objects for queries against the tenant It "Given valid -PhoneNumber '<PhoneNumber>', it returns a PhoneNumberObject" -TestCases @( @{ PhoneNumber = '1234567890'; PhoneNumberObject = [TFPhoneNumberObject]@{ PhoneNumber = 1234567890 NumberType = 'DirectRouting' LocationId = $null LocationName = $null City = $null Capability = @('ConferenceAssignment', 'VoiceApplicationAssignment', 'UserAssignment' ) Assigned = $false AssignedTo = $null AssignedToSIP = $null AssignedToObjectType = $null AssignedPstnTargetId = $null } } @{ PhoneNumber = '1234567890;ext=1234'; PhoneNumberObject = [TFPhoneNumberObject]@{ PhoneNumber = 1234567890 NumberType = 'DirectRouting' LocationId = $null LocationName = $null City = $null Capability = @('ConferenceAssignment', 'VoiceApplicationAssignment', 'UserAssignment' ) Assigned = $false AssignedTo = $null AssignedToSIP = $null AssignedToObjectType = $null AssignedPstnTargetId = $null } } @{ 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 } } ) { param ($PhoneNumber, $PhoneNumberObject) #BODGE 'Expected TFPhoneNumberObject, but got TFPhoneNumberObject' - why does the comparison not work? #Get-TeamsPhoneNumber $PhoneNumber -InformationAction SilentlyContinue | Should -Be $PhoneNumberObject (Get-TeamsPhoneNumber $PhoneNumber -InformationAction SilentlyContinue).PhoneNumber | Should -Be $PhoneNumberObject.PhoneNumber } } } |