1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
# frozen_string_literal: true
require 'spec_helper'
require 'tempfile'
require 'open3'
RSpec.describe 'a type with optional ensure' do
# these common_args *have* to use debug to see the messages we are matching
let(:common_args) { '--verbose --trace --strict=error --modulepath spec/fixtures --debug' }
describe 'using `puppet apply`' do
it 'creates an absent resource when ensure => present is specified' do
stdout_str, _status = Open3.capture2e("puppet apply #{common_args} -e \"test_optional_ensure { newres: ensure => present, prop => 'myprop' }\"")
expect(stdout_str).to match %r{Creating: Creating 'newres' with}
end
it 'deletes an existing resource when ensure => absent is specified' do
stdout_str, _status = Open3.capture2e("puppet apply #{common_args} -e \"test_optional_ensure { existing: ensure => absent }\"")
expect(stdout_str).to match %r{Deleting: Deleting 'existing'}
end
it 'does nothing when an unknown resource is referenced with no ensure' do
stdout_str, _status = Open3.capture2e("puppet apply #{common_args} -e \"test_optional_ensure { missing: }\"")
expect(stdout_str).to match %r{Test_optional_ensure\[missing\]: Nothing to manage: }
expect(stdout_str).not_to match %r{Creating: }
expect(stdout_str).not_to match %r{Updating: }
expect(stdout_str).not_to match %r{Deleting: }
end
it 'does nothing when an existing resource is referenced with no ensure and no properties' do
stdout_str, _status = Open3.capture2e("puppet apply #{common_args} -e \"test_optional_ensure { existing: }\"")
expect(stdout_str).to match %r{Current State: \{:namevar=>"existing"}
expect(stdout_str).not_to match %r{Creating: }
expect(stdout_str).not_to match %r{Updating: }
expect(stdout_str).not_to match %r{Deleting: }
end
it 'updates changed properties when an existing resource is referenced with no ensure' do
stdout_str, _status = Open3.capture2e("puppet apply #{common_args} -e \"test_optional_ensure { existing: prop => 'asdf' }\"")
expect(stdout_str).to match %r{Updating: Updating 'existing' with}
expect(stdout_str).not_to match %r{Creating: }
expect(stdout_str).not_to match %r{Deleting: }
end
end
end
|