a353e8e16d
This work converts all the tests over to beaker. Some things are done slightly different in beaker, we rely much more heavily on catch_failures rather than explicitly laying out the exit codes we want but I have attempted to preserve the spirit of all tests.
148 lines
4.2 KiB
Ruby
148 lines
4.2 KiB
Ruby
require 'spec_helper_acceptance'
|
|
|
|
describe 'postgresql::server::db' do
|
|
after :all do
|
|
# Cleanup after tests have ran
|
|
apply_manifest("class { 'postgresql::server': ensure => absent }", :catch_failures => true)
|
|
end
|
|
|
|
it 'should idempotently create a db that we can connect to' do
|
|
begin
|
|
pp = <<-EOS.unindent
|
|
$db = 'postgresql_test_db'
|
|
class { 'postgresql::server': }
|
|
|
|
postgresql::server::db { $db:
|
|
user => $db,
|
|
password => postgresql_password($db, $db),
|
|
}
|
|
EOS
|
|
|
|
apply_manifest(pp, :catch_failures => true)
|
|
apply_manifest(pp, :catch_changes => true)
|
|
|
|
psql('--command="select datname from pg_database" postgresql_test_db') do |r|
|
|
expect(r.stdout).to match(/postgresql_test_db/)
|
|
expect(r.stderr).to eq('')
|
|
end
|
|
ensure
|
|
psql('--command="drop database postgresql_test_db" postgres')
|
|
end
|
|
end
|
|
|
|
it 'should take a locale parameter' do
|
|
pending('no support for locale parameter with centos 5', :if => (fact('osfamily') == 'RedHat' and fact('lsbmajdistrelease') == '5'))
|
|
begin
|
|
pp = <<-EOS.unindent
|
|
class { 'postgresql::server': }
|
|
if($::operatingsystem == 'Debian') {
|
|
# Need to make sure the correct locale is installed first
|
|
file { '/etc/locale.gen':
|
|
content => "en_US ISO-8859-1\nen_NG UTF-8\n",
|
|
}~>
|
|
exec { '/usr/sbin/locale-gen':
|
|
logoutput => true,
|
|
refreshonly => true,
|
|
}
|
|
}
|
|
postgresql::server::db { 'test1':
|
|
user => 'test1',
|
|
password => postgresql_password('test1', 'test1'),
|
|
encoding => 'UTF8',
|
|
locale => 'en_NG',
|
|
}
|
|
EOS
|
|
|
|
apply_manifest(pp, :catch_failures => true)
|
|
apply_manifest(pp, :catch_changes => true)
|
|
|
|
psql('-c "show lc_ctype" test1') do |r|
|
|
expect(r.stdout).to match(/en_NG/)
|
|
end
|
|
|
|
psql('-c "show lc_collate" test1') do |r|
|
|
expect(r.stdout).to match(/en_NG/)
|
|
end
|
|
ensure
|
|
psql('--command="drop database test1" postgres')
|
|
end
|
|
end
|
|
|
|
it 'should take an istemplate parameter' do
|
|
begin
|
|
pp = <<-EOS.unindent
|
|
$db = 'template2'
|
|
class { 'postgresql::server': }
|
|
|
|
postgresql::server::db { $db:
|
|
user => $db,
|
|
password => postgresql_password($db, $db),
|
|
istemplate => true,
|
|
}
|
|
EOS
|
|
|
|
apply_manifest(pp, :catch_failures => true)
|
|
apply_manifest(pp, :catch_changes => true)
|
|
|
|
psql('--command="select datname from pg_database" template2') do |r|
|
|
expect(r.stdout).to match(/template2/)
|
|
expect(r.stderr).to eq('')
|
|
end
|
|
ensure
|
|
psql('--command="drop database template2" postgres', 'postgres', [1,2]) do |r|
|
|
expect(r.stdout).to eq('')
|
|
expect(r.stderr).to match(/cannot drop a template database/)
|
|
end
|
|
end
|
|
end
|
|
|
|
it 'should update istemplate parameter' do
|
|
begin
|
|
pp = <<-EOS.unindent
|
|
$db = 'template2'
|
|
class { 'postgresql::server': }
|
|
|
|
postgresql::server::db { $db:
|
|
user => $db,
|
|
password => postgresql_password($db, $db),
|
|
istemplate => false,
|
|
}
|
|
EOS
|
|
|
|
apply_manifest(pp, :catch_failures => true)
|
|
apply_manifest(pp, :catch_changes => true)
|
|
|
|
psql('--command="select datname from pg_database" template2') do |r|
|
|
expect(r.stdout).to match(/template2/)
|
|
expect(r.stderr).to eq('')
|
|
end
|
|
ensure
|
|
psql('--command="drop database template2" postgres')
|
|
end
|
|
end
|
|
|
|
it 'should take a template parameter' do
|
|
begin
|
|
pp = <<-EOS.unindent
|
|
$db = 'postgresql_test_db'
|
|
class { 'postgresql::server': }
|
|
|
|
postgresql::server::db { $db:
|
|
user => $db,
|
|
template => 'template1',
|
|
password => postgresql_password($db, $db),
|
|
}
|
|
EOS
|
|
|
|
apply_manifest(pp, :catch_failures => true)
|
|
apply_manifest(pp, :catch_changes => true)
|
|
|
|
psql('--command="select datname from pg_database" postgresql_test_db') do |r|
|
|
expect(r.stdout).to match(/postgresql_test_db/)
|
|
expect(r.stderr).to eq('')
|
|
end
|
|
ensure
|
|
psql('--command="drop database postgresql_test_db" postgres')
|
|
end
|
|
end
|
|
end
|