From 5fedd9c54f77b0a2e4fe5c5254990965dac67ca2 Mon Sep 17 00:00:00 2001 From: Steve Lee Date: Wed, 13 Sep 2017 10:24:04 -0700 Subject: [PATCH] added tests for start/stop/suspend/resume/restart service cmdlets (#4774) --- .../ControlService.Tests.ps1 | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 test/powershell/Modules/Microsoft.PowerShell.Management/ControlService.Tests.ps1 diff --git a/test/powershell/Modules/Microsoft.PowerShell.Management/ControlService.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Management/ControlService.Tests.ps1 new file mode 100644 index 0000000000..219e36c3e7 --- /dev/null +++ b/test/powershell/Modules/Microsoft.PowerShell.Management/ControlService.Tests.ps1 @@ -0,0 +1,95 @@ +Describe "Control Service cmdlet tests" -Tags "Feature","RequireAdminOnWindows" { + BeforeAll { + $originalDefaultParameterValues = $PSDefaultParameterValues.Clone() + if ( -not $IsWindows ) { + $PSDefaultParameterValues["it:skip"] = $true + } + } + AfterAll { + $global:PSDefaultParameterValues = $originalDefaultParameterValues + } + + It "StopServiceCommand can be used as API for '' with ''" -TestCases @( + @{parameter="Force";value=$true}, + @{parameter="Force";value=$false}, + @{parameter="NoWait";value=$true}, + @{parameter="NoWait";value=$false} + ) { + param($parameter, $value) + $stopservicecmd = [Microsoft.PowerShell.Commands.StopServiceCommand]::new() + $stopservicecmd.$parameter = $value + $stopservicecmd.$parameter | Should Be $value + } + + It "RestartServiceCommand can be used as API for '' with ''" -TestCases @( + @{parameter="Force";value=$true}, + @{parameter="Force";value=$false} + ) { + param($parameter, $value) + $restartservicecmd = [Microsoft.PowerShell.Commands.RestartServiceCommand]::new() + $restartservicecmd.$parameter = $value + $restartservicecmd.$parameter | Should Be $value + } + + It "Stop/Start/Restart-Service works" { + $wasStopped = $false + try { + $spooler = Get-Service Spooler + $spooler | Should Not BeNullOrEmpty + if ($spooler.Status -ne "Running") { + $wasStopped = $true + $spooler = Start-Service Spooler -PassThru + } + $spooler.Status | Should Be "Running" + $spooler = Stop-Service Spooler -PassThru + $spooler.Status | Should Be "Stopped" + (Get-Service Spooler).Status | Should Be "Stopped" + $spooler = Start-Service Spooler -PassThru + $spooler.Status | Should Be "Running" + (Get-Service Spooler).Status | Should Be "Running" + Stop-Service Spooler + (Get-Service Spooler).Status | Should Be "Stopped" + $spooler = Restart-Service Spooler -PassThru + $spooler.Status | Should Be "Running" + (Get-Service Spooler).Status | Should Be "Running" + } finally { + if ($wasStopped) { + Stop-Service Spooler + } + } + } + + It "Suspend/Resume-Service works" { + try { + $originalState = "Running" + $serviceName = "WerSvc" + $service = Get-Service $serviceName + if ($service.Status -ne $originalState) { + $originalState = $service.Status + Start-Service $serviceName + } + $service | Should Not BeNullOrEmpty + Suspend-Service $serviceName + (Get-Service $serviceName).Status | Should Be "Paused" + Resume-Service $serviceName + (Get-Service $serviceName).Status | Should Be "Running" + } finally { + Set-Service $serviceName -Status $originalState + } + } + + It "Failure to control service with '