diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/functional/resource/dsc_resource_spec.rb | 2 | ||||
-rw-r--r-- | spec/unit/platform/query_helpers_spec.rb | 24 | ||||
-rw-r--r-- | spec/unit/provider/dsc_resource_spec.rb | 13 |
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) |