From da41f7deb811f32538e0dc7f0d811646ceb8acf8 Mon Sep 17 00:00:00 2001 From: Jonas Andersen Date: Tue, 19 Sep 2017 21:36:46 +0200 Subject: [PATCH] [Feature]Use ParameterSetName instead of _ParameterSetName and rewrite test which used the function class directly --- .../commands/management/Service.cs | 6 +- .../Set-Service.Tests.ps1 | 113 +++++++++++++----- 2 files changed, 87 insertions(+), 32 deletions(-) diff --git a/src/Microsoft.PowerShell.Commands.Management/commands/management/Service.cs b/src/Microsoft.PowerShell.Commands.Management/commands/management/Service.cs index b1b52e317c..2e0464e5e3 100644 --- a/src/Microsoft.PowerShell.Commands.Management/commands/management/Service.cs +++ b/src/Microsoft.PowerShell.Commands.Management/commands/management/Service.cs @@ -24,7 +24,7 @@ namespace Microsoft.PowerShell.Commands /// /// This class implements the base for service commands /// - public abstract class ServiceBaseCommand : Cmdlet + public abstract class ServiceBaseCommand : PSCmdlet { #region Internal @@ -1601,7 +1601,7 @@ namespace Microsoft.PowerShell.Commands bool objServiceShouldBeDisposed = false; try { - if (_ParameterSetName.Equals("InputObject", StringComparison.OrdinalIgnoreCase) && InputObject != null) + if (this.ParameterSetName.Equals("InputObject", StringComparison.OrdinalIgnoreCase) && InputObject != null) { service = InputObject; Name = service.ServiceName; @@ -2223,7 +2223,7 @@ namespace Microsoft.PowerShell.Commands bool objServiceShouldBeDisposed = false; try { - if (_ParameterSetName.Equals("InputObject", StringComparison.OrdinalIgnoreCase) && InputObject != null) + if (this.ParameterSetName.Equals("InputObject", StringComparison.OrdinalIgnoreCase) && InputObject != null) { service = InputObject; Name = service.ServiceName; diff --git a/test/powershell/Modules/Microsoft.PowerShell.Management/Set-Service.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Management/Set-Service.Tests.ps1 index a360936e37..01d52028b4 100644 --- a/test/powershell/Modules/Microsoft.PowerShell.Management/Set-Service.Tests.ps1 +++ b/test/powershell/Modules/Microsoft.PowerShell.Management/Set-Service.Tests.ps1 @@ -53,41 +53,96 @@ Describe "Set/New/Remove-Service cmdlet tests" -Tags "Feature", "RequireAdminOnW { & $script } | ShouldBeErrorId $errorid } - It "Set-Service can change '' to ''" -TestCases @( - @{parameter = "Description"; value = "hello"}, - @{parameter = "DisplayName"; value = "test spooler"}, - @{parameter = "StartupType"; value = "Disabled"}, - @{parameter = "Status" ; value = "running" ; expected = "OK"} - ) { - param($parameter, $value, $expected) - $currentService = Get-CimInstance -ClassName Win32_Service -Filter "Name='spooler'" - $originalStartupType = (Get-Service -Name spooler).StartType + It "Set-Service can change 'Description' to 'hello'" { + $serviceName = "spooler" + $parameter = "Description" + $value = "hello" + $service = Get-Service $serviceName + $originalServiceDescription = (Get-CimInstance -ClassName Win32_Service -Filter "Name='$serviceName'").$parameter try { - $setServiceCommand = [Microsoft.PowerShell.Commands.SetServiceCommand]::new() - $setServiceCommand.Name = "Spooler" - $setServiceCommand.$parameter = $value - $setServiceCommand.Invoke() - $updatedService = Get-CimInstance -ClassName Win32_Service -Filter "Name='spooler'" - if ($expected -eq $null) { - $expected = $value - } - if ($parameter -eq "StartupType") { - $updatedService.StartMode | Should Be $expected - } - else { - $updatedService.$parameter | Should Be $expected + $arguments = @{ + 'Name' = $serviceName + $parameter = $value } + Set-Service @arguments + (Get-CimInstance -ClassName Win32_Service -Filter "Name='$serviceName'").$parameter | Should BeExactly $value } finally { - if ($parameter -eq "StartupType") { - $setServiceCommand.StartupType = $originalStartupType + $arguments = @{ + 'Name' = $serviceName + $parameter = $originalServiceDescription } - else { - $setServiceCommand.$parameter = $currentService.$parameter + Set-Service @arguments + (Get-CimInstance -ClassName Win32_Service -Filter "Name='$serviceName'").$parameter | Should BeExactly $originalServiceDescription + } + } + + It "Set-Service can change 'DisplayName' to 'test spooler'" { + $serviceName = "spooler" + $parameter = "DisplayName" + $value = "test spooler" + $originalServiceDisplayName = (Get-Service $serviceName).$parameter + try { + $arguments = @{ + 'Name' = $serviceName + $parameter = $value } - $setServiceCommand.Invoke() - $updatedService = Get-CimInstance -ClassName Win32_Service -Filter "Name='spooler'" - $updatedService.$parameter | Should Be $currentService.$parameter + Set-Service @arguments + (Get-Service -Name $serviceName).$parameter | Should BeExactly $value + } + finally { + $arguments = @{ + 'Name' = $serviceName + $parameter = $originalServiceDisplayName + } + Set-Service @arguments + (Get-Service -Name $serviceName).$parameter | Should BeExactly $originalServiceDisplayName + } + } + + It "Set-Service can change 'StartupType' to 'Disabled'" { + $serviceName = "spooler" + $parameter = "StartupType" + $value = "Disabled" + $originalServiceStartupType = (Get-Service $serviceName).StartType + try { + $arguments = @{ + 'Name' = $serviceName + $parameter = $value + } + Set-Service @arguments + (Get-Service -Name $serviceName).StartType | Should BeExactly $value + } + finally { + $arguments = @{ + 'Name' = $serviceName + $parameter = $originalServiceStartupType + } + Set-Service @arguments + (Get-Service -Name $serviceName).StartType | Should BeExactly $originalServiceStartupType + } + } + + It "Set-Service can change 'Status' to 'Running'" { + $serviceName = "spooler" + $parameter = "Status" + $value = "Running" + $originalServiceStatus = (Get-Service $serviceName).$parameter + try { + $arguments = @{ + 'Name' = $serviceName + $parameter = $value + } + Set-Service @arguments + (Get-Service -Name $serviceName).$parameter | Should BeExactly $value + } + finally { + $arguments = @{ + 'Name' = $serviceName + $parameter = $originalServiceStatus + } + Set-Service @arguments + (Get-Service -Name $serviceName).$parameter | Should BeExactly $originalServiceStatus } }