diff options
Diffstat (limited to 'spec/functional/resource/group_spec.rb')
-rw-r--r-- | spec/functional/resource/group_spec.rb | 78 |
1 files changed, 60 insertions, 18 deletions
diff --git a/spec/functional/resource/group_spec.rb b/spec/functional/resource/group_spec.rb index 98ec77a01b..b8369d087b 100644 --- a/spec/functional/resource/group_spec.rb +++ b/spec/functional/resource/group_spec.rb @@ -20,7 +20,11 @@ require 'spec_helper' require 'functional/resource/base' -describe Chef::Resource::Group, :requires_root_or_running_windows do +# Chef::Resource::Group are turned off on Mac OS X 10.6 due to caching +# issues around Etc.getgrnam() not picking up the group membership +# changes that are done on the system. Etc.endgrent is not functioning +# correctly on certain 10.6 boxes. +describe Chef::Resource::Group, :requires_root_or_running_windows, :not_supported_on_mac_osx_106 do def group_should_exist(group) case ohai[:platform_family] when "debian", "fedora", "rhel", "suse", "gentoo", "slackware", "arch" @@ -55,6 +59,9 @@ describe Chef::Resource::Group, :requires_root_or_running_windows do def user(username) usr = Chef::Resource::User.new("#{username}", run_context) + if ohai[:platform_family] == "windows" + usr.password("ComplexPass11!") + end usr end @@ -101,24 +108,24 @@ describe Chef::Resource::Group, :requires_root_or_running_windows do end describe "when append is not set" do - let(:included_members) { ["group-spec-Eric"] } + let(:included_members) { ["spec-Eric"] } before do - create_user("group-spec-Eric") - create_user("group-spec-Gordon") - add_members_to_group(["group-spec-Gordon"]) + create_user("spec-Eric") + create_user("spec-Gordon") + add_members_to_group(["spec-Gordon"]) end after do - remove_user("group-spec-Eric") - remove_user("group-spec-Gordon") + remove_user("spec-Eric") + remove_user("spec-Gordon") end it "should remove the existing users and add the new users to the group" do group_resource.run_action(tested_action) - user_exist_in_group?("group-spec-Eric").should == true - user_exist_in_group?("group-spec-Gordon").should == false + user_exist_in_group?("spec-Eric").should == true + user_exist_in_group?("spec-Gordon").should == false end end @@ -153,7 +160,7 @@ describe Chef::Resource::Group, :requires_root_or_running_windows do describe "when group contains some users" do before(:each) do - add_members_to_group([ "group-spec-Gordon", "group-spec-Anthony" ]) + add_members_to_group([ "spec-Gordon", "spec-Anthony" ]) end it "should add the included users and remove excluded users" do @@ -185,7 +192,7 @@ describe Chef::Resource::Group, :requires_root_or_running_windows do end end - let(:group_name) { "chef-rspec-test-#{SecureRandom.random_number(9999)}" } + let(:group_name) { "cheftest-#{SecureRandom.random_number(9999)}" } let(:included_members) { nil } let(:excluded_members) { nil } let(:group_resource) { @@ -234,7 +241,8 @@ downthestreetalwayshadagoodsmileonhisfacetheoldmanwalkingdownthestreeQQQQQQ" } end end - describe "should raise an error when same member is included in the members and excluded_members" do + # not_supported_on_solaris because of the use of excluded_members + describe "should raise an error when same member is included in the members and excluded_members", :not_supported_on_solaris do it "should raise an error" do invalid_resource = group_resource.dup invalid_resource.members(["Jack"]) @@ -265,9 +273,9 @@ downthestreetalwayshadagoodsmileonhisfacetheoldmanwalkingdownthestreeQQQQQQ" } end end - describe "group modify action" do - let(:included_members) { ["group-spec-Gordon", "group-spec-Eric"] } - let(:excluded_members) { ["group-spec-Anthony"] } + describe "group modify action", :not_supported_on_solaris do + let(:included_members) { ["spec-Gordon", "spec-Eric"] } + let(:excluded_members) { ["spec-Anthony"] } let(:tested_action) { :modify } describe "when there is no group" do @@ -281,9 +289,9 @@ downthestreetalwayshadagoodsmileonhisfacetheoldmanwalkingdownthestreeQQQQQQ" } end end - describe "group manage action" do - let(:included_members) { ["group-spec-Gordon", "group-spec-Eric"] } - let(:excluded_members) { ["group-spec-Anthony"] } + describe "group manage action", :not_supported_on_solaris do + let(:included_members) { ["spec-Gordon", "spec-Eric"] } + let(:excluded_members) { ["spec-Anthony"] } let(:tested_action) { :manage } describe "when there is no group" do @@ -297,5 +305,39 @@ downthestreetalwayshadagoodsmileonhisfacetheoldmanwalkingdownthestreeQQQQQQ" } it_behaves_like "correct group management" end end + + describe "group resource with Usermod provider", :solaris_only do + describe "when excluded_members is set" do + let(:excluded_members) { ["spec-Anthony"] } + + it ":manage should raise an error" do + lambda {group_resource.run_action(:manage) }.should raise_error + end + + it ":modify should raise an error" do + lambda {group_resource.run_action(:modify) }.should raise_error + end + + it ":create should raise an error" do + lambda {group_resource.run_action(:create) }.should raise_error + end + end + + describe "when append is not set" do + let(:included_members) { ["spec-Gordon", "spec-Eric"] } + + before(:each) do + group_resource.append(false) + end + + it ":manage should raise an error" do + lambda {group_resource.run_action(:manage) }.should raise_error + end + + it ":modify should raise an error" do + lambda {group_resource.run_action(:modify) }.should raise_error + end + end + end end |