summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authorNick Lewis <nick@puppetlabs.com>2011-07-26 15:59:45 -0700
committerJacob Helwig <jacob@puppetlabs.com>2011-08-19 13:52:57 -0700
commit28b16584d13399f911577a47a355e866d8601085 (patch)
treecee8c2dfe8b1fcbda3f22c104a28c38b2608d65f /spec
parentc69baf63bac4e7f6296b81fcb5278eaf95e7f74b (diff)
downloadpuppet-28b16584d13399f911577a47a355e866d8601085.tar.gz
puppet-28b16584d13399f911577a47a355e866d8601085.tar.xz
puppet-28b16584d13399f911577a47a355e866d8601085.zip
(#8272) Allow disabled Windows services to be started
Because Windows allows a service to be both running and disabled, we now support that capability. If a service is explicitly requested to be running and disabled, we will set it to manual start if necessary, start it, and then disable it. If the service is requested to be running and enabled, we will now enable it before attempting to start it (previously, this would simply try to start it and fail). The exception to this rule is a service which is disabled, and for which we are not managing the enable property. In that case, we assume that some other authority has disabled the service, and respect that, failing to start. Thus, if the user actually wants a service to be running and disabled, they must explicitly declare that intent. Reviewed-By: Jacob Helwig <jacob@puppetlabs.com> (cherry picked from commit 12d0018f93e5a72a728c6decffb351a693a86344)
Diffstat (limited to 'spec')
-rwxr-xr-xspec/unit/provider/service/windows_spec.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/spec/unit/provider/service/windows_spec.rb b/spec/unit/provider/service/windows_spec.rb
index 0667d4694..2012a184a 100755
--- a/spec/unit/provider/service/windows_spec.rb
+++ b/spec/unit/provider/service/windows_spec.rb
@@ -50,6 +50,33 @@ describe Puppet::Type.type(:service).provider(:windows), :if => Puppet.features.
/Cannot start snmptrap, error was: The service cannot be started, either/
)
end
+
+ describe "when the service is disabled" do
+ before :each do
+ @config.start_type = Win32::Service.get_start_type(Win32::Service::SERVICE_DISABLED)
+ Win32::Service.stubs(:start).with(@resource[:name])
+ end
+
+ it "should refuse to start if not managing enable" do
+ expect { @resource.provider.start }.to raise_error(Puppet::Error, /Will not start disabled service/)
+ end
+
+ it "should enable if managing enable and enable is true" do
+ @resource[:enable] = :true
+
+ Win32::Service.expects(:configure).with('service_name' => @resource[:name], 'start_type' => Win32::Service::SERVICE_AUTO_START).returns(Win32::Service)
+
+ @resource.provider.start
+ end
+
+ it "should manual start if managing enable and enable is false" do
+ @resource[:enable] = :false
+
+ Win32::Service.expects(:configure).with('service_name' => @resource[:name], 'start_type' => Win32::Service::SERVICE_DEMAND_START).returns(Win32::Service)
+
+ @resource.provider.start
+ end
+ end
end
describe "#stop" do