puppet 6.17.0-x64-mingw32 → 6.18.0-x64-mingw32
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.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile.lock +6 -5
- data/lib/puppet/application/apply.rb +18 -20
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/confine.rb +1 -1
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/defaults.rb +21 -3
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/file_serving/mount/locales.rb +1 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
- data/lib/puppet/file_serving/mount/plugins.rb +1 -2
- data/lib/puppet/file_system/file_impl.rb +3 -3
- data/lib/puppet/functions/lstrip.rb +4 -4
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/rstrip.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/functions/strip.rb +4 -4
- data/lib/puppet/gettext/config.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +4 -4
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +3 -3
- data/lib/puppet/indirector/file_metadata/http.rb +1 -0
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/module.rb +1 -2
- data/lib/puppet/network/format_support.rb +2 -2
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/node/environment.rb +12 -5
- data/lib/puppet/pal/pal_impl.rb +27 -3
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/functions.rb +21 -17
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- data/lib/puppet/parser/type_loader.rb +2 -2
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
- data/lib/puppet/pops/loaders.rb +18 -11
- data/lib/puppet/pops/lookup/context.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/validation/checker4_0.rb +19 -15
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +34 -0
- data/lib/puppet/provider/package/gem.rb +4 -2
- data/lib/puppet/provider/package/puppet_gem.rb +5 -0
- data/lib/puppet/provider/package/zypper.rb +3 -0
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/test/test_helper.rb +10 -3
- data/lib/puppet/transaction.rb +2 -2
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +1 -1
- data/lib/puppet/trusted_external.rb +2 -2
- data/lib/puppet/type.rb +4 -3
- data/lib/puppet/type/file.rb +2 -2
- data/lib/puppet/type/file/source.rb +27 -7
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/service.rb +4 -0
- data/lib/puppet/type/user.rb +18 -3
- data/lib/puppet/util.rb +26 -12
- data/lib/puppet/util/autoload.rb +9 -7
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/windows.rb +1 -0
- data/lib/puppet/util/windows/api_types.rb +15 -1
- data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
- data/lib/puppet/util/windows/security.rb +4 -4
- data/lib/puppet/util/windows/user.rb +219 -0
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +78 -69
- data/man/man5/puppet.conf.5 +22 -3
- 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 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- 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 +1 -1
- data/man/man8/puppet-lookup.8 +2 -2
- 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 +1 -1
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
- data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
- data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
- data/spec/integration/application/agent_spec.rb +29 -37
- data/spec/integration/application/apply_spec.rb +149 -149
- data/spec/integration/application/config_spec.rb +74 -0
- data/spec/integration/application/doc_spec.rb +16 -6
- data/spec/integration/application/filebucket_spec.rb +65 -16
- data/spec/integration/application/help_spec.rb +42 -0
- data/spec/integration/application/lookup_spec.rb +13 -0
- data/spec/integration/application/module_spec.rb +68 -0
- data/spec/integration/application/plugin_spec.rb +50 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/indirector/facts/facter_spec.rb +8 -6
- data/spec/integration/node/environment_spec.rb +1 -1
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
- data/spec/integration/util/windows/process_spec.rb +26 -32
- data/spec/integration/util/windows/user_spec.rb +7 -0
- data/spec/integration/util_spec.rb +7 -33
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +8 -0
- data/spec/unit/application/agent_spec.rb +3 -4
- data/spec/unit/application/face_base_spec.rb +6 -4
- data/spec/unit/application/facts_spec.rb +39 -10
- data/spec/unit/application/man_spec.rb +52 -0
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +15 -2
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer_spec.rb +47 -31
- data/spec/unit/confine_spec.rb +2 -1
- data/spec/unit/face/config_spec.rb +3 -1
- data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
- data/spec/unit/file_system/uniquefile_spec.rb +18 -0
- data/spec/unit/http/client_spec.rb +0 -1
- data/spec/unit/http/resolver_spec.rb +0 -1
- data/spec/unit/http/service/ca_spec.rb +0 -1
- data/spec/unit/http/service/compiler_spec.rb +0 -1
- data/spec/unit/http/service/file_server_spec.rb +0 -1
- data/spec/unit/http/service/report_spec.rb +0 -1
- data/spec/unit/http/service_spec.rb +0 -1
- data/spec/unit/http/session_spec.rb +0 -1
- data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/node/environment_spec.rb +18 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +70 -0
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/provider/package/apt_spec.rb +77 -0
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/init_spec.rb +41 -0
- data/spec/unit/provider/service/systemd_spec.rb +1 -6
- data/spec/unit/provider/service/windows_spec.rb +28 -0
- data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
- data/spec/unit/puppet_pal_2pec.rb +40 -0
- data/spec/unit/reports/store_spec.rb +17 -13
- data/spec/unit/transaction/persistence_spec.rb +15 -0
- data/spec/unit/type/service_spec.rb +35 -2
- data/spec/unit/type/user_spec.rb +31 -2
- data/spec/unit/util/character_encoding_spec.rb +4 -4
- data/spec/unit/util/command_line_spec.rb +11 -6
- metadata +21 -44
- data/spec/integration/faces/config_spec.rb +0 -91
- data/spec/integration/faces/documentation_spec.rb +0 -57
- data/spec/integration/file_bucket/file_spec.rb +0 -50
- data/spec/integration/file_serving/content_spec.rb +0 -7
- data/spec/integration/file_serving/fileset_spec.rb +0 -12
- data/spec/integration/file_serving/metadata_spec.rb +0 -8
- data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
- data/spec/integration/file_system/uniquefile_spec.rb +0 -26
- data/spec/integration/module_tool/forge_spec.rb +0 -51
- data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
- data/spec/integration/provider/service/init_spec.rb +0 -48
- data/spec/integration/provider/service/systemd_spec.rb +0 -25
- data/spec/integration/provider/service/windows_spec.rb +0 -50
- data/spec/integration/reference/providers_spec.rb +0 -21
- data/spec/integration/reports_spec.rb +0 -13
- data/spec/integration/ssl/certificate_request_spec.rb +0 -44
- data/spec/integration/ssl/host_spec.rb +0 -72
- data/spec/integration/ssl/key_spec.rb +0 -99
- data/spec/shared_behaviours/file_serving_model.rb +0 -51
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/man_spec.rb +0 -31
| Binary file | 
| @@ -25,11 +25,10 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do | |
| 25 25 | 
             
                  server.start_server do |port|
         | 
| 26 26 | 
             
                    Puppet[:masterport] = port
         | 
| 27 27 | 
             
                    expect {
         | 
| 28 | 
            -
                       | 
| 29 | 
            -
             | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
                    }.to output(%r{HTTP GET https://127.0.0.1:#{port}/status/v1/simple/master returned 200 OK}).to_stdout
         | 
| 28 | 
            +
                      agent.command_line.args << '--test'
         | 
| 29 | 
            +
                      agent.run
         | 
| 30 | 
            +
                    }.to exit_with(0)
         | 
| 31 | 
            +
                     .and output(%r{HTTP GET https://127.0.0.1:#{port}/status/v1/simple/master returned 200 OK}).to_stdout
         | 
| 33 32 | 
             
                  end
         | 
| 34 33 | 
             
                end
         | 
| 35 34 |  | 
| @@ -39,11 +38,10 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do | |
| 39 38 | 
             
                  server.start_server do |port|
         | 
| 40 39 | 
             
                    Puppet[:masterport] = port
         | 
| 41 40 | 
             
                    expect {
         | 
| 42 | 
            -
                       | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
                    }.to output(%r{Unable to connect to server from server_list setting: Request to https://puppet.example.com:#{port}/status/v1/simple/master failed}).to_stdout
         | 
| 41 | 
            +
                      agent.command_line.args << '--test'
         | 
| 42 | 
            +
                      agent.run
         | 
| 43 | 
            +
                    }.to exit_with(0)
         | 
| 44 | 
            +
                     .and output(%r{Unable to connect to server from server_list setting: Request to https://puppet.example.com:#{port}/status/v1/simple/master failed}).to_stdout
         | 
| 47 45 |  | 
| 48 46 | 
             
                    report = Puppet::Transaction::Report.convert_from(:yaml, File.read(Puppet[:lastrunreport]))
         | 
| 49 47 | 
             
                    expect(report.master_used).to eq("127.0.0.1:#{port}")
         | 
| @@ -54,13 +52,11 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do | |
| 54 52 | 
             
                  Puppet[:server_list] = "puppet.example.com"
         | 
| 55 53 |  | 
| 56 54 | 
             
                  expect {
         | 
| 57 | 
            -
                     | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 62 | 
            -
                    }.to output(%r{Unable to connect to server from server_list setting: Could not select a functional puppet master from server_list: 'puppet.example.com'}).to_stdout
         | 
| 63 | 
            -
                  }.to output(/Error: Could not run Puppet configuration client: Could not select a functional puppet master from server_list: 'puppet.example.com'/).to_stderr
         | 
| 55 | 
            +
                    agent.command_line.args << '--test'
         | 
| 56 | 
            +
                    agent.run
         | 
| 57 | 
            +
                  }.to exit_with(1)
         | 
| 58 | 
            +
                   .and output(%r{Unable to connect to server from server_list setting: Could not select a functional puppet master from server_list: 'puppet.example.com'}).to_stdout
         | 
| 59 | 
            +
                   .and output(/Error: Could not run Puppet configuration client: Could not select a functional puppet master from server_list: 'puppet.example.com'/).to_stderr
         | 
| 64 60 |  | 
| 65 61 | 
             
                  # I'd expect puppet to update the last run report even if the server_list was
         | 
| 66 62 | 
             
                  # exhausted, but it doesn't work that way currently, see PUP-6708
         | 
| @@ -71,11 +67,10 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do | |
| 71 67 | 
             
                  server.start_server do |port|
         | 
| 72 68 | 
             
                    Puppet[:masterport] = port
         | 
| 73 69 | 
             
                    expect {
         | 
| 74 | 
            -
                       | 
| 75 | 
            -
             | 
| 76 | 
            -
             | 
| 77 | 
            -
             | 
| 78 | 
            -
                    }.to output(%r{Resolved service 'puppet' to https://127.0.0.1:#{port}/puppet/v3}).to_stdout
         | 
| 70 | 
            +
                      agent.command_line.args << '--test'
         | 
| 71 | 
            +
                      agent.run
         | 
| 72 | 
            +
                    }.to exit_with(0)
         | 
| 73 | 
            +
                     .and output(%r{Resolved service 'puppet' to https://127.0.0.1:#{port}/puppet/v3}).to_stdout
         | 
| 79 74 | 
             
                  end
         | 
| 80 75 |  | 
| 81 76 | 
             
                  report = Puppet::Transaction::Report.convert_from(:yaml, File.read(Puppet[:lastrunreport]))
         | 
| @@ -116,11 +111,10 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do | |
| 116 111 | 
             
                  server.start_server(mounts: {catalog: catalog_handler}) do |port|
         | 
| 117 112 | 
             
                    Puppet[:masterport] = port
         | 
| 118 113 | 
             
                    expect {
         | 
| 119 | 
            -
                       | 
| 120 | 
            -
             | 
| 121 | 
            -
             | 
| 122 | 
            -
             | 
| 123 | 
            -
                    }.to output(%r{Notice: /Stage\[main\]/Main/Notify\[deferred\]/message: defined 'message' as '1:2:3'}).to_stdout
         | 
| 114 | 
            +
                      agent.command_line.args << '--test'
         | 
| 115 | 
            +
                      agent.run
         | 
| 116 | 
            +
                    }.to exit_with(2)
         | 
| 117 | 
            +
                     .and output(%r{Notice: /Stage\[main\]/Main/Notify\[deferred\]/message: defined 'message' as '1:2:3'}).to_stdout
         | 
| 124 118 | 
             
                  end
         | 
| 125 119 | 
             
                end
         | 
| 126 120 |  | 
| @@ -139,11 +133,10 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do | |
| 139 133 | 
             
                  server.start_server(mounts: {catalog: catalog_handler}) do |port|
         | 
| 140 134 | 
             
                    Puppet[:masterport] = port
         | 
| 141 135 | 
             
                    expect {
         | 
| 142 | 
            -
                       | 
| 143 | 
            -
             | 
| 144 | 
            -
             | 
| 145 | 
            -
             | 
| 146 | 
            -
                    }.to output(a_string_matching(
         | 
| 136 | 
            +
                      agent.command_line.args << '--test'
         | 
| 137 | 
            +
                      agent.run
         | 
| 138 | 
            +
                    }.to exit_with(2)
         | 
| 139 | 
            +
                     .and output(a_string_matching(
         | 
| 147 140 | 
             
                      /Notice: Sensitive \[value redacted\]/
         | 
| 148 141 | 
             
                    ).and matching(
         | 
| 149 142 | 
             
                      /Notify\[sensitive\]\/message: changed \[redacted\] to \[redacted\]/
         | 
| @@ -249,11 +242,10 @@ describe "puppet agent", unless: Puppet::Util::Platform.jruby? do | |
| 249 242 | 
             
                  server.start_server(mounts: mounts) do |port|
         | 
| 250 243 | 
             
                    Puppet[:masterport] = port
         | 
| 251 244 | 
             
                    expect {
         | 
| 252 | 
            -
                       | 
| 253 | 
            -
             | 
| 254 | 
            -
             | 
| 255 | 
            -
             | 
| 256 | 
            -
                    }.to output(/content changed '{md5}d41d8cd98f00b204e9800998ecf8427e' to '{md5}4cf49285ae567157ebfba72bd04ccf32'/).to_stdout
         | 
| 245 | 
            +
                      agent.command_line.args << '--test'
         | 
| 246 | 
            +
                      agent.run
         | 
| 247 | 
            +
                    }.to exit_with(2)
         | 
| 248 | 
            +
                     .and output(/content changed '{md5}d41d8cd98f00b204e9800998ecf8427e' to '{md5}4cf49285ae567157ebfba72bd04ccf32'/).to_stdout
         | 
| 257 249 |  | 
| 258 250 | 
             
                    # verify puppet restored binary content
         | 
| 259 251 | 
             
                    expect(File.binread(path)).to eq(binary_content)
         | 
| @@ -6,6 +6,8 @@ require 'puppet_spec/https' | |
| 6 6 | 
             
            describe "apply", unless: Puppet::Util::Platform.jruby? do
         | 
| 7 7 | 
             
              include PuppetSpec::Files
         | 
| 8 8 |  | 
| 9 | 
            +
              let(:apply) { Puppet::Application[:apply] }
         | 
| 10 | 
            +
             | 
| 9 11 | 
             
              before :each do
         | 
| 10 12 | 
             
                Puppet[:reports] = "none"
         | 
| 11 13 | 
             
                # Let exceptions be raised instead of exiting
         | 
| @@ -19,76 +21,51 @@ describe "apply", unless: Puppet::Util::Platform.jruby? do | |
| 19 21 | 
             
                  resource = Puppet::Resource.new(:file, file_to_create, :parameters => {:content => "my stuff"})
         | 
| 20 22 | 
             
                  catalog.add_resource resource
         | 
| 21 23 |  | 
| 22 | 
            -
                   | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
                   | 
| 26 | 
            -
             | 
| 27 | 
            -
                  puppet.apply
         | 
| 24 | 
            +
                  apply.command_line.args = ['--catalog', file_containing("manifest", catalog.to_json)]
         | 
| 25 | 
            +
                  expect {
         | 
| 26 | 
            +
                    apply.run
         | 
| 27 | 
            +
                  }.to output(/ensure: defined content as/).to_stdout
         | 
| 28 28 |  | 
| 29 29 | 
             
                  expect(Puppet::FileSystem.exist?(file_to_create)).to be_truthy
         | 
| 30 30 | 
             
                  expect(File.read(file_to_create)).to eq("my stuff")
         | 
| 31 31 | 
             
                end
         | 
| 32 32 |  | 
| 33 | 
            -
                context ' | 
| 34 | 
            -
                   | 
| 35 | 
            -
             | 
| 36 | 
            -
                  let!(:envdir) { tmpdir('environments') }
         | 
| 33 | 
            +
                context 'and pcore types are available' do
         | 
| 34 | 
            +
                  let(:envdir) { my_fixture('environments') }
         | 
| 37 35 | 
             
                  let(:env_name) { 'spec' }
         | 
| 38 | 
            -
                  let(:dir_structure) {
         | 
| 39 | 
            -
                    {
         | 
| 40 | 
            -
                      '.resource_types' => {
         | 
| 41 | 
            -
                        'applytest.pp' => <<-CODE
         | 
| 42 | 
            -
                        Puppet::Resource::ResourceType3.new(
         | 
| 43 | 
            -
                          'applytest',
         | 
| 44 | 
            -
                          [Puppet::Resource::Param.new(String, 'message')],
         | 
| 45 | 
            -
                          [Puppet::Resource::Param.new(String, 'name', true)])
         | 
| 46 | 
            -
                      CODE
         | 
| 47 | 
            -
                      },
         | 
| 48 | 
            -
                      'modules' => {
         | 
| 49 | 
            -
                        'amod' => {
         | 
| 50 | 
            -
                          'lib' => {
         | 
| 51 | 
            -
                            'puppet' => {
         | 
| 52 | 
            -
                              'type' => { 'applytest.rb' => <<-CODE
         | 
| 53 | 
            -
            Puppet::Type.newtype(:applytest) do
         | 
| 54 | 
            -
            newproperty(:message) do
         | 
| 55 | 
            -
              def sync
         | 
| 56 | 
            -
                Puppet.send(@resource[:loglevel], self.should)
         | 
| 57 | 
            -
              end
         | 
| 58 36 |  | 
| 59 | 
            -
             | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 37 | 
            +
                  before(:each) do
         | 
| 38 | 
            +
                    Puppet[:environmentpath] = envdir
         | 
| 39 | 
            +
                    Puppet[:environment] = env_name
         | 
| 40 | 
            +
                  end
         | 
| 62 41 |  | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 42 | 
            +
                  it 'does not load the pcore type' do
         | 
| 43 | 
            +
                    apply = Puppet::Application[:apply]
         | 
| 44 | 
            +
                    apply.command_line.args = [ '-e', "Applytest { message => 'the default'} applytest { 'applytest was here': }" ]
         | 
| 66 45 |  | 
| 67 | 
            -
             | 
| 68 | 
            -
             | 
| 46 | 
            +
                    expect {
         | 
| 47 | 
            +
                      apply.run
         | 
| 48 | 
            +
                    }.to exit_with(0)
         | 
| 49 | 
            +
                     .and output(a_string_matching(
         | 
| 50 | 
            +
                       /the Puppet::Type says hello/
         | 
| 51 | 
            +
                     ).and matching(
         | 
| 52 | 
            +
                       /applytest was here/
         | 
| 53 | 
            +
                     )).to_stdout
         | 
| 54 | 
            +
                  end
         | 
| 55 | 
            +
                end
         | 
| 69 56 |  | 
| 70 | 
            -
             | 
| 71 | 
            -
             | 
| 72 | 
            -
              Puppet.notice('the Puppet::Type says hello')
         | 
| 73 | 
            -
              isnamevar
         | 
| 74 | 
            -
            end
         | 
| 75 | 
            -
            end
         | 
| 76 | 
            -
                              CODE
         | 
| 77 | 
            -
                              }
         | 
| 78 | 
            -
                            }
         | 
| 79 | 
            -
                          }
         | 
| 80 | 
            -
                        }
         | 
| 81 | 
            -
                      }
         | 
| 82 | 
            -
                    }
         | 
| 83 | 
            -
                  }
         | 
| 57 | 
            +
                context 'from environment with a pcore defined resource type' do
         | 
| 58 | 
            +
                  include PuppetSpec::Compiler
         | 
| 84 59 |  | 
| 60 | 
            +
                  let(:envdir) { my_fixture('environments') }
         | 
| 61 | 
            +
                  let(:env_name) { 'spec' }
         | 
| 85 62 | 
             
                  let(:environments) { Puppet::Environments::Directories.new(envdir, []) }
         | 
| 86 63 | 
             
                  let(:env) { Puppet::Node::Environment.create(:'spec', [File.join(envdir, 'spec', 'modules')]) }
         | 
| 87 64 | 
             
                  let(:node) { Puppet::Node.new('test', :environment => env) }
         | 
| 65 | 
            +
             | 
| 88 66 | 
             
                  around(:each) do |example|
         | 
| 89 67 | 
             
                    Puppet::Type.rmtype(:applytest)
         | 
| 90 68 | 
             
                    Puppet[:environment] = env_name
         | 
| 91 | 
            -
                    dir_contained_in(envdir, env_name => dir_structure)
         | 
| 92 69 | 
             
                    Puppet.override(:environments => environments, :current_environment => env) do
         | 
| 93 70 | 
             
                      example.run
         | 
| 94 71 | 
             
                    end
         | 
| @@ -96,12 +73,13 @@ end | |
| 96 73 |  | 
| 97 74 | 
             
                  it 'does not load the pcore type' do
         | 
| 98 75 | 
             
                    catalog = compile_to_catalog('applytest { "applytest was here":}', node)
         | 
| 99 | 
            -
                    apply =  | 
| 100 | 
            -
                    apply.options[:catalog] = file_containing('manifest', catalog.to_json)
         | 
| 76 | 
            +
                    apply.command_line.args = ['--catalog', file_containing('manifest', catalog.to_json)]
         | 
| 101 77 |  | 
| 102 78 | 
             
                    Puppet[:environmentpath] = envdir
         | 
| 103 79 | 
             
                    expect_any_instance_of(Puppet::Pops::Loader::Runtime3TypeLoader).not_to receive(:find)
         | 
| 104 | 
            -
                    expect { | 
| 80 | 
            +
                    expect {
         | 
| 81 | 
            +
                      apply.run
         | 
| 82 | 
            +
                    }.to output(/the Puppet::Type says hello.*applytest was here/m).to_stdout
         | 
| 105 83 | 
             
                  end
         | 
| 106 84 |  | 
| 107 85 | 
             
                  # Test just to verify that the Pcore Resource Type and not the Ruby one is produced when the catalog is produced
         | 
| @@ -113,7 +91,9 @@ end | |
| 113 91 |  | 
| 114 92 | 
             
                    expect(compiler.loaders.runtime3_type_loader.instance_variable_get(:@resource_3x_loader)).to receive(:set_entry).once.with(tn, rt, instance_of(String))
         | 
| 115 93 | 
             
                      .and_return(Puppet::Pops::Loader::Loader::NamedEntry.new(tn, rt, nil))
         | 
| 116 | 
            -
                    expect { | 
| 94 | 
            +
                    expect {
         | 
| 95 | 
            +
                      compiler.compile
         | 
| 96 | 
            +
                    }.not_to output(/the Puppet::Type says hello/).to_stdout
         | 
| 117 97 | 
             
                  end
         | 
| 118 98 |  | 
| 119 99 | 
             
                  it "does not fail when pcore type is loaded twice" do
         | 
| @@ -226,36 +206,36 @@ end | |
| 226 206 | 
             
                  catalog = compile_to_catalog('include mod', node)
         | 
| 227 207 |  | 
| 228 208 | 
             
                  Puppet[:environment] = env_name
         | 
| 229 | 
            -
                  apply =  | 
| 230 | 
            -
             | 
| 231 | 
            -
                  expect { | 
| 232 | 
            -
             | 
| 209 | 
            +
                  apply.command_line.args = ['--catalog', file_containing('manifest', catalog.to_json)]
         | 
| 210 | 
            +
             | 
| 211 | 
            +
                  expect {
         | 
| 212 | 
            +
                    apply.run
         | 
| 213 | 
            +
                  }.to output(%r{Notify\[The Street 23\]/message: defined 'message' as 'The Street 23'}).to_stdout
         | 
| 233 214 | 
             
                end
         | 
| 234 215 | 
             
              end
         | 
| 235 216 |  | 
| 236 | 
            -
              it " | 
| 217 | 
            +
              it "raises if the environment directory does not exist" do
         | 
| 237 218 | 
             
                manifest = file_containing("manifest.pp", "notice('it was applied')")
         | 
| 219 | 
            +
                apply.command_line.args = [manifest]
         | 
| 238 220 |  | 
| 239 221 | 
             
                special = Puppet::Node::Environment.create(:special, [])
         | 
| 240 222 | 
             
                Puppet.override(:current_environment => special) do
         | 
| 241 223 | 
             
                  Puppet[:environment] = 'special'
         | 
| 242 | 
            -
                   | 
| 243 | 
            -
             | 
| 244 | 
            -
                   | 
| 224 | 
            +
                  expect {
         | 
| 225 | 
            +
                    apply.run
         | 
| 226 | 
            +
                  }.to raise_error(Puppet::Environments::EnvironmentNotFound,
         | 
| 227 | 
            +
                                   /Could not find a directory environment named 'special' anywhere in the path/)
         | 
| 245 228 | 
             
                end
         | 
| 246 | 
            -
             | 
| 247 | 
            -
                expect(@logs.map(&:to_s)).to include('it was applied')
         | 
| 248 229 | 
             
              end
         | 
| 249 230 |  | 
| 250 231 | 
             
              it "adds environment to the $server_facts variable" do
         | 
| 251 232 | 
             
                manifest = file_containing("manifest.pp", "notice(\"$server_facts\")")
         | 
| 233 | 
            +
                apply.command_line.args = [manifest]
         | 
| 252 234 |  | 
| 253 | 
            -
                 | 
| 254 | 
            -
             | 
| 255 | 
            -
             | 
| 256 | 
            -
             | 
| 257 | 
            -
             | 
| 258 | 
            -
                expect(@logs.map(&:to_s)).to include(/{environment =>.*/)
         | 
| 235 | 
            +
                expect {
         | 
| 236 | 
            +
                  apply.run
         | 
| 237 | 
            +
                }.to exit_with(0)
         | 
| 238 | 
            +
                 .and output(/{environment => production}/).to_stdout
         | 
| 259 239 | 
             
              end
         | 
| 260 240 |  | 
| 261 241 | 
             
              it "applies a given file even when an ENC is configured", :unless => Puppet::Util::Platform.windows? || Puppet::Util::Platform.jruby? do
         | 
| @@ -271,48 +251,36 @@ end | |
| 271 251 | 
             
                  Puppet[:environment] = 'special'
         | 
| 272 252 | 
             
                  Puppet[:node_terminus] = 'exec'
         | 
| 273 253 | 
             
                  Puppet[:external_nodes] = enc
         | 
| 274 | 
            -
                   | 
| 275 | 
            -
                   | 
| 276 | 
            -
             | 
| 254 | 
            +
                  apply.command_line.args = [manifest]
         | 
| 255 | 
            +
                  expect {
         | 
| 256 | 
            +
                    apply.run
         | 
| 257 | 
            +
                  }.to exit_with(0)
         | 
| 258 | 
            +
                   .and output(/Notice: Scope\(Class\[main\]\): specific manifest applied/).to_stdout
         | 
| 277 259 | 
             
                end
         | 
| 278 | 
            -
             | 
| 279 | 
            -
                expect(@logs.map(&:to_s)).to include('specific manifest applied')
         | 
| 280 260 | 
             
              end
         | 
| 281 261 |  | 
| 282 262 | 
             
              context "handles errors" do
         | 
| 283 263 | 
             
                it "logs compile errors once" do
         | 
| 284 | 
            -
                   | 
| 285 | 
            -
                   | 
| 286 | 
            -
                  apply.options[:code] = '08'
         | 
| 287 | 
            -
             | 
| 288 | 
            -
                  msg = 'valid octal'
         | 
| 289 | 
            -
                  callback = Proc.new do |actual|
         | 
| 290 | 
            -
                    expect(actual.scan(Regexp.new(msg))).to eq([msg])
         | 
| 291 | 
            -
                  end
         | 
| 292 | 
            -
             | 
| 293 | 
            -
                  expect do
         | 
| 264 | 
            +
                  apply.command_line.args = ['-e', '08']
         | 
| 265 | 
            +
                  expect {
         | 
| 294 266 | 
             
                    apply.run
         | 
| 295 | 
            -
                   | 
| 267 | 
            +
                  }.to exit_with(1)
         | 
| 268 | 
            +
                   .and output(/Not a valid octal number/).to_stderr
         | 
| 296 269 | 
             
                end
         | 
| 297 270 |  | 
| 298 271 | 
             
                it "logs compile post processing errors once" do
         | 
| 299 | 
            -
                  Puppet.initialize_settings([])
         | 
| 300 | 
            -
                  apply = Puppet::Application.find(:apply).new(double('command_line', :subcommand_name => :apply, :args => []))
         | 
| 301 272 | 
             
                  path = File.expand_path('/tmp/content_file_test.Q634Dlmtime')
         | 
| 302 | 
            -
                  apply. | 
| 273 | 
            +
                  apply.command_line.args = ['-e', "file { '#{path}':
         | 
| 303 274 | 
             
                    content => 'This is the test file content',
         | 
| 304 275 | 
             
                    ensure => present,
         | 
| 305 276 | 
             
                    checksum => mtime
         | 
| 306 | 
            -
                  }"
         | 
| 277 | 
            +
                  }"]
         | 
| 307 278 |  | 
| 308 | 
            -
                   | 
| 309 | 
            -
                  callback = Proc.new do |actual|
         | 
| 310 | 
            -
                    expect(actual.scan(Regexp.new(msg))).to eq([msg])
         | 
| 311 | 
            -
                  end
         | 
| 312 | 
            -
             | 
| 313 | 
            -
                  expect do
         | 
| 279 | 
            +
                  expect {
         | 
| 314 280 | 
             
                    apply.run
         | 
| 315 | 
            -
                   | 
| 281 | 
            +
                  }.to exit_with(1)
         | 
| 282 | 
            +
                   .and output(/Compiled catalog/).to_stdout
         | 
| 283 | 
            +
                   .and output(/You cannot specify content when using checksum/).to_stderr
         | 
| 316 284 | 
             
                end
         | 
| 317 285 | 
             
              end
         | 
| 318 286 |  | 
| @@ -337,51 +305,42 @@ end | |
| 337 305 | 
             
                  Puppet[:environmentpath] = envdir
         | 
| 338 306 | 
             
                end
         | 
| 339 307 |  | 
| 340 | 
            -
                 | 
| 341 | 
            -
                   | 
| 342 | 
            -
                  puppet = Puppet::Application.find(:apply).new(double('command_line', :subcommand_name => :apply, :args => args))
         | 
| 343 | 
            -
                  puppet.options[:code] = execute
         | 
| 344 | 
            -
                  return puppet
         | 
| 345 | 
            -
                end
         | 
| 308 | 
            +
                context "given a modulepath" do
         | 
| 309 | 
            +
                  let(:args) { ['-e', execute] }
         | 
| 346 310 |  | 
| 347 | 
            -
             | 
| 348 | 
            -
             | 
| 311 | 
            +
                  before :each do
         | 
| 312 | 
            +
                    Puppet[:modulepath] = modulepath
         | 
| 349 313 |  | 
| 350 | 
            -
             | 
| 351 | 
            -
             | 
| 314 | 
            +
                    apply.command_line.args = args
         | 
| 315 | 
            +
                  end
         | 
| 352 316 |  | 
| 353 | 
            -
             | 
| 354 | 
            -
             | 
| 355 | 
            -
             | 
| 317 | 
            +
                  it "looks in modulepath even when the default directory environment exists" do
         | 
| 318 | 
            +
                    expect {
         | 
| 319 | 
            +
                      apply.run
         | 
| 320 | 
            +
                    }.to exit_with(0)
         | 
| 321 | 
            +
                     .and output(/amod class included/).to_stdout
         | 
| 356 322 | 
             
                  end
         | 
| 357 323 |  | 
| 358 | 
            -
                  it "looks in  | 
| 359 | 
            -
                    args << '--environment' << 'production'
         | 
| 360 | 
            -
                    apply = init_cli_args_and_apply_app(args, execute)
         | 
| 324 | 
            +
                  it "looks in modulepath even when given a specific directory --environment" do
         | 
| 325 | 
            +
                    apply.command_line.args = args << '--environment' << 'production'
         | 
| 361 326 |  | 
| 362 | 
            -
                    expect  | 
| 363 | 
            -
                       | 
| 364 | 
            -
                     | 
| 327 | 
            +
                    expect {
         | 
| 328 | 
            +
                      apply.run
         | 
| 329 | 
            +
                    }.to exit_with(0)
         | 
| 330 | 
            +
                     .and output(/amod class included/).to_stdout
         | 
| 365 331 | 
             
                  end
         | 
| 366 332 |  | 
| 367 | 
            -
                  it "looks in  | 
| 368 | 
            -
                     | 
| 369 | 
            -
                    apply = init_cli_args_and_apply_app(args, execute)
         | 
| 333 | 
            +
                  it "looks in modulepath when given multiple paths in modulepath" do
         | 
| 334 | 
            +
                    Puppet[:modulepath] = [tmpdir('notmodulepath'), modulepath].join(File::PATH_SEPARATOR)
         | 
| 370 335 |  | 
| 371 | 
            -
                    expect  | 
| 372 | 
            -
                       | 
| 373 | 
            -
                     | 
| 336 | 
            +
                    expect {
         | 
| 337 | 
            +
                      apply.run
         | 
| 338 | 
            +
                    }.to exit_with(0)
         | 
| 339 | 
            +
                     .and output(/amod class included/).to_stdout
         | 
| 374 340 | 
             
                  end
         | 
| 375 341 | 
             
                end
         | 
| 376 342 |  | 
| 377 | 
            -
                # When executing an ENC script, output cannot be captured using
         | 
| 378 | 
            -
                # expect { }.to have_printed(...)
         | 
| 379 | 
            -
                # External node script execution will fail, likely due to the tampering
         | 
| 380 | 
            -
                # with the basic file descriptors.
         | 
| 381 | 
            -
                # Workaround: Define a log destination and merely inspect logs.
         | 
| 382 343 | 
             
                context "with an ENC" do
         | 
| 383 | 
            -
                  let(:logdest) { tmpfile('logdest') }
         | 
| 384 | 
            -
                  let(:args) { ['-e', execute, '--logdest', logdest ] }
         | 
| 385 344 | 
             
                  let(:enc) do
         | 
| 386 345 | 
             
                    script_containing('enc_script',
         | 
| 387 346 | 
             
                      :windows => '@echo environment: spec',
         | 
| @@ -394,17 +353,23 @@ end | |
| 394 353 | 
             
                  end
         | 
| 395 354 |  | 
| 396 355 | 
             
                  it "should use the environment that the ENC mandates" do
         | 
| 397 | 
            -
                    apply =  | 
| 398 | 
            -
             | 
| 399 | 
            -
                    expect | 
| 356 | 
            +
                    apply.command_line.args = ['-e', execute]
         | 
| 357 | 
            +
             | 
| 358 | 
            +
                    expect {
         | 
| 359 | 
            +
                      apply.run
         | 
| 360 | 
            +
                   }.to exit_with(0)
         | 
| 361 | 
            +
                    .and output(a_string_matching(/amod class included/)
         | 
| 362 | 
            +
                    .and matching(/Compiled catalog for .* in environment spec/)).to_stdout
         | 
| 400 363 | 
             
                  end
         | 
| 401 364 |  | 
| 402 365 | 
             
                  it "should prefer the ENC environment over the configured one and emit a warning" do
         | 
| 403 | 
            -
                    apply =  | 
| 404 | 
            -
             | 
| 405 | 
            -
                     | 
| 406 | 
            -
             | 
| 407 | 
            -
                     | 
| 366 | 
            +
                    apply.command_line.args = ['-e', execute, '--environment', 'production']
         | 
| 367 | 
            +
             | 
| 368 | 
            +
                    expect {
         | 
| 369 | 
            +
                      apply.run
         | 
| 370 | 
            +
                    }.to exit_with(0)
         | 
| 371 | 
            +
                     .and output(a_string_matching('amod class included')
         | 
| 372 | 
            +
                     .and matching(/doesn't match server specified environment/)).to_stdout
         | 
| 408 373 | 
             
                  end
         | 
| 409 374 | 
             
                end
         | 
| 410 375 | 
             
              end
         | 
| @@ -475,8 +440,7 @@ class amod::bad_type { | |
| 475 440 | 
             
                context 'and the file is not serialized with rich_data' do
         | 
| 476 441 | 
             
                  it 'will notify a string that is the result of Regexp#inspect (from Runtime3xConverter)' do
         | 
| 477 442 | 
             
                    catalog = compile_to_catalog(execute, node)
         | 
| 478 | 
            -
                    apply =  | 
| 479 | 
            -
                    apply.options[:catalog] = file_containing('manifest', catalog.to_json)
         | 
| 443 | 
            +
                    apply.command_line.args = ['--catalog', file_containing('manifest', catalog.to_json)]
         | 
| 480 444 | 
             
                    expect(apply).to receive(:apply_catalog) do |cat|
         | 
| 481 445 | 
             
                      expect(cat.resource(:notify, 'rx')['message']).to be_a(String)
         | 
| 482 446 | 
             
                      expect(cat.resource(:notify, 'bin')['message']).to be_a(String)
         | 
| @@ -491,8 +455,7 @@ class amod::bad_type { | |
| 491 455 |  | 
| 492 456 | 
             
                  it 'will notify a string that is the result of to_s on uknown data types' do
         | 
| 493 457 | 
             
                    json = compile_to_catalog('include amod::bad_type', node).to_json
         | 
| 494 | 
            -
                    apply =  | 
| 495 | 
            -
                    apply.options[:catalog] = file_containing('manifest', json)
         | 
| 458 | 
            +
                    apply.command_line.args = ['--catalog', file_containing('manifest', json)]
         | 
| 496 459 | 
             
                    expect(apply).to receive(:apply_catalog) do |catalog|
         | 
| 497 460 | 
             
                      expect(catalog.resource(:notify, 'bogus')['message']).to be_a(String)
         | 
| 498 461 | 
             
                    end
         | 
| @@ -514,11 +477,10 @@ class amod::bad_type { | |
| 514 477 | 
             
                context 'and the file is serialized with rich_data' do
         | 
| 515 478 | 
             
                  it 'will notify a regexp using Regexp#to_s' do
         | 
| 516 479 | 
             
                    catalog = compile_to_catalog(execute, node)
         | 
| 517 | 
            -
                    apply = Puppet::Application[:apply]
         | 
| 518 480 | 
             
                    serialized_catalog = Puppet.override(rich_data: true) do
         | 
| 519 481 | 
             
                      catalog.to_json
         | 
| 520 482 | 
             
                    end
         | 
| 521 | 
            -
                    apply. | 
| 483 | 
            +
                    apply.command_line.args = ['--catalog', file_containing('manifest', serialized_catalog)]
         | 
| 522 484 | 
             
                    expect(apply).to receive(:apply_catalog) do |cat|
         | 
| 523 485 | 
             
                      expect(cat.resource(:notify, 'rx')['message']).to be_a(Regexp)
         | 
| 524 486 | 
             
                      # The resource return in this expect is a String, but since it was a Binary type that
         | 
| @@ -541,7 +503,6 @@ class amod::bad_type { | |
| 541 503 | 
             
                let(:env_dir) { File.join(Puppet[:environmentpath], env_name) }
         | 
| 542 504 | 
             
                let(:env) { Puppet::Node::Environment.create(env_name.to_sym, [File.join(env_dir, 'modules')]) }
         | 
| 543 505 | 
             
                let(:node) { Puppet::Node.new(Puppet[:certname], environment: environment) }
         | 
| 544 | 
            -
                let(:apply) { Puppet::Application[:apply] }
         | 
| 545 506 |  | 
| 546 507 | 
             
                before :each do
         | 
| 547 508 | 
             
                  Puppet[:environment] = env_name
         | 
| @@ -564,7 +525,7 @@ class amod::bad_type { | |
| 564 525 |  | 
| 565 526 | 
             
                  expect {
         | 
| 566 527 | 
             
                    apply.command_line.args << manifest
         | 
| 567 | 
            -
             | 
| 528 | 
            +
                    apply.run
         | 
| 568 529 | 
             
                  }.to exit_with(0)
         | 
| 569 530 | 
             
                   .and output(a_string_matching(
         | 
| 570 531 | 
             
                     /dir1\]\/ensure: created/
         | 
| @@ -579,6 +540,46 @@ class amod::bad_type { | |
| 579 540 | 
             
                end
         | 
| 580 541 | 
             
              end
         | 
| 581 542 |  | 
| 543 | 
            +
              context 'http file sources' do
         | 
| 544 | 
            +
                include_context 'https client'
         | 
| 545 | 
            +
             | 
| 546 | 
            +
                it "requires the caller to URL encode special characters in the request path and query" do
         | 
| 547 | 
            +
                  Puppet[:server] = '127.0.0.1'
         | 
| 548 | 
            +
                  request = nil
         | 
| 549 | 
            +
             | 
| 550 | 
            +
                  response_proc = -> (req, res) {
         | 
| 551 | 
            +
                    request = req
         | 
| 552 | 
            +
             | 
| 553 | 
            +
                    res['Content-Type'] = 'text/plain'
         | 
| 554 | 
            +
                    res.body = "from the server"
         | 
| 555 | 
            +
                  }
         | 
| 556 | 
            +
             | 
| 557 | 
            +
                  https = PuppetSpec::HTTPSServer.new
         | 
| 558 | 
            +
                  https.start_server(response_proc: response_proc) do |https_port|
         | 
| 559 | 
            +
                    dest = tmpfile('http_file_source')
         | 
| 560 | 
            +
             | 
| 561 | 
            +
                    # spaces in path are encoded as %20 and '[' in query is encoded as %5B,
         | 
| 562 | 
            +
                    # but ':', '=', '-' are not encoded
         | 
| 563 | 
            +
                    manifest = file_containing("manifest.pp", <<~MANIFEST)
         | 
| 564 | 
            +
                      file { "#{dest}":
         | 
| 565 | 
            +
                        ensure  => file,
         | 
| 566 | 
            +
                        source  => "https://#{Puppet[:server]}:#{https_port}/path%20to%20file?x=b%5Bc&sv=2019-02-02&st=2020-07-28T20:18:53Z&se=2020-07-28T21:03:00Z&sr=b&sp=r&sig=JaZhcqxT4akJcOwUdUGrQB2m1geUoh89iL8WMag8a8c=",
         | 
| 567 | 
            +
                      }
         | 
| 568 | 
            +
                    MANIFEST
         | 
| 569 | 
            +
             | 
| 570 | 
            +
                    expect {
         | 
| 571 | 
            +
                      apply.command_line.args << manifest
         | 
| 572 | 
            +
                      apply.run
         | 
| 573 | 
            +
                    }.to exit_with(0)
         | 
| 574 | 
            +
                     .and output(%r{Main/File\[#{dest}\]/ensure: defined content as}).to_stdout
         | 
| 575 | 
            +
             | 
| 576 | 
            +
                    expect(request.path).to eq('/path to file')
         | 
| 577 | 
            +
                    expect(request.query).to include('x' => 'b[c')
         | 
| 578 | 
            +
                    expect(request.query).to include('sig' => 'JaZhcqxT4akJcOwUdUGrQB2m1geUoh89iL8WMag8a8c=')
         | 
| 579 | 
            +
                  end
         | 
| 580 | 
            +
                end
         | 
| 581 | 
            +
              end
         | 
| 582 | 
            +
             | 
| 582 583 | 
             
              context 'http report processor' do
         | 
| 583 584 | 
             
                include_context 'https client'
         | 
| 584 585 |  | 
| @@ -586,7 +587,6 @@ class amod::bad_type { | |
| 586 587 | 
             
                  Puppet[:reports] = 'http'
         | 
| 587 588 | 
             
                end
         | 
| 588 589 |  | 
| 589 | 
            -
                let(:apply) { Puppet::Application[:apply] }
         | 
| 590 590 | 
             
                let(:unknown_server) do
         | 
| 591 591 | 
             
                  unknown_ca_cert = cert_fixture('unknown-ca.pem')
         | 
| 592 592 | 
             
                  PuppetSpec::HTTPSServer.new(
         |