internal/tests/WebServer.tests.ps1

Describe "[$($Lab.Name)] WebServer" -Tag WebServer {

    Context "Role deployment successful" {
        It "[WebServer] Should return the correct amount of machines" {
            (Get-LabVM -Role WebServer).Count | Should -Be $(Get-Lab).Machines.Where( { $_.Roles.Name -contains 'WebServer' }).Count
        }

        foreach ($vm in (Get-LabVM -Role WebServer))
        {
            It "[$vm] should have all required WebServer features installed" -TestCases @{
                corefeatures = 'Web-WebServer', 'Web-Application-Proxy', 'Web-Health', 'Web-Performance', 'Web-Security', 'Web-App-Dev', 'Web-Ftp-Server', 'Web-Metabase', 'Web-Lgcy-Scripting', 'Web-WMI', 'Web-Scripting-Tools', 'Web-Mgmt-Service', 'Web-WHC'
                fullfeatures = 'Web-Server'
                vm           = $vm
            } {
                $testedFeatures = if ($vm.OperatingSystem.Installation -eq 'Core') { $corefeatures } else { $fullfeatures }
            
                (Get-LabWindowsFeature -ComputerName $vm -FeatureName $testedFeatures -NoDisplay).Installed | Should -Not -Contain $false
            }
        }
    }
}