Public/InstallHelpers/Install.IIS.Functions.Tests.ps1
# # Requires -RunAsAdministrator #Requires -Version 5.0 #Requires -Modules @{ ModuleName='Pester'; ModuleVersion='4.10.1' } $ErrorActionPreference = 'Stop'; Set-StrictMode -Version 'Latest' $sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.Tests\.ps1', '.psm1' Import-Module "$PSScriptRoot\$sut" -Force Describe '_determineIfFeatureIsActive' { # Arrange [string] $expected = 'Disabled' [string] $featureTested = 'TelnetClient' # <== NOTE: Using a feature we expect is already disabled Disable-WindowsOptionalFeature -Online -FeatureName $featureTested # Act [string] $actual = _determineIfFeatureIsActive -featureName $featureTested # Assert It "returns expected" { $actual | Should Be $expected } } Describe '_enableWindowsFeature' { # Arrange [string] $expected = 'True' [string] $featureTested = 'Printing-XPSServices-Features' # <== NOTE: Using a feature we expect is already enabled Disable-WindowsOptionalFeature -Online -FeatureName $featureTested # Act [string] $actual = _enableWindowsFeature -featureName $featureTested # Assert It "returns expected" { $actual | Should Be $expected } } Describe 'TestForIISSiteExistence' { # Arrange [string] $expected = $false # Act [boolean] $actual = TestForIISSiteExistence -siteName 'NonExistentSite_asdfjkhadf' # Assert It "returns expected" { $actual | Should Be $expected } } # NOTE: This test requires you to have a local IIS Describe 'AddVirtualDirectoryToSite' { # Arrange [string] $expectedTestSiteName = 'SiteForTests' [string] $virDirName = 'TestVirDir' [string] $pathToTestSiteArtifacts = "$Env:systemdrive\inetpub\wwwroot\$expectedTestSiteName" [string] $pathToTestSiteVirDir = "$Env:systemdrive\inetpub\wwwroot\$virDirName" # Ensure existence of site dir New-Item -ItemType Directory -Path $pathToTestSiteArtifacts -Force # Ensure existence of vir dir dir New-Item -ItemType Directory -Path $pathToTestSiteVirDir -Force # Create site to act as parent to vir dir New-WebSite -Name $expectedTestSiteName -Port 80 -HostHeader "TestSite" -PhysicalPath $pathToTestSiteArtifacts -Force # Act AddVirtualDirectoryToSite -siteName $expectedTestSiteName -virDirName $virDirName -pathToArtifacts $pathToTestSiteVirDir # Assert It "returns expected" { Get-WebVirtualDirectory -Site $expectedTestSiteName | Should Not Be $null } } Describe 'ConfigureIISFilesystemPermissions()' { # Arrange BeforeEach { # $testDir = 'TestDrive:\somedir' $dirPath = "$PSScriptRoot\TestFixtures\TestDir" New-Item -ItemType Directory -Path $dirPath -Force # NOTE: Couldn't get this test to work with Pester's drive mock (TestDrive) # $dirPath = $($testDir).Replace('TestDrive:', (Get-PSDrive TestDrive).Root) } It "Creates ACL as expected" { $expected = 'FullControl' $usr = 'IIS_IUSRS' # Act ConfigureIISFilesystemPermissions -dirToChmod $dirPath -webUser $usr $rights = ((Get-Acl $dirPath | Select-Object -Property * ).Access ` | Where-Object { $_.IdentityReference -like "*$usr*" }).FileSystemRights # Assert $rights | Should Be $expected Remove-Item -Path $dirPath -Force } } |