private/Resolve-DNS.Tests.ps1

$here = Split-Path -Parent $MyInvocation.MyCommand.Path
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.Tests\.', '.'
. "$here\$sut"

Describe "Resolve-DNS" -Tag 'Unit' {

    Context 'Behavior' {

        It 'Handles errors (error stream)' {
            $address = 'zzz'
            $ErrorActionPreference = 'Continue'

            $err = Resolve-DNS -Address $address 2>&1
            $err | ? { $_ -is [System.Management.Automation.ErrorRecord] } | % { $_.Exception.Message } | Should -Match 'Failed to resolve DNS'
        }

        It 'Handles errors (exception)' {
            $address = 'zzz'

            { Resolve-DNS -Address $address | Should -Throw 'Failed to resolve DNS' }
        }

        It 'Validates and returns an IP if an IP was passed' {
            $address = '127.0.0.1'
            $ErrorActionPreference = 'Stop'

            $result = Resolve-DNS -Address $address
            $result | Should -BeOfType [string]
            $result | Should -Be $address

        }

        It 'Resolves DNS to IP' {
            $address = 'example.com'
            $ErrorActionPreference = 'Stop'

            $result = Resolve-DNS -Address $address
            $result | Should -BeOfType [string]
            $result | Should -Not -Be $null

        }

    }

}