spec/chef/cookbooks/postgresql/resources/user_spec.rb (62 lines of code) (raw):
require 'chef_helper'
RSpec.describe 'postgresql_user' do
before do
allow_any_instance_of(PgHelper).to receive(:is_offline_or_readonly?).and_return(false)
allow_any_instance_of(PgHelper).to receive(:user_exists?).and_return(false, true)
allow_any_instance_of(PgHelper).to receive(:user_password_match?).and_return(false)
allow_any_instance_of(PgHelper).to receive(:user_options_set?).and_return(false)
allow_any_instance_of(PgHelper).to receive(:is_ready?).and_return(true)
allow_any_instance_of(PgHelper).to receive(:is_running?).and_return(true)
end
let(:runner) { ChefSpec::SoloRunner.new(step_into: ['postgresql_user']) }
context 'create' do
let(:chef_run) { runner.converge('test_postgresql::postgresql_user_create') }
it 'creates a user' do
expect(chef_run).to run_execute('create example postgresql user')
end
end
context 'password' do
context 'not specified' do
let(:chef_run) { runner.converge('test_postgresql::postgresql_user_password_unspecified') }
it 'does not set the password of the no_password user' do
expect(chef_run).not_to run_execute('set password for no_password postgresql user')
end
end
context 'nil' do
let(:chef_run) { runner.converge('test_postgresql::postgresql_user_password_nil') }
it 'does set the password of the nil_password user' do
expect(chef_run).to run_execute('set password for nil_password postgresql user')
.with(command: /PASSWORD NULL/)
end
end
context 'md5' do
let(:chef_run) { runner.converge('test_postgresql::postgresql_user_password_md5') }
it 'does set the password of the md5_password user' do
expect(chef_run).to run_execute('set password for md5_password postgresql user')
.with(command: /PASSWORD 'e99b79fbdf9b997e6918df2385e60f5c'/)
end
end
context 'empty' do
let(:chef_run) { runner.converge('test_postgresql::postgresql_user_password_empty') }
it 'does set the password of the empty_password user' do
expect(chef_run).to run_execute('set password for empty_password postgresql user')
.with(command: /PASSWORD ''/)
end
end
end
context 'options' do
context 'unspecified' do
let(:chef_run) { runner.converge('test_postgresql::postgresql_user_options_unspecified') }
it 'does not set options' do
expect(chef_run).not_to run_execute('set options for example postgresql user')
end
end
context 'SUPERUSER' do
let(:chef_run) { runner.converge('test_postgresql::postgresql_user_options_superuser') }
it 'does set SUPERUSER' do
expect(chef_run).to run_execute('set options for example postgresql user')
.with(command: /\bSUPERUSER\b/)
end
end
end
end