diff options
author | Tom Duffield <tom@chef.io> | 2016-10-21 10:10:00 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-21 10:10:00 -0500 |
commit | 7143369570e38c1347309ccf6049ac756afc2926 (patch) | |
tree | 93ed7b9a55023a4b840536ab3cfbd7a265487171 /spec | |
parent | 9bc0f33dd7ed18e19d7b6354d49fbb3dc25a3a2d (diff) | |
parent | f1920088085648f74225c6fdda4efdd95afa35ff (diff) | |
download | chef-7143369570e38c1347309ccf6049ac756afc2926.tar.gz |
Merge pull request #5472 from chef/COOL-597/address-suse-test-failures
Address test failures in SUSE 11.4 and 12.1
Diffstat (limited to 'spec')
-rw-r--r-- | spec/functional/resource/user/useradd_spec.rb | 6 | ||||
-rw-r--r-- | spec/unit/provider/group/suse_spec.rb | 90 |
2 files changed, 94 insertions, 2 deletions
diff --git a/spec/functional/resource/user/useradd_spec.rb b/spec/functional/resource/user/useradd_spec.rb index 79d62436f5..874155c107 100644 --- a/spec/functional/resource/user/useradd_spec.rb +++ b/spec/functional/resource/user/useradd_spec.rb @@ -637,8 +637,10 @@ describe Chef::Provider::User::Useradd, metadata do context "and has no password" do # TODO: platform_family should be setup in spec_helper w/ tags - if %w{suse opensuse}.include?(OHAI_SYSTEM["platform_family"]) - # suse gets this right: + if %w{opensuse}.include?(OHAI_SYSTEM["platform_family"]) || + (%w{suse}.include?(OHAI_SYSTEM["platform_family"]) && + OHAI_SYSTEM["platform_version"].to_f < 12.1) + # suse 11.x gets this right: it "errors out trying to unlock the user" do expect(@error).to be_a(Mixlib::ShellOut::ShellCommandFailed) expect(@error.message).to include("Cannot unlock the password") diff --git a/spec/unit/provider/group/suse_spec.rb b/spec/unit/provider/group/suse_spec.rb new file mode 100644 index 0000000000..da4e8e9155 --- /dev/null +++ b/spec/unit/provider/group/suse_spec.rb @@ -0,0 +1,90 @@ +# +# Author:: Tom Duffield (<tom@chef.io>) +# Copyright:: Copyright 2016 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" + +describe Chef::Provider::Group::Suse do + let(:node) { Chef::Node.new } + let(:events) { Chef::EventDispatch::Dispatcher.new } + let(:run_context) { Chef::RunContext.new(node, {}, events) } + let(:new_members) { %w{root new_user} } + let(:new_resource) do + Chef::Resource::Group.new("new_group").tap do |r| + r.gid 50 + r.members new_members + r.system false + r.non_unique false + end + end + let(:current_resource) do + Chef::Resource::Group.new("new_group").tap do |r| + r.gid 50 + r.members %w{root} + r.system false + r.non_unique false + end + end + let(:provider) do + described_class.new(new_resource, run_context).tap do |p| + p.current_resource = current_resource + end + end + + describe "when determining the current group state" do + before(:each) do + allow(File).to receive(:exists?).and_return(true) + provider.action = :create + provider.define_resource_requirements + end + + # Checking for required binaries is already done in the spec + # for Chef::Provider::Group - no need to repeat it here. We'll + # include only what's specific to this provider. + it "should raise an error if the required binary /usr/sbin/groupmod doesn't exist" do + expect(File).to receive(:exists?).with("/usr/sbin/groupmod").and_return(false) + expect { provider.process_resource_requirements }.to raise_error(Chef::Exceptions::Group) + end + + it "should raise error if one of the member users does not exist" do + expect(Etc).to receive(:getpwnam).with("new_user").and_raise ArgumentError + expect { provider.process_resource_requirements }.to raise_error(Chef::Exceptions::Group) + end + end + + describe "#set_members" do + it "should add missing members and remove deleted members" do + expect(provider).not_to receive(:remove_member) + expect(provider).to receive(:add_member).with("new_user") + provider.set_members(new_members) + end + end + + describe "#add_member" do + it "should call out to groupmod to add user" do + expect(provider).to receive(:shell_out!).with("groupmod -A new_user new_group") + provider.add_member("new_user") + end + end + + describe "#remove_member" do + it "should call out to groupmod to remove user" do + expect(provider).to receive(:shell_out!).with("groupmod -R new_user new_group") + provider.remove_member("new_user") + end + end +end |