puppet 6.0.0 → 6.1.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.
- checksums.yaml +4 -4
- data/Gemfile +2 -2
- data/Gemfile.lock +20 -20
- data/Guardfile.example +76 -0
- data/LICENSE +189 -4
- data/README.md +3 -3
- data/Rakefile +5 -2
- data/ext/solaris/smf/svc-puppetd +8 -1
- data/ext/solaris/smf/svc-puppetmasterd +8 -1
- data/lib/puppet/application/apply.rb +100 -59
- data/lib/puppet/application/cert.rb +4 -114
- data/lib/puppet/application/device.rb +48 -32
- data/lib/puppet/application/script.rb +1 -1
- data/lib/puppet/application/ssl.rb +135 -51
- data/lib/puppet/application.rb +5 -0
- data/lib/puppet/configurer.rb +2 -3
- data/lib/puppet/defaults.rb +33 -49
- data/lib/puppet/etc.rb +20 -0
- data/lib/puppet/face/config.rb +3 -3
- data/lib/puppet/face/key.rb +1 -1
- data/lib/puppet/face/node/clean.rb +0 -1
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/file_bucket/dipper.rb +1 -1
- data/lib/puppet/file_serving/fileset.rb +1 -1
- data/lib/puppet/functions/abs.rb +1 -1
- data/lib/puppet/functions/new.rb +1 -1
- data/lib/puppet/module/task.rb +29 -38
- data/lib/puppet/pal/catalog_compiler.rb +96 -0
- data/lib/puppet/pal/compiler.rb +221 -0
- data/lib/puppet/pal/function_signature.rb +52 -0
- data/lib/puppet/pal/json_catalog_encoder.rb +67 -0
- data/lib/puppet/pal/pal_api.rb +15 -0
- data/lib/puppet/pal/pal_impl.rb +523 -0
- data/lib/puppet/pal/plan_signature.rb +71 -0
- data/lib/puppet/pal/script_compiler.rb +71 -0
- data/lib/puppet/pal/task_signature.rb +58 -0
- data/lib/puppet/parser/catalog_compiler.rb +24 -0
- data/lib/puppet/parser/compiler.rb +3 -1
- data/lib/puppet/parser/functions/generate.rb +7 -6
- data/lib/puppet/plugins/configuration.rb +5 -1
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +3 -1
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -0
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -1
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -3
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +19 -10
- data/lib/puppet/pops/loader/task_instantiator.rb +13 -70
- data/lib/puppet/pops/parser/heredoc_support.rb +1 -2
- data/lib/puppet/pops/parser/lexer2.rb +1 -1
- data/lib/puppet/pops/pcore.rb +10 -33
- data/lib/puppet/pops/serialization/to_data_converter.rb +9 -1
- data/lib/puppet/pops/serialization.rb +1 -0
- data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
- data/lib/puppet/pops/types/string_converter.rb +18 -4
- data/lib/puppet/pops/validation/checker4_0.rb +17 -2
- data/lib/puppet/provider/exec.rb +59 -57
- data/lib/puppet/provider/group/aix.rb +18 -2
- data/lib/puppet/provider/group/windows_adsi.rb +7 -3
- data/lib/puppet/provider/nameservice.rb +1 -25
- data/lib/puppet/provider/package/dnf.rb +2 -0
- data/lib/puppet/provider/package/pkgng.rb +37 -21
- data/lib/puppet/provider/package/portage.rb +2 -2
- data/lib/puppet/provider/package/windows/exe_package.rb +16 -10
- data/lib/puppet/provider/package/windows/msi_package.rb +8 -0
- data/lib/puppet/provider/package/windows/package.rb +9 -1
- data/lib/puppet/provider/package/windows.rb +2 -2
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +25 -4
- data/lib/puppet/provider/service/launchd.rb +19 -3
- data/lib/puppet/provider/service/smf.rb +54 -0
- data/lib/puppet/provider/service/systemd.rb +19 -0
- data/lib/puppet/provider/service/upstart.rb +1 -0
- data/lib/puppet/provider/service/windows.rb +22 -5
- data/lib/puppet/provider/user/aix.rb +48 -2
- data/lib/puppet/provider/user/useradd.rb +2 -10
- data/lib/puppet/provider/user/windows_adsi.rb +9 -1
- data/lib/puppet/resource/catalog.rb +1 -5
- data/lib/puppet/resource.rb +3 -1
- data/lib/puppet/ssl/host.rb +26 -16
- data/lib/puppet/syntax_checkers/epp.rb +34 -0
- data/lib/puppet/syntax_checkers/pp.rb +34 -0
- data/lib/puppet/transaction/event_manager.rb +13 -1
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/resource_harness.rb +3 -1
- data/lib/puppet/type/group.rb +29 -1
- data/lib/puppet/type/package.rb +5 -1
- data/lib/puppet/type/resources.rb +12 -2
- data/lib/puppet/type/schedule.rb +7 -0
- data/lib/puppet/type/service.rb +12 -0
- data/lib/puppet/type/user.rb +5 -2
- data/lib/puppet/type.rb +6 -0
- data/lib/puppet/util/command_line.rb +2 -3
- data/lib/puppet/util/execution.rb +15 -1
- data/lib/puppet/util/filetype.rb +56 -8
- data/lib/puppet/util/log/destinations.rb +3 -2
- data/lib/puppet/util/logging.rb +3 -2
- data/lib/puppet/util/posix.rb +15 -0
- data/lib/puppet/util/selinux.rb +1 -1
- data/lib/puppet/util/storage.rb +12 -0
- data/lib/puppet/util/windows/adsi.rb +79 -2
- data/lib/puppet/util/windows/api_types.rb +1 -1
- data/lib/puppet/util/windows/process.rb +23 -3
- data/lib/puppet/util/windows/registry.rb +29 -5
- data/lib/puppet/util/windows/security.rb +14 -0
- data/lib/puppet/util/windows/service.rb +294 -74
- data/lib/puppet/util/windows/user.rb +3 -5
- data/lib/puppet/util.rb +7 -3
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +1 -0
- data/lib/puppet_pal.rb +5 -1099
- data/locales/ja/puppet.po +952 -986
- data/locales/puppet.pot +592 -347
- data/man/man5/puppet.conf.5 +26 -31
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +4 -4
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +23 -19
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +2 -2
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +26 -3
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load.rb +11 -0
- data/spec/fixtures/unit/provider/package/pkgng/pkg.query +7 -1
- data/spec/fixtures/unit/provider/package/pkgng/pkg.query.zsh +1 -0
- data/spec/fixtures/unit/provider/service/smf/svcs_fmri.out +6 -0
- data/spec/fixtures/unit/provider/service/smf/svcs_multiple_fmris.out +13 -0
- data/spec/integration/application/apply_spec.rb +4 -1
- data/spec/integration/parser/collection_spec.rb +4 -8
- data/spec/integration/provider/service/windows_spec.rb +5 -5
- data/spec/integration/ssl/key_spec.rb +0 -4
- data/spec/integration/transaction_spec.rb +559 -0
- data/spec/integration/type/file_spec.rb +6 -6
- data/spec/integration/util/windows/registry_spec.rb +39 -0
- data/spec/integration/util/windows/security_spec.rb +10 -7
- data/spec/integration/util/windows/user_spec.rb +37 -17
- data/spec/lib/puppet/test_ca.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/unit/agent_spec.rb +2 -2
- data/spec/unit/application/apply_spec.rb +55 -2
- data/spec/unit/application/device_spec.rb +10 -7
- data/spec/unit/application/face_base_spec.rb +1 -1
- data/spec/unit/application/lookup_spec.rb +2 -1
- data/spec/unit/application/ssl_spec.rb +178 -109
- data/spec/unit/application_spec.rb +29 -11
- data/spec/unit/configurer/downloader_spec.rb +1 -1
- data/spec/unit/configurer_spec.rb +16 -5
- data/spec/unit/etc_spec.rb +25 -0
- data/spec/unit/face/node_spec.rb +1 -3
- data/spec/unit/face/parser_spec.rb +15 -0
- data/spec/unit/file_serving/fileset_spec.rb +11 -11
- data/spec/unit/functions/logging_spec.rb +10 -3
- data/spec/unit/indirector/catalog/json_spec.rb +9 -3
- data/spec/unit/indirector/yaml_spec.rb +1 -1
- data/spec/unit/network/http/connection_spec.rb +2 -2
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +36 -0
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +22 -4
- data/spec/unit/pops/loaders/loader_spec.rb +9 -17
- data/spec/unit/pops/loaders/loaders_spec.rb +48 -0
- data/spec/unit/pops/loaders/module_loaders_spec.rb +7 -7
- data/spec/unit/pops/parser/parse_heredoc_spec.rb +16 -0
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +9 -0
- data/spec/unit/pops/types/p_timespan_type_spec.rb +22 -0
- data/spec/unit/pops/types/p_timestamp_type_spec.rb +19 -0
- data/spec/unit/pops/types/string_converter_spec.rb +25 -1
- data/spec/unit/pops/types/task_spec.rb +42 -116
- data/spec/unit/pops/validator/validator_spec.rb +24 -10
- data/spec/unit/provider/exec/posix_spec.rb +24 -0
- data/spec/unit/provider/group/aix_spec.rb +20 -6
- data/spec/unit/provider/group/ldap_spec.rb +22 -25
- data/spec/unit/provider/group/pw_spec.rb +7 -10
- data/spec/unit/provider/group/windows_adsi_spec.rb +42 -33
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +97 -103
- data/spec/unit/provider/package/aix_spec.rb +5 -8
- data/spec/unit/provider/package/apt_spec.rb +3 -6
- data/spec/unit/provider/package/dnf_spec.rb +38 -25
- data/spec/unit/provider/package/dpkg_spec.rb +18 -21
- data/spec/unit/provider/package/freebsd_spec.rb +4 -7
- data/spec/unit/provider/package/gem_spec.rb +41 -41
- data/spec/unit/provider/package/hpux_spec.rb +7 -10
- data/spec/unit/provider/package/macports_spec.rb +13 -15
- data/spec/unit/provider/package/nim_spec.rb +3 -10
- data/spec/unit/provider/package/openbsd_spec.rb +14 -17
- data/spec/unit/provider/package/pip3_spec.rb +3 -6
- data/spec/unit/provider/package/pip_spec.rb +45 -49
- data/spec/unit/provider/package/pkgin_spec.rb +13 -18
- data/spec/unit/provider/package/pkgng_spec.rb +32 -27
- data/spec/unit/provider/package/puppet_gem_spec.rb +6 -9
- data/spec/unit/provider/package/tdnf_spec.rb +9 -12
- data/spec/unit/provider/package/windows/exe_package_spec.rb +3 -3
- data/spec/unit/provider/package/windows_spec.rb +4 -4
- data/spec/unit/provider/package/yum_spec.rb +30 -16
- data/spec/unit/provider/package/zypper_spec.rb +17 -19
- data/spec/unit/provider/service/bsd_spec.rb +7 -9
- data/spec/unit/provider/service/daemontools_spec.rb +12 -16
- data/spec/unit/provider/service/debian_spec.rb +6 -10
- data/spec/unit/provider/service/freebsd_spec.rb +2 -2
- data/spec/unit/provider/service/launchd_spec.rb +19 -0
- data/spec/unit/provider/service/openbsd_spec.rb +13 -17
- data/spec/unit/provider/service/rcng_spec.rb +2 -4
- data/spec/unit/provider/service/redhat_spec.rb +12 -11
- data/spec/unit/provider/service/runit_spec.rb +7 -14
- data/spec/unit/provider/service/smf_spec.rb +77 -13
- data/spec/unit/provider/service/src_spec.rb +11 -16
- data/spec/unit/provider/service/systemd_spec.rb +39 -1
- data/spec/unit/provider/service/windows_spec.rb +39 -7
- data/spec/unit/provider/user/aix_spec.rb +43 -2
- data/spec/unit/provider/user/hpux_spec.rb +3 -5
- data/spec/unit/provider/user/ldap_spec.rb +29 -32
- data/spec/unit/provider/user/pw_spec.rb +10 -13
- data/spec/unit/provider/user/useradd_spec.rb +2 -2
- data/spec/unit/provider/user/windows_adsi_spec.rb +4 -4
- data/spec/unit/puppet_pal_2pec.rb +6 -6
- data/spec/unit/puppet_pal_catalog_spec.rb +58 -0
- data/spec/unit/resource/catalog_spec.rb +2 -2
- data/spec/unit/resource_spec.rb +31 -0
- data/spec/unit/ssl/host_spec.rb +22 -1
- data/spec/unit/ssl/key_spec.rb +2 -4
- data/spec/unit/task_spec.rb +50 -5
- data/spec/unit/transaction/event_manager_spec.rb +12 -1
- data/spec/unit/transaction/persistence_spec.rb +4 -4
- data/spec/unit/transaction/resource_harness_spec.rb +18 -0
- data/spec/unit/type/group_spec.rb +11 -3
- data/spec/unit/type/resources_spec.rb +18 -0
- data/spec/unit/type/service_spec.rb +27 -1
- data/spec/unit/util/execution_spec.rb +77 -0
- data/spec/unit/util/filetype_spec.rb +13 -5
- data/spec/unit/util/log/destinations_spec.rb +10 -0
- data/spec/unit/util/logging_spec.rb +58 -41
- data/spec/unit/util/monkey_patches_spec.rb +18 -5
- data/spec/unit/util/posix_spec.rb +28 -0
- data/spec/unit/util/selinux_spec.rb +4 -0
- data/spec/unit/util/storage_spec.rb +107 -0
- data/spec/unit/util/suidmanager_spec.rb +1 -3
- data/spec/unit/util/windows/adsi_spec.rb +95 -0
- data/spec/unit/util/windows/service_spec.rb +377 -131
- metadata +24 -11
- data/ext/autotest/Rakefile +0 -8
- data/ext/autotest/config +0 -43
- data/ext/autotest/readme.rst +0 -16
- data/spec/fixtures/unit/provider/package/pkgng/pkg.info +0 -7
- data/spec/fixtures/unit/provider/package/pkgng/pkg.query_absent +0 -1
- data/spec/watchr.rb +0 -137
|
@@ -49,25 +49,25 @@ describe Puppet::Type.type(:group).provider(:windows_adsi), :if => Puppet::Util:
|
|
|
49
49
|
describe "#members_insync?" do
|
|
50
50
|
it "should return true for same lists of members" do
|
|
51
51
|
current = [
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
'user1',
|
|
53
|
+
'user2',
|
|
54
54
|
]
|
|
55
55
|
expect(provider.members_insync?(current, ['user1', 'user2'])).to be_truthy
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
it "should return true for same lists of unordered members" do
|
|
59
59
|
current = [
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
'user1',
|
|
61
|
+
'user2',
|
|
62
62
|
]
|
|
63
63
|
expect(provider.members_insync?(current, ['user2', 'user1'])).to be_truthy
|
|
64
64
|
end
|
|
65
65
|
|
|
66
66
|
it "should return true for same lists of members irrespective of duplicates" do
|
|
67
67
|
current = [
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
'user1',
|
|
69
|
+
'user2',
|
|
70
|
+
'user2',
|
|
71
71
|
]
|
|
72
72
|
expect(provider.members_insync?(current, ['user2', 'user1', 'user1'])).to be_truthy
|
|
73
73
|
end
|
|
@@ -91,9 +91,9 @@ describe Puppet::Type.type(:group).provider(:windows_adsi), :if => Puppet::Util:
|
|
|
91
91
|
|
|
92
92
|
it "should return true when current and should contain the same users in a different order" do
|
|
93
93
|
current = [
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
94
|
+
'user1',
|
|
95
|
+
'user2',
|
|
96
|
+
'user3',
|
|
97
97
|
]
|
|
98
98
|
expect(provider.members_insync?(current, ['user3', 'user1', 'user2'])).to be_truthy
|
|
99
99
|
end
|
|
@@ -104,21 +104,21 @@ describe Puppet::Type.type(:group).provider(:windows_adsi), :if => Puppet::Util:
|
|
|
104
104
|
|
|
105
105
|
it "should return false when should is nil" do
|
|
106
106
|
current = [
|
|
107
|
-
|
|
107
|
+
'user1',
|
|
108
108
|
]
|
|
109
109
|
expect(provider.members_insync?(current, nil)).to be_falsey
|
|
110
110
|
end
|
|
111
111
|
|
|
112
112
|
it "should return false when current contains different users than should" do
|
|
113
113
|
current = [
|
|
114
|
-
|
|
114
|
+
'user1',
|
|
115
115
|
]
|
|
116
116
|
expect(provider.members_insync?(current, ['user2'])).to be_falsey
|
|
117
117
|
end
|
|
118
118
|
|
|
119
119
|
it "should return false when current contains members and should is empty" do
|
|
120
120
|
current = [
|
|
121
|
-
|
|
121
|
+
'user1',
|
|
122
122
|
]
|
|
123
123
|
expect(provider.members_insync?(current, [])).to be_falsey
|
|
124
124
|
end
|
|
@@ -129,16 +129,16 @@ describe Puppet::Type.type(:group).provider(:windows_adsi), :if => Puppet::Util:
|
|
|
129
129
|
|
|
130
130
|
it "should return false when should user(s) are not the only items in the current" do
|
|
131
131
|
current = [
|
|
132
|
-
|
|
133
|
-
|
|
132
|
+
'user1',
|
|
133
|
+
'user2',
|
|
134
134
|
]
|
|
135
135
|
expect(provider.members_insync?(current, ['user1'])).to be_falsey
|
|
136
136
|
end
|
|
137
137
|
|
|
138
138
|
it "should return false when current user(s) is not empty and should is an empty list" do
|
|
139
139
|
current = [
|
|
140
|
-
|
|
141
|
-
|
|
140
|
+
'user1',
|
|
141
|
+
'user2',
|
|
142
142
|
]
|
|
143
143
|
expect(provider.members_insync?(current, [])).to be_falsey
|
|
144
144
|
end
|
|
@@ -156,21 +156,21 @@ describe Puppet::Type.type(:group).provider(:windows_adsi), :if => Puppet::Util:
|
|
|
156
156
|
|
|
157
157
|
it "should return true when should is nil" do
|
|
158
158
|
current = [
|
|
159
|
-
|
|
159
|
+
'user1',
|
|
160
160
|
]
|
|
161
161
|
expect(provider.members_insync?(current, nil)).to be_truthy
|
|
162
162
|
end
|
|
163
163
|
|
|
164
164
|
it "should return false when current contains different users than should" do
|
|
165
165
|
current = [
|
|
166
|
-
|
|
166
|
+
'user1',
|
|
167
167
|
]
|
|
168
168
|
expect(provider.members_insync?(current, ['user2'])).to be_falsey
|
|
169
169
|
end
|
|
170
170
|
|
|
171
171
|
it "should return true when current contains members and should is empty" do
|
|
172
172
|
current = [
|
|
173
|
-
|
|
173
|
+
'user1',
|
|
174
174
|
]
|
|
175
175
|
expect(provider.members_insync?(current, [])).to be_truthy
|
|
176
176
|
end
|
|
@@ -181,25 +181,25 @@ describe Puppet::Type.type(:group).provider(:windows_adsi), :if => Puppet::Util:
|
|
|
181
181
|
|
|
182
182
|
it "should return true when current user(s) contains at least the should list" do
|
|
183
183
|
current = [
|
|
184
|
-
|
|
185
|
-
|
|
184
|
+
'user1',
|
|
185
|
+
'user2',
|
|
186
186
|
]
|
|
187
187
|
expect(provider.members_insync?(current, ['user1'])).to be_truthy
|
|
188
188
|
end
|
|
189
189
|
|
|
190
190
|
it "should return true when current user(s) is not empty and should is an empty list" do
|
|
191
191
|
current = [
|
|
192
|
-
|
|
193
|
-
|
|
192
|
+
'user1',
|
|
193
|
+
'user2',
|
|
194
194
|
]
|
|
195
195
|
expect(provider.members_insync?(current, [])).to be_truthy
|
|
196
196
|
end
|
|
197
197
|
|
|
198
198
|
it "should return true when current user(s) contains at least the should list, even unordered" do
|
|
199
199
|
current = [
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
200
|
+
'user3',
|
|
201
|
+
'user1',
|
|
202
|
+
'user2',
|
|
203
203
|
]
|
|
204
204
|
expect(provider.members_insync?(current, ['user2','user1'])).to be_truthy
|
|
205
205
|
end
|
|
@@ -232,14 +232,26 @@ describe Puppet::Type.type(:group).provider(:windows_adsi), :if => Puppet::Util:
|
|
|
232
232
|
end
|
|
233
233
|
|
|
234
234
|
describe "when managing members" do
|
|
235
|
+
let(:user1) { stub(:account => 'user1', :domain => '.', :sid => 'user1sid') }
|
|
236
|
+
let(:user2) { stub(:account => 'user2', :domain => '.', :sid => 'user2sid') }
|
|
237
|
+
let(:user3) { stub(:account => 'user3', :domain => '.', :sid => 'user3sid') }
|
|
238
|
+
|
|
235
239
|
before :each do
|
|
240
|
+
Puppet::Util::Windows::SID.stubs(:name_to_principal).with('user1').returns(user1)
|
|
241
|
+
Puppet::Util::Windows::SID.stubs(:name_to_principal).with('user2').returns(user2)
|
|
242
|
+
Puppet::Util::Windows::SID.stubs(:name_to_principal).with('user3').returns(user3)
|
|
243
|
+
|
|
236
244
|
resource[:auth_membership] = true
|
|
237
245
|
end
|
|
238
246
|
|
|
239
247
|
it "should be able to provide a list of members" do
|
|
240
|
-
provider.group.stubs(:members).returns [
|
|
248
|
+
provider.group.stubs(:members).returns [
|
|
249
|
+
'user1',
|
|
250
|
+
'user2',
|
|
251
|
+
'user3',
|
|
252
|
+
]
|
|
241
253
|
|
|
242
|
-
expect(provider.members).to match_array([
|
|
254
|
+
expect(provider.members).to match_array([user1.sid, user2.sid, user3.sid])
|
|
243
255
|
end
|
|
244
256
|
|
|
245
257
|
it "should be able to set group members" do
|
|
@@ -290,10 +302,7 @@ describe Puppet::Type.type(:group).provider(:windows_adsi), :if => Puppet::Util:
|
|
|
290
302
|
connection.expects(:Create)
|
|
291
303
|
connection.expects(:SetInfo).raises( WIN32OLERuntimeError.new("(in OLE method `SetInfo': )\n OLE error code:8007089A in Active Directory\n The specified username is invalid.\r\n\n HRESULT error code:0x80020009\n Exception occurred."))
|
|
292
304
|
|
|
293
|
-
expect{ provider.create }.to raise_error(
|
|
294
|
-
Puppet::Error,
|
|
295
|
-
/not able to create\/delete domain groups/
|
|
296
|
-
)
|
|
305
|
+
expect{ provider.create }.to raise_error(Puppet::Error)
|
|
297
306
|
end
|
|
298
307
|
|
|
299
308
|
it 'should commit a newly created group' do
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#! /usr/bin/env ruby
|
|
2
1
|
require 'spec_helper'
|
|
3
2
|
|
|
4
3
|
module Puppet::Util::Plist
|
|
@@ -6,13 +5,11 @@ end
|
|
|
6
5
|
|
|
7
6
|
# We use this as a reasonable way to obtain all the support infrastructure.
|
|
8
7
|
[:group].each do |type_for_this_round|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
describe provider_class do
|
|
8
|
+
describe Puppet::Type.type(type_for_this_round).provider(:directoryservice) do
|
|
12
9
|
before do
|
|
13
10
|
@resource = stub("resource")
|
|
14
11
|
@resource.stubs(:[]).with(:name)
|
|
15
|
-
@provider =
|
|
12
|
+
@provider = described_class.new(@resource)
|
|
16
13
|
end
|
|
17
14
|
|
|
18
15
|
it "[#6009] should handle nested arrays of members" do
|
|
@@ -40,125 +37,122 @@ end
|
|
|
40
37
|
end
|
|
41
38
|
end
|
|
42
39
|
|
|
43
|
-
describe
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
40
|
+
describe Puppet::Provider::NameService::DirectoryService do
|
|
41
|
+
context '.single_report' do
|
|
42
|
+
it 'should use plist data' do
|
|
43
|
+
Puppet::Provider::NameService::DirectoryService.stubs(:get_ds_path).returns('Users')
|
|
44
|
+
Puppet::Provider::NameService::DirectoryService.stubs(:list_all_present).returns(
|
|
45
|
+
['root', 'user1', 'user2', 'resource_name']
|
|
46
|
+
)
|
|
47
|
+
Puppet::Provider::NameService::DirectoryService.stubs(:generate_attribute_hash)
|
|
48
|
+
Puppet::Provider::NameService::DirectoryService.stubs(:execute)
|
|
49
|
+
Puppet::Provider::NameService::DirectoryService.expects(:parse_dscl_plist_data)
|
|
50
|
+
|
|
51
|
+
Puppet::Provider::NameService::DirectoryService.single_report('resource_name')
|
|
52
|
+
end
|
|
54
53
|
end
|
|
55
|
-
end
|
|
56
54
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
55
|
+
context '.get_exec_preamble' do
|
|
56
|
+
it 'should use plist data' do
|
|
57
|
+
Puppet::Provider::NameService::DirectoryService.stubs(:get_ds_path).returns('Users')
|
|
60
58
|
|
|
61
|
-
|
|
59
|
+
expect(Puppet::Provider::NameService::DirectoryService.get_exec_preamble('-list')).to include("-plist")
|
|
60
|
+
end
|
|
62
61
|
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
describe 'DirectoryService password behavior' do
|
|
66
|
-
# The below is a binary plist containing a ShadowHashData key which CONTAINS
|
|
67
|
-
# another binary plist. The nested binary plist contains a 'SALTED-SHA512'
|
|
68
|
-
# key that contains a base64 encoded salted-SHA512 password hash...
|
|
69
|
-
let (:binary_plist) { "bplist00\324\001\002\003\004\005\006\a\bXCRAM-MD5RNT]SALTED-SHA512[RECOVERABLEO\020 \231k2\3360\200GI\201\355J\216\202\215y\243\001\206J\300\363\032\031\022\006\2359\024\257\217<\361O\020\020F\353\at\377\277\226\276c\306\254\031\037J(\235O\020D\335\006{\3744g@\377z\204\322\r\332t\021\330\n\003\246K\223\356\034!P\261\305t\035\346\352p\206\003n\247MMA\310\301Z<\366\246\023\0161W3\340\357\000\317T\t\301\311+\204\246L7\276\370\320*\245O\021\002\000k\024\221\270x\353\001\237\346D}\377?\265]\356+\243\v[\350\316a\340h\376<\322\266\327\016\306n\272r\t\212A\253L\216\214\205\016\241 [\360/\335\002#\\A\372\241a\261\346\346\\\251\330\312\365\016\n\341\017\016\225&;\322\\\004*\ru\316\372\a \362?8\031\247\231\030\030\267\315\023\v\343{@\227\301s\372h\212\000a\244&\231\366\nt\277\2036,\027bZ+\223W\212g\333`\264\331N\306\307\362\257(^~ b\262\247&\231\261t\341\231%\244\247\203eOt\365\271\201\273\330\350\363C^A\327F\214!\217hgf\e\320k\260n\315u~\336\371M\t\235k\230S\375\311\303\240\351\037d\273\321y\335=K\016`_\317\230\2612_\023K\036\350\v\232\323Y\310\317_\035\227%\237\v\340\023\016\243\233\025\306:\227\351\370\364x\234\231\266\367\016w\275\333-\351\210}\375x\034\262\272kRuHa\362T/F!\347B\231O`K\304\037'k$$\245h)e\363\365mT\b\317\\2\361\026\351\254\375Jl1~\r\371\267\352\2322I\341\272\376\243^Un\266E7\230[VocUJ\220N\2116D/\025f=\213\314\325\vG}\311\360\377DT\307m\261&\263\340\272\243_\020\271rG^BW\210\030l\344\0324\335\233\300\023\272\225Im\330\n\227*Yv[\006\315\330y'\a\321\373\273A\240\305F{S\246I#/\355\2425\031\031GGF\270y\n\331\004\023G@\331\000\361\343\350\264$\032\355_\210y\000\205\342\375\212q\024\004\026W:\205 \363v?\035\270L-\270=\022\323\2003\v\336\277\t\237\356\374\n\267n\003\367\342\330;\371S\326\016`B6@Njm>\240\021%\336\345\002(P\204Yn\3279l\0228\264\254\304\2528t\372h\217\347sA\314\345\245\337)]\000\b\000\021\000\032\000\035\000+\0007\000Z\000m\000\264\000\000\000\000\000\000\002\001\000\000\000\000\000\000\000\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\270" }
|
|
70
62
|
|
|
71
|
-
|
|
72
|
-
|
|
63
|
+
context 'password behavior' do
|
|
64
|
+
# The below is a binary plist containing a ShadowHashData key which CONTAINS
|
|
65
|
+
# another binary plist. The nested binary plist contains a 'SALTED-SHA512'
|
|
66
|
+
# key that contains a base64 encoded salted-SHA512 password hash...
|
|
67
|
+
let (:binary_plist) { "bplist00\324\001\002\003\004\005\006\a\bXCRAM-MD5RNT]SALTED-SHA512[RECOVERABLEO\020 \231k2\3360\200GI\201\355J\216\202\215y\243\001\206J\300\363\032\031\022\006\2359\024\257\217<\361O\020\020F\353\at\377\277\226\276c\306\254\031\037J(\235O\020D\335\006{\3744g@\377z\204\322\r\332t\021\330\n\003\246K\223\356\034!P\261\305t\035\346\352p\206\003n\247MMA\310\301Z<\366\246\023\0161W3\340\357\000\317T\t\301\311+\204\246L7\276\370\320*\245O\021\002\000k\024\221\270x\353\001\237\346D}\377?\265]\356+\243\v[\350\316a\340h\376<\322\266\327\016\306n\272r\t\212A\253L\216\214\205\016\241 [\360/\335\002#\\A\372\241a\261\346\346\\\251\330\312\365\016\n\341\017\016\225&;\322\\\004*\ru\316\372\a \362?8\031\247\231\030\030\267\315\023\v\343{@\227\301s\372h\212\000a\244&\231\366\nt\277\2036,\027bZ+\223W\212g\333`\264\331N\306\307\362\257(^~ b\262\247&\231\261t\341\231%\244\247\203eOt\365\271\201\273\330\350\363C^A\327F\214!\217hgf\e\320k\260n\315u~\336\371M\t\235k\230S\375\311\303\240\351\037d\273\321y\335=K\016`_\317\230\2612_\023K\036\350\v\232\323Y\310\317_\035\227%\237\v\340\023\016\243\233\025\306:\227\351\370\364x\234\231\266\367\016w\275\333-\351\210}\375x\034\262\272kRuHa\362T/F!\347B\231O`K\304\037'k$$\245h)e\363\365mT\b\317\\2\361\026\351\254\375Jl1~\r\371\267\352\2322I\341\272\376\243^Un\266E7\230[VocUJ\220N\2116D/\025f=\213\314\325\vG}\311\360\377DT\307m\261&\263\340\272\243_\020\271rG^BW\210\030l\344\0324\335\233\300\023\272\225Im\330\n\227*Yv[\006\315\330y'\a\321\373\273A\240\305F{S\246I#/\355\2425\031\031GGF\270y\n\331\004\023G@\331\000\361\343\350\264$\032\355_\210y\000\205\342\375\212q\024\004\026W:\205 \363v?\035\270L-\270=\022\323\2003\v\336\277\t\237\356\374\n\267n\003\367\342\330;\371S\326\016`B6@Njm>\240\021%\336\345\002(P\204Yn\3279l\0228\264\254\304\2528t\372h\217\347sA\314\345\245\337)]\000\b\000\021\000\032\000\035\000+\0007\000Z\000m\000\264\000\000\000\000\000\000\002\001\000\000\000\000\000\000\000\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\270" }
|
|
73
68
|
|
|
74
|
-
|
|
75
|
-
|
|
69
|
+
# The below is a base64 encoded salted-SHA512 password hash.
|
|
70
|
+
let (:pw_string) { "\335\006{\3744g@\377z\204\322\r\332t\021\330\n\003\246K\223\356\034!P\261\305t\035\346\352p\206\003n\247MMA\310\301Z<\366\246\023\0161W3\340\357\000\317T\t\301\311+\204\246L7\276\370\320*\245" }
|
|
76
71
|
|
|
77
|
-
|
|
78
|
-
'
|
|
79
|
-
end
|
|
72
|
+
# The below is a salted-SHA512 password hash in hex.
|
|
73
|
+
let (:sha512_hash) { 'dd067bfc346740ff7a84d20dda7411d80a03a64b93ee1c2150b1c5741de6ea7086036ea74d4d41c8c15a3cf6a6130e315733e0ef00cf5409c1c92b84a64c37bef8d02aa5' }
|
|
80
74
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
75
|
+
let :plist_path do
|
|
76
|
+
'/var/db/dslocal/nodes/Default/users/jeff.plist'
|
|
77
|
+
end
|
|
84
78
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
79
|
+
let :ds_provider do
|
|
80
|
+
described_class
|
|
81
|
+
end
|
|
88
82
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
83
|
+
let :shadow_hash_data do
|
|
84
|
+
{'ShadowHashData' => [binary_plist]}
|
|
85
|
+
end
|
|
92
86
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
87
|
+
it 'should execute convert_binary_to_hash once when getting the password' do
|
|
88
|
+
described_class.expects(:convert_binary_to_hash).returns({'SALTED-SHA512' => pw_string})
|
|
89
|
+
Puppet::FileSystem.expects(:exist?).with(plist_path).once.returns(true)
|
|
90
|
+
Puppet::Util::Plist.expects(:read_plist_file).returns(shadow_hash_data)
|
|
91
|
+
described_class.get_password('uid', 'jeff')
|
|
92
|
+
end
|
|
99
93
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
94
|
+
it 'should fail if a salted-SHA512 password hash is not passed in' do
|
|
95
|
+
expect {
|
|
96
|
+
described_class.set_password('jeff', 'uid', 'badpassword')
|
|
97
|
+
}.to raise_error(RuntimeError, /OS X 10.7 requires a Salted SHA512 hash password of 136 characters./)
|
|
98
|
+
end
|
|
105
99
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
100
|
+
it 'should convert xml-to-binary and binary-to-xml when setting the pw on >= 10.7' do
|
|
101
|
+
described_class.expects(:convert_binary_to_hash).returns({'SALTED-SHA512' => pw_string})
|
|
102
|
+
described_class.expects(:convert_hash_to_binary).returns(binary_plist)
|
|
103
|
+
Puppet::FileSystem.expects(:exist?).with(plist_path).once.returns(true)
|
|
104
|
+
Puppet::Util::Plist.expects(:read_plist_file).returns(shadow_hash_data)
|
|
105
|
+
Puppet::Util::Plist.expects(:write_plist_file).with(shadow_hash_data, plist_path, :binary)
|
|
106
|
+
described_class.set_password('jeff', 'uid', sha512_hash)
|
|
107
|
+
end
|
|
114
108
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
109
|
+
it '[#13686] should handle an empty ShadowHashData field in the users plist' do
|
|
110
|
+
described_class.expects(:convert_hash_to_binary).returns(binary_plist)
|
|
111
|
+
Puppet::FileSystem.expects(:exist?).with(plist_path).once.returns(true)
|
|
112
|
+
Puppet::Util::Plist.expects(:read_plist_file).returns({'ShadowHashData' => nil})
|
|
113
|
+
Puppet::Util::Plist.expects(:write_plist_file)
|
|
114
|
+
described_class.set_password('jeff', 'uid', sha512_hash)
|
|
115
|
+
end
|
|
121
116
|
end
|
|
122
|
-
end
|
|
123
117
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
118
|
+
context '(#4855) directoryservice group resource failure' do
|
|
119
|
+
let :provider_class do
|
|
120
|
+
Puppet::Type.type(:group).provider(:directoryservice)
|
|
121
|
+
end
|
|
128
122
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
123
|
+
let :group_members do
|
|
124
|
+
['root','jeff']
|
|
125
|
+
end
|
|
132
126
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
127
|
+
let :user_account do
|
|
128
|
+
['root']
|
|
129
|
+
end
|
|
136
130
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
131
|
+
let :stub_resource do
|
|
132
|
+
stub('resource')
|
|
133
|
+
end
|
|
140
134
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
135
|
+
subject do
|
|
136
|
+
provider_class.new(stub_resource)
|
|
137
|
+
end
|
|
144
138
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
139
|
+
before :each do
|
|
140
|
+
@resource = stub("resource")
|
|
141
|
+
@resource.stubs(:[]).with(:name)
|
|
142
|
+
@provider = provider_class.new(@resource)
|
|
143
|
+
end
|
|
150
144
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
145
|
+
it 'should delete a group member if the user does not exist' do
|
|
146
|
+
stub_resource.stubs(:[]).with(:name).returns('fake_group')
|
|
147
|
+
stub_resource.stubs(:name).returns('fake_group')
|
|
148
|
+
subject.expects(:execute).with([:dseditgroup, '-o', 'edit', '-n', '.',
|
|
149
|
+
'-d', 'jeff',
|
|
150
|
+
'fake_group']).raises(Puppet::ExecutionFailure,
|
|
151
|
+
'it broke')
|
|
152
|
+
subject.expects(:execute).with([:dscl, '.', '-delete',
|
|
153
|
+
'/Groups/fake_group', 'GroupMembership',
|
|
154
|
+
'jeff'])
|
|
155
|
+
subject.remove_unwanted_members(group_members, user_account)
|
|
156
|
+
end
|
|
162
157
|
end
|
|
163
158
|
end
|
|
164
|
-
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
#! /usr/bin/env ruby
|
|
2
1
|
require 'spec_helper'
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
describe provider_class do
|
|
3
|
+
describe Puppet::Type.type(:package).provider(:aix) do
|
|
7
4
|
before(:each) do
|
|
8
5
|
# Create a mock resource
|
|
9
6
|
@resource = Puppet::Type.type(:package).new(:name => 'mypackage', :ensure => :installed, :source => 'mysource', :provider => :aix)
|
|
@@ -23,7 +20,7 @@ describe provider_class do
|
|
|
23
20
|
@provider.uninstall
|
|
24
21
|
end
|
|
25
22
|
|
|
26
|
-
|
|
23
|
+
context "when installing" do
|
|
27
24
|
it "should install a package" do
|
|
28
25
|
@provider.expects(:installp).with('-acgwXY', '-d', 'mysource', 'mypackage')
|
|
29
26
|
@provider.install
|
|
@@ -86,7 +83,7 @@ mypackage 1.2.3.3 Already superseded by 1.2.3.4
|
|
|
86
83
|
end
|
|
87
84
|
end
|
|
88
85
|
|
|
89
|
-
|
|
86
|
+
context "when finding the latest version" do
|
|
90
87
|
it "should return the current version when no later version is present" do
|
|
91
88
|
@provider.stubs(:latest_info).returns(nil)
|
|
92
89
|
@provider.stubs(:properties).returns( { :ensure => "1.2.3.4" } )
|
|
@@ -126,7 +123,7 @@ END
|
|
|
126
123
|
latest = Puppet::Type.type(:package).new(:name => 'mypackage', :ensure => :latest, :source => 'mysource', :provider => :aix)
|
|
127
124
|
absent = Puppet::Type.type(:package).new(:name => 'otherpackage', :ensure => :absent, :provider => :aix)
|
|
128
125
|
Process.stubs(:euid).returns(0)
|
|
129
|
-
|
|
130
|
-
|
|
126
|
+
described_class.expects(:execute).returns 'mypackage:mypackage.rte:1.8.6.4::I:T:::::N:A Super Cool Package::::0::\n'
|
|
127
|
+
described_class.prefetch({ 'mypackage' => latest, 'otherpackage' => absent })
|
|
131
128
|
end
|
|
132
129
|
end
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
#! /usr/bin/env ruby
|
|
2
1
|
require 'spec_helper'
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
describe provider_class do
|
|
3
|
+
describe Puppet::Type.type(:package).provider(:apt) do
|
|
7
4
|
let(:name) { 'asdf' }
|
|
8
5
|
|
|
9
6
|
let(:resource) do
|
|
@@ -14,7 +11,7 @@ describe provider_class do
|
|
|
14
11
|
end
|
|
15
12
|
|
|
16
13
|
let(:provider) do
|
|
17
|
-
provider =
|
|
14
|
+
provider = subject()
|
|
18
15
|
provider.resource = resource
|
|
19
16
|
provider
|
|
20
17
|
end
|
|
@@ -25,7 +22,7 @@ describe provider_class do
|
|
|
25
22
|
end
|
|
26
23
|
|
|
27
24
|
it "should be versionable" do
|
|
28
|
-
expect(
|
|
25
|
+
expect(described_class).to be_versionable
|
|
29
26
|
end
|
|
30
27
|
|
|
31
28
|
it "should use :install to update" do
|
|
@@ -3,35 +3,48 @@ require 'spec_helper'
|
|
|
3
3
|
# Note that much of the functionality of the dnf provider is already tested with yum provider tests,
|
|
4
4
|
# as yum is the parent provider.
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
6
|
+
describe Puppet::Type.type(:package).provider(:dnf) do
|
|
7
|
+
context 'default' do
|
|
8
|
+
(19..21).each do |ver|
|
|
9
|
+
it "should not be the default provider on fedora#{ver}" do
|
|
10
|
+
Facter.stubs(:value).with(:osfamily).returns(:redhat)
|
|
11
|
+
Facter.stubs(:value).with(:operatingsystem).returns(:fedora)
|
|
12
|
+
Facter.stubs(:value).with(:operatingsystemmajrelease).returns("#{ver}")
|
|
13
|
+
expect(described_class).to_not be_default
|
|
14
|
+
end
|
|
15
15
|
end
|
|
16
|
-
end
|
|
17
16
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
(22..26).each do |ver|
|
|
18
|
+
it "should be the default provider on fedora#{ver}" do
|
|
19
|
+
Facter.stubs(:value).with(:osfamily).returns(:redhat)
|
|
20
|
+
Facter.stubs(:value).with(:operatingsystem).returns(:fedora)
|
|
21
|
+
Facter.stubs(:value).with(:operatingsystemmajrelease).returns("#{ver}")
|
|
22
|
+
expect(described_class).to be_default
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should not be the default provider on rhel7" do
|
|
27
|
+
Facter.stubs(:value).with(:osfamily).returns(:redhat)
|
|
28
|
+
Facter.stubs(:value).with(:operatingsystem).returns(:redhat)
|
|
29
|
+
Facter.stubs(:value).with(:operatingsystemmajrelease).returns("7")
|
|
30
|
+
expect(described_class).to_not be_default
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should be the default provider on some random future fedora" do
|
|
34
|
+
Facter.stubs(:value).with(:osfamily).returns(:redhat)
|
|
35
|
+
Facter.stubs(:value).with(:operatingsystem).returns(:fedora)
|
|
36
|
+
Facter.stubs(:value).with(:operatingsystemmajrelease).returns("8675")
|
|
37
|
+
expect(described_class).to be_default
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "should be the default provider on rhel8" do
|
|
41
|
+
Facter.stubs(:value).with(:osfamily).returns(:redhat)
|
|
42
|
+
Facter.stubs(:value).with(:operatingsystem).returns(:redhat)
|
|
43
|
+
Facter.stubs(:value).with(:operatingsystemmajrelease).returns("8")
|
|
44
|
+
expect(described_class).to be_default
|
|
24
45
|
end
|
|
25
|
-
end
|
|
26
46
|
|
|
27
|
-
it "should be the default provider on some random future fedora" do
|
|
28
|
-
Facter.stubs(:value).with(:osfamily).returns(:redhat)
|
|
29
|
-
Facter.stubs(:value).with(:operatingsystem).returns(:fedora)
|
|
30
|
-
Facter.stubs(:value).with(:operatingsystemmajrelease).returns("8675")
|
|
31
|
-
expect(provider_class).to be_default
|
|
32
47
|
end
|
|
33
|
-
end
|
|
34
48
|
|
|
35
|
-
|
|
36
|
-
it_behaves_like 'RHEL package provider', provider_class, 'dnf'
|
|
49
|
+
it_behaves_like 'RHEL package provider', described_class, 'dnf'
|
|
37
50
|
end
|