spec/chef/cookbooks/postgresql/resources/database_spec.rb (51 lines of code) (raw):

require 'chef_helper' RSpec.describe 'postgresql_database' do let(:runner) do ChefSpec::SoloRunner.new(step_into: %w(postgresql_database)) do |node| # unix_socket_directory is normally conditionally set in postgresql::enable # which is not executed as part of this spec node.normal['postgresql']['unix_socket_directory'] = '/var/opt/gitlab/postgresql' end end context 'create' do let(:chef_run) { runner.converge('test_postgresql::postgresql_database_create') } context 'server is running' do before do allow_any_instance_of(PgHelper).to receive(:is_running?).and_return(true) end context 'database does not already exist' do before do allow_any_instance_of(PgHelper).to receive(:database_exists?).and_return(false) end it 'creates a database' do expect(chef_run).to run_execute('create database example').with( command: %(/opt/gitlab/embedded/bin/createdb --port 5432 -h /var/opt/gitlab/postgresql -O gitlab example), user: 'gitlab-psql' ) end context 'with non-default options' do let(:chef_run) { runner.converge('test_postgresql::postgresql_database_create_with_options') } it 'creates with the correct options set' do expect(chef_run).to run_execute('create database fakedb').with( command: %(/opt/gitlab/embedded/bin/createdb --port 9999 -h /fake/dir -O fakeuser fakedb) ) end end end context 'database already exists' do before do allow_any_instance_of(PgHelper).to receive(:database_exists?).with('example').and_return(true) end it 'does nothing' do expect(chef_run).not_to run_execute('create database example') end end end context 'server is not running' do before do allow_any_instance_of(PgHelper).to receive(:is_running?).and_return(false) end it 'does nothing' do expect(chef_run).not_to run_execute('create database example') end end end end