. $PSScriptRoot\..\..\Load-PesterModules.ps1 $here = Split-Path -Parent $MyInvocation.MyCommand.Path $sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.tests\.', '.' $functionPath = Join-Path -Path $here -ChildPath $sut Write-Host "Overriding SUT: $functionPath" Import-Module $functionPath -Force $moduleForMock = "" Describe "Add-HostsFileContent" { Mock -CommandName Write-Warning {} -ModuleName $moduleForMock Mock -CommandName Write-Host {} -ModuleName $moduleForMock Mock -CommandName Write-Error {} -ModuleName $moduleForMock Mock -CommandName Test-IsCollectionNullOrEmpty { $false } -ModuleName $moduleForMock $tempPath = Join-Path $TestDrive "hoststFile.txt" Set-Content -Path $tempPath @" # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. 10.10.10.10 bork.world 25.63.10 x.acme.com # x client host 127.0.0.1 already.exists 7.7.7.7 tobeforce.write 11.11.11.11 comment.dupe 127.0.0.1 jw smartsite.jw 127.0.0.1 dev.filepresso.com dev.filepresso.com.pl dev.filepresso.pl dev.filefly.pl #### 89.31.66.248 sp.biatelbit.pl 192.168.72.51 subversion.biatel.com.pl # 127.0.0.1 bip.smartsite.bit-sa.pl # 127.0.0.1 bip.augustow.wrotapodlasia.pl 127.0.0.1 rpowp.smartsite.bit-sa.pl 127.0.0.1 cms.smartsite.bit-sa.pl 127.0.0.1 cms-test.smartsite.bit-sa.pl ############################################################ #10.200.14.70 ST-sapp1 #10.200.14.70 tv.smartsite.bit-sa.pl wp.smartsite.bit-sa.pl cms.smartsite.bit-sa.pl test.smartsite.bit-sa.pl bip.smartsite.bit-sa.pl si.smartsite.bit-sa.pl sspw.wrotapodlasia.pl #10.200.14.70 radny.smartsite.bit-sa.pl stats.smartsite.bit-sa.pl test9.smartsite.bit-sa.pl "@ Context "Negative cases" { It "Overwrites hostname" { Add-HostsFileEntry -Ip "127.0.0.1" -Hostname "not.exist" -HostsPath $tempPath $hostsFile = Get-HostsFileContent -HostsPath $tempPath $hostsFile -match "127.0.0.1 not.exist" | Should -BeTrue } It "Does not add multihost" { Add-HostsFileEntry -Ip "9.9.9.9" -Hostname "bork.world blarg.host" -Comment "foo" -HostsPath $tempPath $content = Get-Content $tempPath $content -match "9.9.9.9 bork.world blarg.host # foo" | Should -BeNullOrEmpty } } Context "Happy path" { It "Comments out the dupe entry" { Add-HostsFileEntry -Ip "11.11.11.11" -Hostname "comment.dupe" -HostsPath $tempPath Add-HostsFileEntry -Ip "8.8.8.8" -Hostname "comment.dupe" -HostsPath $tempPath $content = Get-Content $tempPath $content -match "#11.11.11.11 comment.dupe" | Should -BeTrue } It "Adds line" { Add-HostsFileEntry -Ip "9.9.9.9" -Hostname "bork.world" -HostsPath $tempPath $content = Get-Content $tempPath $content -match "9.9.9.9 bork.World" | Should -BeTrue } It "Adds line with comment" { Add-HostsFileEntry -Ip "4.4.4.4" -Hostname "comment.line" -Comment "foo" -HostsPath $tempPath $content = Get-Content $tempPath $content -match "4.4.4.4 comment.line # foo" | Should -BeTrue } } Context "Bad override" { It "Throws if array is null" { Mock -CommandName Test-IsCollectionNullOrEmpty { $true } { Add-HostsFileEntry -Ip "11.11.11.12" -Hostname "comment.duplicate" -HostsPath $tempPath } | Should Throw } } }