diff --git a/spec/unit/puppet/provider/dsc_base_provider/dsc_base_provider_spec.rb b/spec/unit/puppet/provider/dsc_base_provider/dsc_base_provider_spec.rb index 01b4f9b6..fc77c8b5 100644 --- a/spec/unit/puppet/provider/dsc_base_provider/dsc_base_provider_spec.rb +++ b/spec/unit/puppet/provider/dsc_base_provider/dsc_base_provider_spec.rb @@ -757,7 +757,7 @@ subject(:result) { provider.invoke_set_method(context, name, should_hash) } let(:name) { { name: 'foo', dsc_name: 'foo' } } - let(:should_hash) { name.merge(dsc_foo: 'bar') } + let(:should_hash) { name.merge(dsc_foo: 'bar')} let(:apply_props) { { dsc_name: 'foo', dsc_foo: 'bar' } } let(:resource) { "Resource: #{apply_props}" } let(:script) { "Script: #{apply_props}" } @@ -783,7 +783,7 @@ context 'when the invocation script returns nil' do it 'errors via context but does not raise' do expect(ps_manager).to receive(:execute).and_return({ stdout: nil }) - expect(context).to receive(:err).with('Nothing returned.') + expect(context).to receive(:err).with(/Nothing returned./) expect { result }.not_to raise_error end end @@ -835,6 +835,26 @@ end end + context 'when a dsc_timeout is specified' do + let(:should_hash) { name.merge(dsc_timeout: 5) } + let(:apply_props_with_timeout) { { dsc_name: 'foo', dsc_timeout: 5 } } + let(:resource_with_timeout) { "Resource: #{apply_props_with_timeout}" } + let(:script_with_timeout) { "Script: #{apply_props_with_timeout}" } + + before do + allow(provider).to receive(:invocable_resource).with(apply_props_with_timeout, context, 'set').and_return(resource_with_timeout) + allow(provider).to receive(:ps_script_content).with(resource_with_timeout).and_return(script_with_timeout) + allow(provider).to receive(:remove_secret_identifiers).with(script_with_timeout).and_return(script_with_timeout) + end + + it 'sets @timeout and passes it to ps_manager.execute' do + provider.instance_variable_set(:@timeout, nil) + expect(ps_manager).to receive(:execute).with(script_with_timeout, 5000).and_return({ stdout: '{"in_desired_state": true, "errormessage": null}' }) + provider.invoke_set_method(context, name, should_hash) + expect(provider.instance_variable_get(:@timeout)).to eq(5000) + end + end + context 'when the invocation script returns data without errors' do it 'filters for the correct properties to invoke and returns the results' do expect(ps_manager).to receive(:execute).with("Script: #{apply_props}", nil).and_return({ stdout: '{"in_desired_state": true, "errormessage": null}' })