diff options
Diffstat (limited to 'spec/functional/win32/service_manager_spec.rb')
-rw-r--r-- | spec/functional/win32/service_manager_spec.rb | 220 |
1 files changed, 0 insertions, 220 deletions
diff --git a/spec/functional/win32/service_manager_spec.rb b/spec/functional/win32/service_manager_spec.rb deleted file mode 100644 index 5746283b78..0000000000 --- a/spec/functional/win32/service_manager_spec.rb +++ /dev/null @@ -1,220 +0,0 @@ -# -# Author:: Serdar Sutay (<serdar@chef.io>) -# Copyright:: Copyright (c) Chef Software Inc. -# License:: Apache License, Version 2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -require "spec_helper" -if ChefUtils.windows? - require "chef/application/windows_service_manager" -end - -# -# ATTENTION: -# This test creates a windows service for testing purposes and runs it -# as Local System (or an otherwise specified user) on windows boxes. -# This test will fail if you run the tests inside a Windows VM by -# sharing the code from your host since Local System account by -# default can't see the mounted partitions. -# Run this test by copying the code to a local VM directory or setup -# Local System account to see the maunted partitions for the shared -# directories. -# - -describe "Chef::Application::WindowsServiceManager", :windows_only, :system_windows_service_gem_only do - - include_context "using Win32::Service" - - context "with invalid service definition" do - it "throws an error when initialized with no service definition" do - expect { Chef::Application::WindowsServiceManager.new(nil) }.to raise_error(ArgumentError) - end - - it "throws an error with required missing options" do - %i{service_name service_display_name service_description service_file_path}.each do |key| - service_def = test_service.dup - service_def.delete(key) - - expect { Chef::Application::WindowsServiceManager.new(service_def) }.to raise_error(ArgumentError) - end - end - end - - context "with valid definition" do - before(:each) do - @service_manager_output = [ ] - # Uncomment below lines to debug this test - # original_puts = $stdout.method(:puts) - allow($stdout).to receive(:puts) do |message| - @service_manager_output << message - # original_puts.call(message) - end - end - - after(:each) do - cleanup - end - - context "when service doesn't exist" do - it "default => should say service don't exist" do - service_manager.run - - expect(@service_manager_output.grep(/doesn't exist on the system/).length).to be > 0 - end - - it "install => should install the service" do - service_manager.run(["-a", "install"]) - - expect(test_service_exists?).to be_truthy - end - - it "other actions => should say service doesn't exist" do - %w{delete start stop pause resume uninstall}.each do |action| - service_manager.run(["-a", action]) - expect(@service_manager_output.grep(/doesn't exist on the system/).length).to be > 0 - @service_manager_output = [ ] - end - end - end - - context "when service exists" do - before(:each) do - service_manager.run(["-a", "install"]) - end - - it "should have an own-process, non-interactive type" do - status = ::Win32::Service.status("spec-service") - expect(status[:service_type]).to eq("own process") - expect(status[:interactive]).to be_falsey - end - - it "install => should say service already exists" do - service_manager.run(["-a", "install"]) - expect(@service_manager_output.grep(/already exists/).length).to be > 0 - end - - context "and service is stopped" do - %w{delete uninstall}.each do |action| - it "#{action} => should remove the service", :volatile do - service_manager.run(["-a", action]) - expect(test_service_exists?).to be_falsey - end - end - - it "default, status => should say service is stopped" do - service_manager.run([ ]) - expect(@service_manager_output.grep(/stopped/).length).to be > 0 - @service_manager_output = [ ] - - service_manager.run(["-a", "status"]) - expect(@service_manager_output.grep(/stopped/).length).to be > 0 - end - - it "start should start the service", :volatile do - service_manager.run(["-a", "start"]) - expect(test_service_state).to eq("running") - expect(File.exist?(test_service_file)).to be_truthy - end - - it "stop should not affect the service" do - service_manager.run(["-a", "stop"]) - expect(test_service_state).to eq("stopped") - end - - %w{pause resume}.each do |action| - it "#{action} => should raise error" do - expect { service_manager.run(["-a", action]) }.to raise_error(SystemCallError) - end - end - - context "and service is started", :volatile do - before(:each) do - service_manager.run(["-a", "start"]) - end - - %w{delete uninstall}.each do |action| - it "#{action} => should remove the service", :volatile do - service_manager.run(["-a", action]) - expect(test_service_exists?).to be_falsey - end - end - - it "default, status => should say service is running" do - service_manager.run([ ]) - expect(@service_manager_output.grep(/running/).length).to be > 0 - @service_manager_output = [ ] - - service_manager.run(["-a", "status"]) - expect(@service_manager_output.grep(/running/).length).to be > 0 - end - - it "stop should stop the service" do - service_manager.run(["-a", "stop"]) - expect(test_service_state).to eq("stopped") - end - - it "pause should pause the service" do - service_manager.run(["-a", "pause"]) - expect(test_service_state).to eq("paused") - end - - it "resume should have no affect" do - service_manager.run(["-a", "resume"]) - expect(test_service_state).to eq("running") - end - end - - context "and service is paused", :volatile do - before(:each) do - service_manager.run(["-a", "start"]) - service_manager.run(["-a", "pause"]) - end - - actions = %w{delete uninstall} - actions.each do |action| - it "#{action} => should remove the service" do - service_manager.run(["-a", action]) - expect(test_service_exists?).to be_falsey - end - end - - it "default, status => should say service is paused" do - service_manager.run([ ]) - expect(@service_manager_output.grep(/paused/).length).to be > 0 - @service_manager_output = [ ] - - service_manager.run(["-a", "status"]) - expect(@service_manager_output.grep(/paused/).length).to be > 0 - end - - it "stop should stop the service" do - service_manager.run(["-a", "stop"]) - expect(test_service_state).to eq("stopped") - end - - it "pause should not affect the service" do - service_manager.run(["-a", "pause"]) - expect(test_service_state).to eq("paused") - end - - it "start should raise an error" do - expect { service_manager.run(["-a", "start"]) }.to raise_error(::Win32::Service::Error) - end - - end - end - end - end -end |