diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/unit/provider/user/solaris_spec.rb | 75 |
1 files changed, 66 insertions, 9 deletions
diff --git a/spec/unit/provider/user/solaris_spec.rb b/spec/unit/provider/user/solaris_spec.rb index ef62fd1d5a..a3c17a9a56 100644 --- a/spec/unit/provider/user/solaris_spec.rb +++ b/spec/unit/provider/user/solaris_spec.rb @@ -1,7 +1,9 @@ # # Author:: Adam Jacob (<adam@opscode.com>) # Author:: Daniel DeLeo (<dan@opscode.com>) +# Author:: Dave Eddy (<dave@daveeddy.com>) # Copyright:: Copyright (c) 2008, 2010 Opscode, Inc. +# Copyright:: Copyright (c) 2015, Dave Eddy # # License:: Apache License, Version 2.0 # @@ -18,6 +20,9 @@ # limitations under the License. # +ShellCmdResult = Struct.new(:stdout, :stderr, :exitstatus) + +require 'mixlib/shellout' require 'spec_helper' describe Chef::Provider::User::Solaris do @@ -31,15 +36,6 @@ describe Chef::Provider::User::Solaris do p end - supported_useradd_options = { - 'comment' => "-c", - 'gid' => "-g", - 'uid' => "-u", - 'shell' => "-s" - } - - include_examples "a useradd-based user provider", supported_useradd_options - describe "when we want to set a password" do before(:each) do @node = Chef::Node.new @@ -77,4 +73,65 @@ describe Chef::Provider::User::Solaris do end end + describe 'when managing user locked status' do + before(:each) do + @node = Chef::Node.new + @events = Chef::EventDispatch::Dispatcher.new + @run_context = Chef::RunContext.new(@node, {}, @events) + + @new_resource = Chef::Resource::User.new('dave') + @current_resource = @new_resource.dup + + @provider = Chef::Provider::User::Solaris.new(@new_resource, @run_context) + @provider.current_resource = @current_resource + end + describe 'when determining if the user is locked' do + + # locked shadow lines + [ + 'dave:LK:::::::', + 'dave:*LK*:::::::', + 'dave:*LK*foobar:::::::', + 'dave:*LK*bahamas10:::::::', + 'dave:*LK*L....:::::::', + ].each do |shadow| + it "should return true if user is locked with #{shadow}" do + shell_return = ShellCmdResult.new(shadow + "\n", '', 0) + expect(provider).to receive(:shell_out!).with('getent', 'shadow', @new_resource.username).and_return(shell_return) + expect(provider.check_lock).to eql(true) + end + end + + # unlocked shadow lines + [ + 'dave:NP:::::::', + 'dave:*NP*:::::::', + 'dave:foobar:::::::', + 'dave:bahamas10:::::::', + 'dave:L...:::::::', + ].each do |shadow| + it "should return false if user is unlocked with #{shadow}" do + shell_return = ShellCmdResult.new(shadow + "\n", '', 0) + expect(provider).to receive(:shell_out!).with('getent', 'shadow', @new_resource.username).and_return(shell_return) + expect(provider.check_lock).to eql(false) + end + end + end + + describe 'when locking the user' do + it 'should run passwd -l with the new resources username' do + shell_return = ShellCmdResult.new('', '', 0) + expect(provider).to receive(:shell_out!).with('passwd', '-l', @new_resource.username).and_return(shell_return) + provider.lock_user + end + end + + describe 'when unlocking the user' do + it 'should run passwd -u with the new resources username' do + shell_return = ShellCmdResult.new('', '', 0) + expect(provider).to receive(:shell_out!).with('passwd', '-u', @new_resource.username).and_return(shell_return) + provider.unlock_user + end + end + end end |