summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/functional/resource/dsc_resource_spec.rb2
-rw-r--r--spec/unit/platform/query_helpers_spec.rb24
-rw-r--r--spec/unit/provider/dsc_resource_spec.rb13
3 files changed, 29 insertions, 10 deletions
diff --git a/spec/functional/resource/dsc_resource_spec.rb b/spec/functional/resource/dsc_resource_spec.rb
index 6f453eeb9f..24503f1ec7 100644
--- a/spec/functional/resource/dsc_resource_spec.rb
+++ b/spec/functional/resource/dsc_resource_spec.rb
@@ -43,6 +43,8 @@ describe Chef::Resource::DscResource, :windows_powershell_dsc_only do
before do
if !Chef::Platform.supports_dsc_invoke_resource?(node)
skip 'Requires Powershell >= 5.0.10018.0'
+ elsif !Chef::Platform.dsc_refresh_mode_disabled?(node)
+ skip 'Requires LCM RefreshMode is Disabled'
end
end
context 'with an invalid dsc resource' do
diff --git a/spec/unit/platform/query_helpers_spec.rb b/spec/unit/platform/query_helpers_spec.rb
index 33d4c2c3b7..f33bfa128b 100644
--- a/spec/unit/platform/query_helpers_spec.rb
+++ b/spec/unit/platform/query_helpers_spec.rb
@@ -75,3 +75,27 @@ describe 'Chef::Platform#supports_dsc_invoke_resource?' do
end
end
+describe 'Chef::Platform#dsc_refresh_mode_disabled?' do
+ let(:node) { instance_double('Chef::Node') }
+ let(:cmdlet) { instance_double('Chef::Util::Powershell::Cmdlet') }
+ let(:cmdlet_result) { instance_double('Chef::Util::Powershell::CmdletResult')}
+
+ it "returns true when RefreshMode is Disabled" do
+ expect(Chef::Util::Powershell::Cmdlet).to receive(:new).
+ with(node, "Get-DscLocalConfigurationManager", :object).
+ and_return(cmdlet)
+ expect(cmdlet).to receive(:run!).and_return(cmdlet_result)
+ expect(cmdlet_result).to receive(:return_value).and_return({ 'RefreshMode' => 'Disabled' })
+ expect(Chef::Platform.dsc_refresh_mode_disabled?(node)).to be true
+ end
+
+ it "returns false when RefreshMode is not Disabled" do
+ expect(Chef::Util::Powershell::Cmdlet).to receive(:new).
+ with(node, "Get-DscLocalConfigurationManager", :object).
+ and_return(cmdlet)
+ expect(cmdlet).to receive(:run!).and_return(cmdlet_result)
+ expect(cmdlet_result).to receive(:return_value).and_return({ 'RefreshMode' => 'LaLaLa' })
+ expect(Chef::Platform.dsc_refresh_mode_disabled?(node)).to be false
+ end
+end
+
diff --git a/spec/unit/provider/dsc_resource_spec.rb b/spec/unit/provider/dsc_resource_spec.rb
index 65c1c019f0..9946ab8410 100644
--- a/spec/unit/provider/dsc_resource_spec.rb
+++ b/spec/unit/provider/dsc_resource_spec.rb
@@ -50,30 +50,23 @@ describe Chef::Provider::DscResource do
}
context 'when RefreshMode is not set to Disabled' do
- let (:meta_configuration) { {'RefreshMode' => 'AnythingElse'}}
-
it 'raises an exception' do
- expect(provider).to receive(:meta_configuration).and_return(
- meta_configuration)
+ expect(provider).to receive(:dsc_refresh_mode_disabled?).and_return(false)
expect { provider.run_action(:run) }.to raise_error(
Chef::Exceptions::ProviderNotFound, /Disabled/)
end
end
context 'when RefreshMode is set to Disabled' do
- let (:meta_configuration) { {'RefreshMode' => 'Disabled'}}
-
it 'does not update the resource if it is up to date' do
- expect(provider).to receive(:meta_configuration).and_return(
- meta_configuration)
+ expect(provider).to receive(:dsc_refresh_mode_disabled?).and_return(true)
expect(provider).to receive(:test_resource).and_return(true)
provider.run_action(:run)
expect(resource).not_to be_updated
end
it 'converges the resource if it is not up to date' do
- expect(provider).to receive(:meta_configuration).and_return(
- meta_configuration)
+ expect(provider).to receive(:dsc_refresh_mode_disabled?).and_return(true)
expect(provider).to receive(:test_resource).and_return(false)
expect(provider).to receive(:set_resource)
provider.run_action(:run)