summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Barnett <jason.w.barnett@gmail.com>2019-10-10 11:41:58 -0400
committerJason Barnett <jason.w.barnett@gmail.com>2019-10-10 11:56:37 -0400
commit1d4cb3b4ec01f77c96b2915a0507d7b65905785a (patch)
treecb65edccefd471bce9f46bbd29daabc5e1b23a0a
parented72682f01ef7dddcf694b89201ec23d2e1a9cab (diff)
downloadchef-1d4cb3b4ec01f77c96b2915a0507d7b65905785a.tar.gz
Update windows_service to ignore run_as_user case
Signed-off-by: Jason Barnett <jason.w.barnett@gmail.com>
-rw-r--r--lib/chef/provider/service/windows.rb2
-rw-r--r--lib/chef/resource/windows_service.rb2
-rw-r--r--spec/unit/provider/service/windows_spec.rb26
-rw-r--r--spec/unit/resource/windows_service_spec.rb5
4 files changed, 30 insertions, 5 deletions
diff --git a/lib/chef/provider/service/windows.rb b/lib/chef/provider/service/windows.rb
index 79ac2b1e29..5074261e01 100644
--- a/lib/chef/provider/service/windows.rb
+++ b/lib/chef/provider/service/windows.rb
@@ -273,7 +273,7 @@ class Chef::Provider::Service::Windows < Chef::Provider::Service
Win32::Service.configure(new_config)
logger.info "#{new_resource} configured."
- grant_service_logon(new_resource.run_as_user) if new_resource.run_as_user.casecmp("localsystem") != 0
+ grant_service_logon(new_resource.run_as_user) if new_resource.run_as_user != "localsystem"
end
#
diff --git a/lib/chef/resource/windows_service.rb b/lib/chef/resource/windows_service.rb
index b8ee4edf9c..99aace0943 100644
--- a/lib/chef/resource/windows_service.rb
+++ b/lib/chef/resource/windows_service.rb
@@ -108,7 +108,7 @@ class Chef
description: "Description of the service.",
introduced: "14.0"
- property :run_as_user, String, default: "LocalSystem"
+ property :run_as_user, String, default: "localsystem", coerce: proc { |x| x.downcase }
property :run_as_password, String, default: ""
end
end
diff --git a/spec/unit/provider/service/windows_spec.rb b/spec/unit/provider/service/windows_spec.rb
index 860c0b1d6a..4209624057 100644
--- a/spec/unit/provider/service/windows_spec.rb
+++ b/spec/unit/provider/service/windows_spec.rb
@@ -19,9 +19,17 @@
require "spec_helper"
-describe Chef::Provider::Service::Windows, "load_current_resource", :windows_only do
+describe Chef::Provider::Service::Windows, "load_current_resource" do
include_context "Win32"
+ before(:all) do
+ Chef::ReservedNames::Win32::Security = Class.new unless windows?
+ end
+
+ after(:all) do
+ Chef::ReservedNames::Win32.send(:remove_const, :Security) unless windows?
+ end
+
let(:logger) { double("Mixlib::Log::Child").as_null_object }
let(:chef_service_name) { "chef-client" }
@@ -105,7 +113,7 @@ describe Chef::Provider::Service::Windows, "load_current_resource", :windows_onl
allow(Win32::Service).to receive(:exists?).and_return(true)
allow(Win32::Service).to receive(:configure).and_return(Win32::Service)
allow(Chef::ReservedNames::Win32::Security).to receive(:get_account_right).and_return([])
- allow(Chef::ReservedNames::Win32::Security).to receive(:add_account_right).with("LocalSystem", "SeServiceLogonRight").and_return(0)
+ allow(Chef::ReservedNames::Win32::Security).to receive(:add_account_right).with("localsystem", "SeServiceLogonRight").and_return(0)
end
after(:each) do
@@ -293,7 +301,7 @@ describe Chef::Provider::Service::Windows, "load_current_resource", :windows_onl
start_type: 2,
error_control: 1,
binary_path_name: chef_service_binary_path_name,
- service_start_name: "LocalSystem",
+ service_start_name: "localsystem",
desired_access: 983551
)
provider.action_create
@@ -384,6 +392,18 @@ describe Chef::Provider::Service::Windows, "load_current_resource", :windows_onl
provider.action_configure
end
+ it "does not configure service when run_as_user case is different" do
+ provider.current_resource.run_as_user = "JohnDoe"
+ provider.new_resource.run_as_user = "johndoe"
+ expect(Win32::Service).not_to receive(:configure)
+ provider.action_configure
+
+ provider.current_resource.run_as_user = "johndoe"
+ provider.new_resource.run_as_user = "JohnDoe"
+ expect(Win32::Service).not_to receive(:configure)
+ provider.action_configure
+ end
+
it "calls converge_delayed_start" do
expect(provider).to receive(:converge_delayed_start)
provider.action_configure
diff --git a/spec/unit/resource/windows_service_spec.rb b/spec/unit/resource/windows_service_spec.rb
index a416ca0a05..2c73161913 100644
--- a/spec/unit/resource/windows_service_spec.rb
+++ b/spec/unit/resource/windows_service_spec.rb
@@ -105,4 +105,9 @@ describe Chef::Resource::WindowsService, "initialize" do
expect(resource.send(prop)).to eq(true)
end
end
+
+ it "lowercases run_as_user" do
+ resource.run_as_user = "JohnDoe"
+ expect(resource.run_as_user).to eq("johndoe")
+ end
end