simp-rspec-puppet-facts 3.13.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +121 -7
  3. data/facts/3.6/amazon-2-x86_64.facts +6 -6
  4. data/facts/5.1/almalinux-10-x86_64.facts +1437 -0
  5. data/facts/5.1/almalinux-8-x86_64.facts +1551 -0
  6. data/facts/5.1/almalinux-9-x86_64.facts +1600 -0
  7. data/facts/5.1/amazon-2-x86_64.facts +1432 -0
  8. data/facts/5.1/centos-10-x86_64.facts +1396 -0
  9. data/facts/5.1/centos-9-x86_64.facts +1537 -0
  10. data/facts/5.1/oraclelinux-10-x86_64.facts +1419 -0
  11. data/facts/5.1/oraclelinux-8-x86_64.facts +1545 -0
  12. data/facts/5.1/oraclelinux-9-x86_64.facts +1604 -0
  13. data/facts/5.1/redhat-10-x86_64.facts +1439 -0
  14. data/facts/5.1/redhat-8-x86_64.facts +1453 -0
  15. data/facts/5.1/redhat-9-x86_64.facts +1505 -0
  16. data/facts/5.1/rocky-10-x86_64.facts +1348 -0
  17. data/facts/5.1/rocky-8-x86_64.facts +1453 -0
  18. data/facts/5.1/rocky-9-x86_64.facts +1620 -0
  19. data/facts/5.1/windows-2016-x64.facts +525 -0
  20. data/facts/5.1/windows-2019-x64.facts +529 -0
  21. data/facts/5.1/windows-2022-x64.facts +531 -0
  22. data/facts/5.1/windows-2025-x64.facts +527 -0
  23. data/facts/scripts/gce_scrub_data/centos-6-x86_64.scrub.yaml +1 -1
  24. data/facts/scripts/gce_scrub_data/centos-7-x86_64.scrub.yaml +1 -1
  25. data/facts/scripts/gce_scrub_data/oraclelinux-6-x86_64.scrub.yaml +1 -1
  26. data/facts/scripts/gce_scrub_data/oraclelinux-7-x86_64.scrub.yaml +1 -1
  27. data/facts/scripts/gce_scrub_data/redhat-7-x86_64.scrub.yaml +1 -1
  28. data/facts/scripts/gce_scrub_data.rb +15 -15
  29. data/facts/scripts/get_facts.rb +3 -3
  30. data/lib/simp/rspec-puppet-facts.rb +84 -67
  31. data/lib/simp/version.rb +3 -1
  32. data/spec/acceptance/nodesets/{centos7.yml → almalinux10.yml} +5 -7
  33. data/spec/acceptance/nodesets/almalinux8.yml +1 -1
  34. data/spec/acceptance/nodesets/almalinux9.yml +1 -1
  35. data/spec/acceptance/nodesets/{centos8.yml → centos10.yml} +5 -7
  36. data/spec/acceptance/nodesets/centos9.yml +2 -2
  37. data/spec/acceptance/nodesets/oel10.yml +16 -0
  38. data/spec/acceptance/nodesets/oel8.yml +6 -13
  39. data/spec/acceptance/nodesets/oel9.yml +3 -2
  40. data/spec/acceptance/nodesets/{rhel7.yml → rhel10.yml} +5 -5
  41. data/spec/acceptance/nodesets/rhel8.yml +1 -1
  42. data/spec/acceptance/nodesets/rhel9.yml +1 -1
  43. data/spec/acceptance/nodesets/rocky10.yml +18 -0
  44. data/spec/acceptance/nodesets/rocky8.yml +2 -2
  45. data/spec/acceptance/nodesets/rocky9.yml +2 -2
  46. data/spec/acceptance/nodesets/win_2016.yml +1 -1
  47. data/spec/acceptance/nodesets/win_2019.yml +1 -1
  48. data/spec/acceptance/nodesets/win_2022.yml +1 -1
  49. data/spec/acceptance/nodesets/win_2025.yml +30 -0
  50. data/spec/acceptance/suites/default/00_default_spec.rb +21 -19
  51. data/spec/fixtures/metadata.json +6 -23
  52. data/spec/spec_helper_acceptance.rb +9 -52
  53. data/spec/unit/data_normalization_spec.rb +35 -0
  54. data/spec/unit/simp_rspec_puppet_facts_spec.rb +206 -0
  55. metadata +276 -236
  56. data/facts/Gemfile +0 -11
  57. data/facts/Vagrantfile +0 -236
  58. data/spec/acceptance/nodesets/centos7-vault.sh +0 -6
  59. data/spec/acceptance/nodesets/centos8-vault.sh +0 -8
  60. data/spec/acceptance/nodesets/oel7.yml +0 -23
  61. data/spec/data_normalization_spec.rb +0 -34
  62. data/spec/fixtures/metadata.json_with_missing_operatingsystem_support +0 -25
  63. data/spec/simp_rspec_puppet_facts_spec.rb +0 -198
@@ -9,20 +9,21 @@ describe 'look out muppets' do
9
9
  let(:os_info) { fact_on(host, 'os') }
10
10
  let(:os_arch) { fact_on(host, 'architecture') }
11
11
 
12
- let(:fact_collection) { File.join(collection_dir, [os_info['name'], os_info['release']['major'].gsub(/\s/,'_'), os_arch].join('-').downcase + '.facts') }
12
+ let(:fact_collection) { File.join(collection_dir, [os_info['name'], os_info['release']['major'].gsub(%r{\s}, '_'), os_arch].join('-').downcase + '.facts') }
13
13
 
14
- let(:host_data) { JSON.load(File.read(fact_collection)) }
14
+ let(:host_data) { JSON.parse(File.read(fact_collection)) }
15
15
 
16
+ # rubocop:disable RSpec/InstanceVariable
16
17
  context "on #{host}" do
17
18
  before(:all) do
18
19
  @output = []
19
20
  end
20
21
 
21
- it 'should install the simp_core module' do
22
+ it 'installs the simp_core module' do
22
23
  on(host, 'puppet module install simp/simp_core')
23
24
  end
24
25
 
25
- it 'should disable the secondary network interface' do
26
+ it 'disables the secondary network interface' do
26
27
  interfaces = fact_on(host, 'interfaces').strip.split(',')
27
28
 
28
29
  ifaces = {
@@ -31,43 +32,44 @@ describe 'look out muppets' do
31
32
  'Ethernet 2' => 'netsh interface set interface "Ethernet 2" disable'
32
33
  }
33
34
 
34
- ifaces.keys.each do |iface|
35
+ ifaces.each_key do |iface|
35
36
  on(host, ifaces[iface]) if interfaces.include?(iface)
36
37
  end
37
38
  end
38
39
 
39
- it 'should collect valid fact data' do
40
+ it 'collects valid fact data' do
40
41
  output = on(host, 'puppet facts show --show-legacy --render-as json').stdout.lines.last
41
42
 
42
- expect do
43
+ expect {
43
44
  parsed_output = JSON.parse(output)
44
45
 
45
46
  # Something changed in the puppet facts output so handle both cases
46
47
  @output.push(parsed_output['values'] || parsed_output)
47
- end.to_not raise_error
48
+ }.not_to raise_error
48
49
  end
49
50
 
50
51
  # This should work regardless of OS
51
- it 'should have the "puppet_settings" fact' do
52
+ it 'has the "puppet_settings" fact' do
52
53
  expect(@output.first['puppet_settings']).to be_a(Hash)
53
54
  end
54
55
 
55
- it 'should clean up the data' do
56
+ it 'cleans up the data' do
56
57
  str_data = JSON.generate(@output.first)
57
58
 
58
- str_data = str_data.gsub(fact_on(host, 'fqdn'), 'foo.example.com').
59
- gsub(fact_on(host, 'domain'), 'example.com').
60
- gsub(%(:"#{fact_on(host, 'hostname')}"), ':"foo"').
61
- gsub(%(:"#{fact_on(host, 'networking')['ip']}"), ':"10.0.2.15"').
62
- gsub(%(:"#{fact_on(host, 'networking')['netmask']}"), ':"255.255.0.0"').
63
- gsub(%(:"#{fact_on(host, 'networking')['network']}"), ':"10.0.2.0"').
64
- gsub(%r("dhcp":"(.+?)"), '"dhcp":"10.0.2.2"')
59
+ str_data = str_data.gsub(fact_on(host, 'fqdn'), 'foo.example.com')
60
+ .gsub(fact_on(host, 'domain'), 'example.com')
61
+ .gsub(%(:"#{fact_on(host, 'hostname')}"), ':"foo"')
62
+ .gsub(%(:"#{fact_on(host, 'networking')['ip']}"), ':"10.0.2.15"')
63
+ .gsub(%(:"#{fact_on(host, 'networking')['netmask']}"), ':"255.255.0.0"')
64
+ .gsub(%(:"#{fact_on(host, 'networking')['network']}"), ':"10.0.2.0"')
65
+ .gsub(%r{"dhcp":"(.+?)"}, '"dhcp":"10.0.2.2"')
65
66
 
66
- expect{JSON.parse(str_data)}.to_not raise_error
67
+ expect { JSON.parse(str_data) }.not_to raise_error
67
68
 
68
69
  FileUtils.mkdir_p(collection_dir) unless File.directory?(collection_dir)
69
- File.open(fact_collection, 'w'){ |fh| fh.puts(JSON.pretty_generate(JSON.parse(str_data))) }
70
+ File.open(fact_collection, 'w') { |fh| fh.puts(JSON.pretty_generate(JSON.parse(str_data))) }
70
71
  end
71
72
  end
73
+ # rubocop:enable RSpec/InstanceVariable
72
74
  end
73
75
  end
@@ -7,39 +7,22 @@
7
7
  "source": "https://github.com/op-ct/pupmod-simp-dummy",
8
8
  "project_page": "https://github.com/op-ct/pupmod-simp-dummy",
9
9
  "issues_url": "https://github.com/op-ct/pupmod-simp-dummy/issues",
10
- "dependencies": [
11
- ],
12
- "requirements": [
13
- ],
10
+ "dependencies": [],
11
+ "requirements": [],
14
12
  "operatingsystem_support": [
15
13
  {
16
14
  "operatingsystem": "CentOS",
17
15
  "operatingsystemrelease": [
18
- "7",
19
- "8"
16
+ "9",
17
+ "10"
20
18
  ]
21
19
  },
22
20
  {
23
21
  "operatingsystem": "RedHat",
24
22
  "operatingsystemrelease": [
25
- "7",
26
- "8"
23
+ "9",
24
+ "10"
27
25
  ]
28
26
  }
29
- ],
30
- "puppet_version": [
31
- "5.5",
32
- "6.0",
33
- "6.4",
34
- "6.5",
35
- "6.6",
36
- "6.16",
37
- "6.18",
38
- "6.22",
39
- "7.0",
40
- "7.0",
41
- "7.4",
42
- "7.5",
43
- "7.6"
44
27
  ]
45
28
  }
@@ -13,18 +13,14 @@ include BeakerWindows::WindowsFeature
13
13
  unless ENV['BEAKER_provision'] == 'no'
14
14
  to_skip = []
15
15
 
16
- facter_ng = ( ENV['BEAKER_facter_ng'] == 'yes' ? true : false )
17
-
18
16
  hosts.each do |host|
19
- # Install Puppet
20
- if host.is_pe?
21
- install_pe
22
- elsif ENV['FACTER_GEM_VERSION']
17
+ # Install OpenVox
18
+ if ENV['FACTER_GEM_VERSION']
23
19
  begin
24
20
  install_puppet_from_gem_on(
25
21
  host,
26
22
  version: ENV['PUPPET_VERSION'],
27
- facter_version: ENV['FACTER_GEM_VERSION']
23
+ facter_version: ENV['FACTER_GEM_VERSION'],
28
24
  )
29
25
 
30
26
  # Make scaffold dirs?
@@ -41,10 +37,6 @@ unless ENV['BEAKER_provision'] == 'no'
41
37
  end
42
38
  else
43
39
  install_puppet
44
-
45
- if facter_ng
46
- on(host, 'puppet config set facterng true')
47
- end
48
40
  end
49
41
  end
50
42
 
@@ -53,37 +45,6 @@ unless ENV['BEAKER_provision'] == 'no'
53
45
  end
54
46
  end
55
47
 
56
- hosts.each do |host|
57
- # https://petersouter.xyz/testing-windows-with-beaker-without-cygwin/
58
- case host['platform']
59
- when /windows/
60
- GEOTRUST_GLOBAL_CA = <<-EOM.freeze
61
- -----BEGIN CERTIFICATE-----
62
- MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT
63
- MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i
64
- YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG
65
- EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg
66
- R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9
67
- 9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq
68
- fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv
69
- iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU
70
- 1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+
71
- bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW
72
- MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA
73
- ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l
74
- uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn
75
- Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS
76
- tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF
77
- PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un
78
- hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV
79
- 5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw==
80
- -----END CERTIFICATE-----
81
- EOM
82
- install_cert_on_windows(host, 'geotrustglobal', GEOTRUST_GLOBAL_CA)
83
- end
84
- end
85
-
86
-
87
48
  RSpec.configure do |c|
88
49
  # ensure that environment OS is ready on each host
89
50
  fix_errata_on(hosts)
@@ -93,15 +54,11 @@ RSpec.configure do |c|
93
54
 
94
55
  # Configure all nodes in nodeset
95
56
  c.before :suite do
96
- begin
97
- # Install modules and dependencies from spec/fixtures/modules
98
- copy_fixture_modules_to( hosts )
99
- rescue StandardError, ScriptError => e
100
- if ENV['PRY']
101
- require 'pry'; binding.pry
102
- else
103
- raise e
104
- end
105
- end
57
+ # Install modules and dependencies from spec/fixtures/modules
58
+ copy_fixture_modules_to(hosts)
59
+ rescue StandardError, ScriptError => e
60
+ raise e unless ENV['PRY']
61
+ require 'pry'
62
+ binding.pry # rubocop:disable Lint/Debugger
106
63
  end
107
64
  end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Simp::RspecPuppetFacts' do
4
+ facts_top_path = File.expand_path('../../facts', File.dirname(__FILE__))
5
+ facter_paths = Dir[File.join(facts_top_path, '?.?')].sort
6
+
7
+ facter_paths.each do |facter_path|
8
+ warn "=== facter_path = '#{facter_path}'"
9
+ facter_version = File.basename(facter_path)
10
+ describe "factsets for Facter #{facter_version}" do
11
+ Dir[File.join(facter_path, '*.facts')].each do |facts_file|
12
+ os = File.basename(facts_file).sub(%r{\.facts$}, '')
13
+ context "for #{os}" do
14
+ let(:facts) { YAML.load_file facts_file }
15
+
16
+ it 'uses the fqdn "foo.example.com"' do
17
+ expect(facts['networking']['fqdn']).to eq 'foo.example.com'
18
+ end
19
+
20
+ it 'uses the ipaddress "10.0.2.15"' do
21
+ expect(facts['networking']['ip']).to eq '10.0.2.15'
22
+ end
23
+
24
+ it 'has a grub_version' do
25
+ if facts['kernel'] == 'windows'
26
+ expect(facts).not_to have_key('grub_version')
27
+ else
28
+ expect(facts['grub_version']).to match(%r{^(0\.9|2\.)})
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,206 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Simp::RspecPuppetFacts' do
4
+ describe '#on_supported_os' do
5
+ context 'Without parameter' do
6
+ subject(:subject_on_supported_os) { on_supported_os }
7
+
8
+ context 'Without a metadata.json file' do
9
+ it { expect { subject_on_supported_os }.to raise_error(StandardError, %r{Can't find metadata\.json}) }
10
+ end
11
+
12
+ context 'With a metadata.json file' do
13
+ before(:each) do
14
+ Dir.chdir(File.join(File.dirname(__FILE__), '../fixtures'))
15
+ end
16
+
17
+ after(:each) do
18
+ Dir.chdir(File.join(File.dirname(__FILE__), '../..'))
19
+ end
20
+
21
+ it 'returns a hash' do
22
+ expect(on_supported_os.class).to eq Hash
23
+ end
24
+ it 'has 4 elements' do
25
+ expect(subject_on_supported_os.size).to be >= 4
26
+ end
27
+ it 'returns supported OS' do
28
+ expect(subject_on_supported_os.keys.sort).to include 'centos-9-x86_64'
29
+ expect(subject_on_supported_os.keys.sort).to include 'centos-10-x86_64'
30
+ expect(subject_on_supported_os.keys.sort).to include 'redhat-9-x86_64'
31
+ expect(subject_on_supported_os.keys.sort).to include 'redhat-10-x86_64'
32
+ end
33
+ it 'returns SIMP-specific OS facts' do
34
+ grub_version_facts = subject_on_supported_os.map do |os, data|
35
+ { os => data.slice(:uid_min, :grub_version) }
36
+ end
37
+ expect(grub_version_facts).to include(
38
+ { 'centos-10-x86_64' => { uid_min: '1000', grub_version: '2.12' } },
39
+ )
40
+ expect(grub_version_facts).to include(
41
+ { 'centos-9-x86_64' => { uid_min: '1000', grub_version: '2.06' } },
42
+ )
43
+ expect(grub_version_facts).to include(
44
+ { 'redhat-10-x86_64' => { uid_min: '1000', grub_version: '2.12' } },
45
+ )
46
+ expect(grub_version_facts).to include(
47
+ { 'redhat-9-x86_64' => { uid_min: '1000', grub_version: '2.06' } },
48
+ )
49
+ end
50
+ end
51
+ end
52
+
53
+ context 'When specifying supported_os=redhat-8-x86_64,redhat-9-x86_64' do
54
+ subject(:subject_on_supported_os) do
55
+ on_supported_os(
56
+ {
57
+ supported_os: [
58
+ {
59
+ 'operatingsystem' => 'RedHat',
60
+ 'operatingsystemrelease' => [
61
+ '8',
62
+ '9',
63
+ ]
64
+ },
65
+ ]
66
+ },
67
+ )
68
+ end
69
+
70
+ it 'returns a hash' do
71
+ expect(subject_on_supported_os.class).to eq Hash
72
+ end
73
+ it 'has 2 elements' do
74
+ expect(subject_on_supported_os.size).to eq 2
75
+ end
76
+ it 'returns supported OS' do
77
+ expect(subject_on_supported_os.keys.sort).to eq [
78
+ 'redhat-8-x86_64',
79
+ 'redhat-9-x86_64',
80
+ ]
81
+ end
82
+ end
83
+
84
+ context 'When specifying SIMP_FACTS_OS=centos,redhat-9-x86_64' do
85
+ subject(:subject_on_supported_os) do
86
+ x = ENV['SIMP_FACTS_OS']
87
+ ENV['SIMP_FACTS_OS'] = 'centos,redhat-9-x86_64'
88
+ h = on_supported_os
89
+ ENV['SIMP_FACTS_OS'] = x
90
+ h
91
+ end
92
+
93
+ it 'returns a hash' do
94
+ expect(subject_on_supported_os.class).to eq Hash
95
+ end
96
+ it 'has 3 elements' do
97
+ expect(subject_on_supported_os.size).to eq 3
98
+ end
99
+ it 'returns supported OS' do
100
+ expect(subject_on_supported_os.keys.sort).to eq [
101
+ 'centos-10-x86_64',
102
+ 'centos-9-x86_64',
103
+ 'redhat-9-x86_64',
104
+ ]
105
+ end
106
+ end
107
+
108
+ context 'When specifying wrong supported_os' do
109
+ subject(:subject_on_supported_os) do
110
+ on_supported_os(
111
+ {
112
+ supported_os: [
113
+ {
114
+ 'operatingsystem' => 'Debian',
115
+ 'operatingsystemrelease' => [
116
+ 'X',
117
+ ],
118
+ },
119
+ ]
120
+ },
121
+ )
122
+ end
123
+
124
+ it 'outputs warning message', skip: 'rspec issue: No longer able to catch message on stdout or stderr' do
125
+ expect { subject_on_supported_os }.to output(%r{No facts were found in the FacterDB}).to_stdout
126
+ end
127
+ end
128
+ end
129
+
130
+ describe '#selinux_facts' do
131
+ context 'When :enforcing' do
132
+ subject(:subject_selinux_facts) { selinux_facts(:enforcing, {}) }
133
+
134
+ it 'returns a hash' do
135
+ expect(subject_selinux_facts.class).to eq Hash
136
+ end
137
+ context 'when facts include `:tmp_mount_dev_shm => "rw,noatime"`' do
138
+ subject(:subject_selinux_facts) { selinux_facts(:enforcing, { tmp_mount_dev_shm: 'rw,noatime' }) }
139
+
140
+ it 'has a :tmp_mount_dev_shm key' do
141
+ expect(subject_selinux_facts.key?(:tmp_mount_dev_shm)).to be true
142
+ end
143
+ it ':tmp_mount_dev_shm should include "seclabel"' do
144
+ expect(subject_selinux_facts[:tmp_mount_dev_shm]).to match(%r{\bseclabel\b})
145
+ end
146
+ end
147
+ context 'when facts include `:tmp_mount_dev_shm => "rw,noatime,seclabel"`' do
148
+ subject(:subject_selinux_facts) { selinux_facts(:enforcing, { tmp_mount_dev_shm: 'rw,noatime,seclabel' }) }
149
+
150
+ it ':tmp_mount_dev_shm should include "seclabel"' do
151
+ expect(subject_selinux_facts[:tmp_mount_dev_shm]).to match(%r{\bseclabel\b})
152
+ end
153
+ end
154
+ end
155
+
156
+ context 'When :permissive' do
157
+ subject(:subject_selinux_facts) { selinux_facts(:permissive, {}) }
158
+
159
+ it 'returns a hash' do
160
+ expect(subject_selinux_facts.class).to eq Hash
161
+ end
162
+ context 'when facts include `:tmp_mount_dev_shm => "rw,noatime"`' do
163
+ subject(:subject_selinux_facts) { selinux_facts(:permissive, { tmp_mount_dev_shm: 'rw,noatime' }) }
164
+
165
+ it 'has a :tmp_mount_dev_shm key' do
166
+ expect(subject_selinux_facts.key?(:tmp_mount_dev_shm)).to be true
167
+ end
168
+ it ':tmp_mount_dev_shm should include "seclabel"' do
169
+ expect(subject_selinux_facts[:tmp_mount_dev_shm]).to match(%r{\bseclabel\b})
170
+ end
171
+ end
172
+ context 'when facts include `:tmp_mount_dev_shm => "rw,noatime,seclabel"`' do
173
+ subject(:subject_selinux_facts) { selinux_facts(:permissive, { tmp_mount_dev_shm: 'rw,noatime,seclabel' }) }
174
+
175
+ it ':tmp_mount_dev_shm should include "seclabel"' do
176
+ expect(subject_selinux_facts[:tmp_mount_dev_shm]).to match(%r{\bseclabel\b})
177
+ end
178
+ end
179
+ end
180
+
181
+ context 'When :disabled' do
182
+ subject(:subject_selinux_facts) { selinux_facts(:disabled, {}) }
183
+
184
+ it 'returns a hash' do
185
+ expect(subject_selinux_facts.class).to eq Hash
186
+ end
187
+ context 'when facts include `:tmp_mount_dev_shm => "rw,noatime"`' do
188
+ subject(:subject_selinux_facts) { selinux_facts(:disabled, { tmp_mount_dev_shm: 'rw,noatime' }) }
189
+
190
+ it 'has a :tmp_mount_dev_shm key' do
191
+ expect(subject_selinux_facts.key?(:tmp_mount_dev_shm)).to be true
192
+ end
193
+ it ':tmp_mount_dev_shm should not include "seclabel"' do
194
+ expect(subject_selinux_facts[:tmp_mount_dev_shm]).not_to match(%r{\bseclabel\b})
195
+ end
196
+ end
197
+ context 'when facts include `:tmp_mount_dev_shm => "rw,noatime,seclabel"`' do
198
+ subject(:subject_selinux_facts) { selinux_facts(:disabled, { tmp_mount_dev_shm: 'rw,noatime,seclabel' }) }
199
+
200
+ it ':tmp_mount_dev_shm should not include "seclabel"' do
201
+ expect(subject_selinux_facts[:tmp_mount_dev_shm]).not_to match(%r{\bseclabel\b})
202
+ end
203
+ end
204
+ end
205
+ end
206
+ end