|
2 | 2 |
|
3 | 3 | require 'spec_helper_acceptance'
|
4 | 4 |
|
5 |
| -describe 'postgresql::server::db' do |
6 |
| - before(:all) do |
7 |
| - LitmusHelper.instance.run_shell("cd /tmp; su 'postgres' -c 'pg_ctl stop -D /var/lib/pgsql/data/ -m fast'", acceptable_exit_codes: [0, 1]) unless os[:family].match?(%r{debian|ubuntu}) |
8 |
| - end |
9 |
| - |
10 |
| - it 'creates a database with a deferred password' do |
11 |
| - tmpdir = run_shell('mktemp').stdout |
12 |
| - pp = <<-MANIFEST |
13 |
| - class { 'postgresql::server': |
14 |
| - postgres_password => 'space password', |
15 |
| - } |
16 |
| - postgresql::server::tablespace { 'postgresql-test-db': |
17 |
| - location => '#{tmpdir}', |
18 |
| - } -> |
19 |
| - postgresql::server::db { 'postgresql-test-db': |
20 |
| - comment => 'testcomment', |
21 |
| - user => 'test-user', |
22 |
| - password => Deferred('unwrap', ['test1']) |
23 |
| - tablespace => 'postgresql-test-db', |
| 5 | +describe 'postgresql::server::db:' do |
| 6 | + let(:user) { 'user_test' } |
| 7 | + let(:password) { 'deferred_password_test' } |
| 8 | + let(:database) { 'test_database' } |
| 9 | + |
| 10 | + let(:pp_one) do |
| 11 | + <<-MANIFEST.unindent |
| 12 | + $user = #{user} |
| 13 | + $password = #{password} |
| 14 | + $database = #{database} |
| 15 | +
|
| 16 | + include postgresql::server |
| 17 | + postgresql::server::db { $database: |
| 18 | + user => $user, |
| 19 | + password => Deferred('unwrap', [$password]), |
24 | 20 | }
|
25 | 21 | MANIFEST
|
| 22 | + end |
26 | 23 |
|
27 |
| - idempotent_apply(pp) |
28 |
| - |
29 |
| - # Verify that the postgres password works |
30 |
| - run_shell("echo 'localhost:*:*:postgres:'space password'' > /root/.pgpass") |
31 |
| - run_shell('chmod 600 /root/.pgpass') |
32 |
| - run_shell("psql -U postgres -h localhost --command='\\l'") |
33 |
| - |
34 |
| - result = psql('--command="select datname from pg_database" "postgresql-test-db"') |
35 |
| - expect(result.stdout).to match(%r{postgresql-test-db}) |
36 |
| - expect(result.stderr).to eq('') |
37 |
| - |
38 |
| - result = psql('--command="SELECT 1 FROM pg_roles WHERE rolname=\'test-user\'"') |
39 |
| - expect(result.stdout).to match(%r{\(1 row\)}) |
40 |
| - |
41 |
| - result = psql("--dbname postgresql-test-db --command=\"SELECT pg_catalog.shobj_description(d.oid, 'pg_database') FROM pg_catalog.pg_database d WHERE datname = 'postgresql-test-db' AND pg_catalog.shobj_description(d.oid, 'pg_database') = 'testcomment'\"") # rubocop:disable Layout/LineLength |
42 |
| - expect(result.stdout).to match(%r{\(1 row\)}) |
43 |
| - ensure |
44 |
| - psql('--command=\'drop database "postgresql-test-db"\'') |
| 24 | + it 'creates a database with with the password in the deferred function' do |
| 25 | + if run_shell('puppet --version').stdout[0].to_i < 7 |
| 26 | + skip # Deferred function fixes only in puppet 7, see https://tickets.puppetlabs.com/browse/PUP-11518 |
| 27 | + end |
| 28 | + apply_manifest(pp_one) |
| 29 | + psql_cmd = "PGPASSWORD=#{password} PGUSER=#{user} PGDATABASE=#{database} psql -h 127.0.0.1 -d postgres -c '\\q'" |
| 30 | + run_shell("cd /tmp; su #{shellescape('postgres')} -c #{shellescape(psql_cmd)}", |
| 31 | + acceptable_exit_codes: [0]) |
45 | 32 | end
|
46 | 33 | end
|
0 commit comments