Skip to content

Commit a095d81

Browse files
(#68) Added tests for new type/provider and removed CentOS8 Support (#69)
* (#68) Added tests for new type/provider and removed CentOS8 Support Fixes #67 Fixes #68 * Fixed Rubocop issues
1 parent fa462d5 commit a095d81

File tree

4 files changed

+156
-7
lines changed

4 files changed

+156
-7
lines changed

data/os/CentOS-8.yaml

Lines changed: 0 additions & 4 deletions
This file was deleted.

metadata.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
{
4646
"operatingsystem": "CentOS",
4747
"operatingsystemrelease": [
48-
"8",
4948
"9",
5049
"10"
5150
]
@@ -54,7 +53,8 @@
5453
"operatingsystem": "OracleLinux",
5554
"operatingsystemrelease": [
5655
"8",
57-
"9"
56+
"9",
57+
"10"
5858
]
5959
},
6060
{
@@ -69,7 +69,8 @@
6969
"operatingsystem": "Rocky",
7070
"operatingsystemrelease": [
7171
"8",
72-
"9"
72+
"9",
73+
"10"
7374
]
7475
},
7576
{
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# frozen_string_literal: true
2+
3+
require 'spec_helper'
4+
require 'puppet'
5+
6+
describe Puppet::Type.type(:ds389_nss_token).provider(:ruby) do
7+
let(:instance_dir) { '/tmp/slapd-test' }
8+
let(:token_path) { File.join(instance_dir, 'token.txt') }
9+
let(:pin_path) { File.join(instance_dir, 'pin.txt') }
10+
let(:pwdfile) { File.join(instance_dir, 'pwdfile.txt') }
11+
12+
let(:resource) do
13+
Puppet::Type.type(:ds389_nss_token).new(
14+
name: 'test_instance_nss_token',
15+
instance_name: 'test_instance',
16+
instance_dir: instance_dir,
17+
)
18+
end
19+
20+
let(:provider) { Puppet::Type.type(:ds389_nss_token).provider(:ruby).new(resource) }
21+
22+
before(:each) do
23+
FileUtils.mkdir_p(instance_dir)
24+
File.write(pwdfile, "defaultpw\n")
25+
end
26+
27+
after(:each) do
28+
FileUtils.rm_rf(instance_dir)
29+
end
30+
31+
describe '#exists?' do
32+
it 'returns false when token file is missing' do
33+
expect(provider.exists?).to be false
34+
end
35+
36+
it 'returns true when token file exists' do
37+
File.write(token_path, 'abc')
38+
expect(provider.exists?).to be true
39+
end
40+
end
41+
42+
describe '#desired_token' do
43+
it 'uses user token if supplied' do
44+
resource[:token] = 'usertoken'
45+
expect(provider.desired_token).to eq('usertoken')
46+
end
47+
48+
it 'falls back to pwdfile.txt when no user token' do
49+
expect(provider.desired_token).to eq('defaultpw')
50+
end
51+
end
52+
53+
describe '#create' do
54+
it 'creates token.txt and pin.txt' do
55+
provider.create
56+
expect(File.read(token_path).strip).to eq('defaultpw')
57+
expect(File.read(pin_path).strip).to eq('Internal (Software) Token:defaultpw')
58+
end
59+
60+
it 'backs up old token file' do
61+
File.write(token_path, 'oldvalue')
62+
provider.create
63+
expect(File.exist?(File.join(instance_dir, 'token.txt.previous_token'))).to be false
64+
end
65+
66+
it 'raises error if instance_dir missing' do
67+
resource[:instance_dir] = '/no/such/path'
68+
expect { provider.create }.to raise_error(Puppet::Error)
69+
end
70+
end
71+
72+
describe '#destroy' do
73+
it 'removes token and pin files' do
74+
File.write(token_path, 'x')
75+
File.write(pin_path, 'x')
76+
provider.destroy
77+
expect(File.exist?(token_path)).to be false
78+
expect(File.exist?(pin_path)).to be false
79+
end
80+
end
81+
end
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# frozen_string_literal: true
2+
3+
require 'spec_helper'
4+
5+
describe Puppet::Type.type(:ds389_nss_token) do
6+
let(:resource) do
7+
described_class.new(
8+
name: 'test_instance_nss_token',
9+
instance_name: 'test_instance',
10+
instance_dir: '/etc/dirsrv/slapd-test_instance',
11+
)
12+
end
13+
14+
context 'attribute :name' do
15+
it 'is the namevar' do
16+
expect(described_class.key_attributes).to eq([:name])
17+
end
18+
end
19+
20+
context 'parameter :instance_name' do
21+
it 'accepts a valid value' do
22+
resource[:instance_name] = 'ldap01'
23+
expect(resource[:instance_name]).to eq('ldap01')
24+
end
25+
26+
it 'rejects an empty value' do
27+
expect {
28+
described_class.new(
29+
name: 'bad',
30+
instance_name: '',
31+
instance_dir: '/tmp',
32+
)
33+
}.to raise_error(Puppet::ResourceError, %r{must not be empty})
34+
end
35+
end
36+
37+
context 'parameter :instance_dir' do
38+
it 'accepts an absolute path' do
39+
resource[:instance_dir] = '/opt/slapd'
40+
expect(resource[:instance_dir]).to eq('/opt/slapd')
41+
end
42+
43+
it 'rejects a relative path' do
44+
expect {
45+
described_class.new(
46+
name: 'bad',
47+
instance_name: 'x',
48+
instance_dir: 'not_absolute',
49+
)
50+
}.to raise_error(Puppet::ResourceError, %r{must be an absolute path})
51+
end
52+
end
53+
54+
context 'property :status' do
55+
it 'allows any value (no validation)' do
56+
resource[:status] = 'in_sync'
57+
expect(resource[:status]).to eq('in_sync')
58+
end
59+
end
60+
61+
context 'autorequires' do
62+
it 'autorequires the instance directory' do
63+
file_resource = Puppet::Type::File.new(path: resource[:instance_dir])
64+
catalog = Puppet::Resource::Catalog.new
65+
catalog.add_resource file_resource
66+
catalog.add_resource resource
67+
68+
expect(resource.autorequire.map(&:source)).to include(file_resource)
69+
end
70+
end
71+
end

0 commit comments

Comments
 (0)