Skip to content

Commit b3b49af

Browse files
authored
Merge pull request #1311 from ekohl/modernize-specs
Write facts as shared examples, move to Debian 11 and follow rspec-puppet path conventions
2 parents 51179f1 + f4a42a7 commit b3b49af

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+311
-972
lines changed

lib/puppet/functions/postgresql/postgresql_password.rb

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# frozen_string_literal: true
2+
23
require 'openssl'
34
require 'base64'
45

@@ -42,12 +43,12 @@ def default_impl(username, password, sensitive = false, hash = 'md5', salt = nil
4243

4344
def pg_sha256(password, salt)
4445
digest = digest_key(password, salt)
45-
'SCRAM-SHA-256$%s:%s$%s:%s' % [
46-
'4096',
47-
Base64.strict_encode64(salt),
48-
Base64.strict_encode64(client_key(digest)),
49-
Base64.strict_encode64(server_key(digest))
50-
]
46+
'SCRAM-SHA-256$%{iterations}:%{salt}$%{client_key}:%{server_key}' % {
47+
iterations: '4096',
48+
salt: Base64.strict_encode64(salt),
49+
client_key: Base64.strict_encode64(client_key(digest)),
50+
server_key: Base64.strict_encode64(server_key(digest)),
51+
}
5152
end
5253

5354
def digest_key(password, salt)
@@ -56,7 +57,7 @@ def digest_key(password, salt)
5657
salt: salt,
5758
iterations: 4096,
5859
length: 32,
59-
hash: OpenSSL::Digest::SHA256.new
60+
hash: OpenSSL::Digest::SHA256.new,
6061
)
6162
end
6263

manifests/server/default_privileges.pp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
# @param connect_settings Specifies a hash of environment variables used when connecting to a remote server.
1515
# @param psql_path Specifies the path to the psql command.
1616
define postgresql::server::default_privileges (
17-
Optional[String] $target_role = undef,
1817
String $role,
1918
String $db,
2019
String $privilege,
@@ -36,6 +35,7 @@
3635
] $ensure = 'present',
3736
String $group = $postgresql::server::group,
3837
String $psql_path = $postgresql::server::psql_path,
38+
Optional[String] $target_role = undef,
3939
) {
4040

4141
# If possible use the version of the remote database, otherwise
@@ -74,16 +74,16 @@
7474
}
7575

7676
if $target_role != undef {
77-
$_target_role = " FOR ROLE $target_role"
78-
$_check_target_role = "/$target_role"
77+
$_target_role = " FOR ROLE ${target_role}"
78+
$_check_target_role = "/${target_role}"
7979
} else {
8080
$_target_role = ''
8181
$_check_target_role = ''
8282
}
8383

8484
if $schema != '' {
85-
$_schema = " IN SCHEMA $schema"
86-
$_check_schema = " AND nspname = '$schema'"
85+
$_schema = " IN SCHEMA ${schema}"
86+
$_check_schema = " AND nspname = '${schema}'"
8787
} else {
8888
$_schema = ''
8989
$_check_schema = ' AND nspname IS NULL'

spec/unit/classes/client_spec.rb renamed to spec/classes/client_spec.rb

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,8 @@
22

33
require 'spec_helper'
44

5-
describe 'postgresql::client', type: :class do
6-
let :facts do
7-
{
8-
os: {
9-
family: 'Debian',
10-
name: 'Debian',
11-
release: { 'full' => '8.0', 'major' => '8' },
12-
},
13-
}
14-
end
5+
describe 'postgresql::client' do
6+
include_examples 'Debian 11'
157

168
describe 'with parameters' do
179
let :params do

spec/unit/classes/globals_spec.rb renamed to spec/classes/globals_spec.rb

Lines changed: 5 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,9 @@
22

33
require 'spec_helper'
44

5-
describe 'postgresql::globals', type: :class do
6-
context 'on a debian 8' do
7-
let(:facts) do
8-
{
9-
os: {
10-
family: 'Debian',
11-
name: 'Debian',
12-
release: {
13-
full: '8.0',
14-
major: '8',
15-
},
16-
distro: { 'codename' => 'jessie' },
17-
},
18-
osfamily: 'Debian',
19-
lsbdistid: 'Debian',
20-
lsbdistcodename: 'jessie',
21-
}
22-
end
5+
describe 'postgresql::globals' do
6+
context 'on a debian 11' do
7+
include_examples 'Debian 11'
238

249
describe 'with no parameters' do
2510
it 'works' do
@@ -40,17 +25,8 @@
4025
end
4126
end
4227

43-
context 'on redhat family systems' do
44-
let(:facts) do
45-
{
46-
os: {
47-
family: 'RedHat',
48-
name: 'RedHat',
49-
release: { 'full' => '7.1', 'major' => '7' },
50-
},
51-
osfamily: 'RedHat',
52-
}
53-
end
28+
context 'on redhat 7' do
29+
include_examples 'RedHat 7'
5430

5531
describe 'with no parameters' do
5632
it 'works' do

spec/unit/classes/lib/devel_spec.rb renamed to spec/classes/lib/devel_spec.rb

Lines changed: 7 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,16 @@
22

33
require 'spec_helper'
44

5-
describe 'postgresql::lib::devel', type: :class do
6-
let :facts do
7-
{
8-
os: {
9-
family: 'Debian',
10-
name: 'Debian',
11-
release: { 'full' => '8.0', 'major' => '8' },
12-
},
13-
}
14-
end
5+
describe 'postgresql::lib::devel' do
6+
include_examples 'Debian 11'
157

168
it { is_expected.to contain_class('postgresql::lib::devel') }
179

1810
describe 'link pg_config to /usr/bin' do
1911
it {
2012
is_expected.not_to contain_file('/usr/bin/pg_config') \
2113
.with_ensure('link') \
22-
.with_target('/usr/lib/postgresql/8.4/bin/pg_config')
14+
.with_target('/usr/lib/postgresql/13/bin/pg_config')
2315
}
2416
end
2517

@@ -34,29 +26,13 @@
3426
end
3527

3628
describe 'should not link pg_config on RedHat with default version' do
37-
let(:facts) do
38-
{
39-
os: {
40-
family: 'RedHat',
41-
name: 'CentOS',
42-
release: { 'full' => '6.3', 'major' => '6' },
43-
},
44-
}
45-
end
29+
include_examples 'RedHat 6'
4630

4731
it { is_expected.not_to contain_file('/usr/bin/pg_config') }
4832
end
4933

5034
describe 'link pg_config on RedHat with non-default version' do
51-
let(:facts) do
52-
{
53-
os: {
54-
family: 'RedHat',
55-
name: 'RedHat',
56-
release: { 'full' => '6.3', 'major' => '6' },
57-
},
58-
}
59-
end
35+
include_examples 'RedHat 6'
6036
let :pre_condition do
6137
"class { '::postgresql::globals': version => '9.3' }"
6238
end
@@ -69,24 +45,15 @@
6945
end
7046

7147
describe 'on Gentoo' do
72-
let :facts do
73-
{
74-
os: {
75-
family: 'Gentoo',
76-
name: 'Gentoo',
77-
},
78-
}
79-
end
48+
include_examples 'Gentoo'
8049
let :params do
8150
{
8251
link_pg_config: false,
8352
}
8453
end
8554

8655
it 'fails to compile' do
87-
expect {
88-
is_expected.to compile
89-
}.to raise_error(%r{is not supported})
56+
is_expected.to compile.and_raise_error(%r{is not supported})
9057
end
9158
end
9259
end

spec/unit/classes/lib/java_spec.rb renamed to spec/classes/lib/java_spec.rb

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,9 @@
22

33
require 'spec_helper'
44

5-
describe 'postgresql::lib::java', type: :class do
5+
describe 'postgresql::lib::java' do
66
describe 'on a debian based os' do
7-
let :facts do
8-
{
9-
os: {
10-
family: 'Debian',
11-
name: 'Debian',
12-
release: { 'full' => '8.0', 'major' => '8' },
13-
},
14-
}
15-
end
7+
include_examples 'Debian 11'
168

179
it {
1810
is_expected.to contain_package('postgresql-jdbc').with(
@@ -24,15 +16,7 @@
2416
end
2517

2618
describe 'on a redhat based os' do
27-
let :facts do
28-
{
29-
os: {
30-
family: 'RedHat',
31-
name: 'RedHat',
32-
release: { 'full' => '6.4', 'major' => '6' },
33-
},
34-
}
35-
end
19+
include_examples 'RedHat 8'
3620

3721
it {
3822
is_expected.to contain_package('postgresql-jdbc').with(

spec/classes/lib/perl_spec.rb

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# frozen_string_literal: true
2+
3+
require 'spec_helper'
4+
5+
describe 'postgresql::lib::perl' do
6+
describe 'on redhat 8' do
7+
include_examples 'RedHat 8'
8+
9+
it {
10+
is_expected.to contain_package('perl-DBD-Pg').with(
11+
name: 'perl-DBD-Pg',
12+
ensure: 'present',
13+
)
14+
}
15+
end
16+
17+
describe 'on debian 11' do
18+
include_examples 'Debian 11'
19+
20+
it {
21+
is_expected.to contain_package('perl-DBD-Pg').with(
22+
name: 'libdbd-pg-perl',
23+
ensure: 'present',
24+
)
25+
}
26+
end
27+
end

spec/unit/classes/lib/pgdocs_spec.rb renamed to spec/classes/lib/pgdocs_spec.rb

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,9 @@
22

33
require 'spec_helper'
44

5-
describe 'postgresql::lib::docs', type: :class do
5+
describe 'postgresql::lib::docs' do
66
describe 'on a redhat based os' do
7-
let :facts do
8-
{
9-
os: {
10-
family: 'RedHat',
11-
name: 'RedHat',
12-
release: { 'full' => '6.4', 'major' => '6' },
13-
},
14-
}
15-
end
7+
include_examples 'RedHat 8'
168

179
it {
1810
is_expected.to contain_package('postgresql-docs').with(

spec/classes/lib/python_spec.rb

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# frozen_string_literal: true
2+
3+
require 'spec_helper'
4+
5+
describe 'postgresql::lib::python' do
6+
describe 'on redhat 7' do
7+
include_examples 'RedHat 7'
8+
9+
it {
10+
is_expected.to contain_package('python-psycopg2').with(
11+
name: 'python-psycopg2',
12+
ensure: 'present',
13+
)
14+
}
15+
end
16+
17+
describe 'on redhat 8' do
18+
include_examples 'RedHat 8'
19+
20+
it {
21+
is_expected.to contain_package('python-psycopg2').with(
22+
name: 'python3-psycopg2',
23+
ensure: 'present',
24+
)
25+
}
26+
end
27+
28+
describe 'on debian 11' do
29+
include_examples 'Debian 11'
30+
31+
it {
32+
is_expected.to contain_package('python-psycopg2').with(
33+
name: 'python-psycopg2',
34+
ensure: 'present',
35+
)
36+
}
37+
end
38+
end

spec/classes/params_spec.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# frozen_string_literal: true
2+
3+
require 'spec_helper'
4+
5+
describe 'postgresql::params' do
6+
on_supported_os.each do |os, os_facts|
7+
context "on #{os}" do
8+
let(:facts) { os_facts }
9+
10+
it { is_expected.to contain_class('postgresql::params') }
11+
end
12+
end
13+
end

spec/classes/repo_spec.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# frozen_string_literal: true
2+
3+
require 'spec_helper'
4+
5+
describe 'postgresql::repo' do
6+
include_examples 'Debian 11'
7+
8+
describe 'with no parameters' do
9+
it 'instantiates apt_postgresql_org class' do
10+
is_expected.to contain_class('postgresql::repo::apt_postgresql_org')
11+
end
12+
end
13+
end

0 commit comments

Comments
 (0)