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 # } # } |