diff --git a/test/powershell/Modules/Microsoft.PowerShell.Management/Set-Service.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Management/Set-Service.Tests.ps1 new file mode 100644 index 00000000000..50942e78c64 --- /dev/null +++ b/test/powershell/Modules/Microsoft.PowerShell.Management/Set-Service.Tests.ps1 @@ -0,0 +1,173 @@ +Describe "Set/New-Service cmdlet tests" -Tags "Feature", "RequireAdminOnWindows" { + BeforeAll { + $originalDefaultParameterValues = $PSDefaultParameterValues.Clone() + if ( -not $IsWindows ) { + $PSDefaultParameterValues["it:skip"] = $true + } + } + AfterAll { + $global:PSDefaultParameterValues = $originalDefaultParameterValues + } + + It "SetServiceCommand can be used as API for '' with ''" -TestCases @( + @{parameter = "ComputerName"; value = "foo"}, + @{parameter = "Name" ; value = "bar"}, + @{parameter = "DisplayName" ; value = "hello"}, + @{parameter = "Description" ; value = "hello world"}, + @{parameter = "StartupType" ; value = "Automatic"}, + @{parameter = "StartupType" ; value = "Boot"}, + @{parameter = "StartupType" ; value = "Disabled"}, + @{parameter = "StartupType" ; value = "Manual"}, + @{parameter = "StartupType" ; value = "System"}, + @{parameter = "Status" ; value = "Running"}, + @{parameter = "Status" ; value = "Stopped"}, + @{parameter = "Status" ; value = "Paused"}, + @{parameter = "InputObject" ; value = (Get-Service | Select-Object -First 1)}, + # cmdlet inherits this property, but it's not exposed as parameter so it should be $null + @{parameter = "Include" ; value = "foo", "bar" ; expectedNull = $true}, + # cmdlet inherits this property, but it's not exposed as parameter so it should be $null + @{parameter = "Exclude" ; value = "foo", "bar" ; expectedNull = $true} + ) { + param($parameter, $value, $expectedNull) + + $setServiceCommand = [Microsoft.PowerShell.Commands.SetServiceCommand]::new() + $setServiceCommand.$parameter = $value + if ($expectedNull -eq $true) { + $setServiceCommand.$parameter | Should BeNullOrEmpty + } + else { + $setServiceCommand.$parameter | Should Be $value + } + } + + It "Set-Service parameter validation for invalid values: