Sha256: 5157c72c4d65c8c1c089e5733095c1770c7ec53f2e5a344cb24194f7354f6def

Contents?: true

Size: 1.74 KB

Versions: 24

Compression:

Stored size: 1.74 KB

Contents

require 'spec_helper'

require 'puppet/indirector/report/rest'

describe Puppet::Transaction::Report::Rest do
  let(:certname) { 'ziggy' }
  let(:uri) { %r{/puppet/v3/report/ziggy} }
  let(:formatter) { Puppet::Network::FormatHandler.format(:json) }
  let(:report) do
    report = Puppet::Transaction::Report.new
    report.host = certname
    report
  end

  before(:each) do
    described_class.indirection.terminus_class = :rest
  end

  def report_response
    { body: formatter.render(["store", "http"]), headers: {'Content-Type' => formatter.mime } }
  end

  it "saves a report " do
    stub_request(:put, uri)
      .to_return(status: 200, **report_response)

    described_class.indirection.save(report)
  end

  it "serializes the environment" do
    stub_request(:put, uri)
      .with(query: hash_including('environment' => 'outerspace'))
      .to_return(**report_response)

    described_class.indirection.save(report, nil, environment: Puppet::Node::Environment.remote('outerspace'))
  end

  it "deserializes the response as an array of report processor names" do
    stub_request(:put, %r{/puppet/v3/report})
      .to_return(status: 200, **report_response)

    expect(described_class.indirection.save(report)).to eq(["store", "http"])
  end

  it "returns nil if the node does not exist" do
    stub_request(:put, uri)
      .to_return(status: 404, headers: { 'Content-Type' => 'application/json' }, body: "{}")

    expect(described_class.indirection.save(report)).to be_nil
  end

  it "parses charset from response content-type" do
    stub_request(:put, uri)
      .to_return(status: 200, body: JSON.dump(["store"]), headers: { 'Content-Type' => 'application/json;charset=utf-8' })

    expect(described_class.indirection.save(report)).to eq(["store"])
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
puppet-8.3.0 spec/unit/indirector/report/rest_spec.rb
puppet-8.3.0-x86-mingw32 spec/unit/indirector/report/rest_spec.rb
puppet-8.3.0-x64-mingw32 spec/unit/indirector/report/rest_spec.rb
puppet-8.3.0-universal-darwin spec/unit/indirector/report/rest_spec.rb
puppet-8.4.0 spec/unit/indirector/report/rest_spec.rb
puppet-8.4.0-x86-mingw32 spec/unit/indirector/report/rest_spec.rb
puppet-8.4.0-x64-mingw32 spec/unit/indirector/report/rest_spec.rb
puppet-8.4.0-universal-darwin spec/unit/indirector/report/rest_spec.rb
puppet-8.3.1 spec/unit/indirector/report/rest_spec.rb
puppet-8.3.1-x86-mingw32 spec/unit/indirector/report/rest_spec.rb
puppet-8.3.1-x64-mingw32 spec/unit/indirector/report/rest_spec.rb
puppet-8.3.1-universal-darwin spec/unit/indirector/report/rest_spec.rb
puppet-8.2.0 spec/unit/indirector/report/rest_spec.rb
puppet-8.2.0-x86-mingw32 spec/unit/indirector/report/rest_spec.rb
puppet-8.2.0-x64-mingw32 spec/unit/indirector/report/rest_spec.rb
puppet-8.2.0-universal-darwin spec/unit/indirector/report/rest_spec.rb
puppet-8.1.0 spec/unit/indirector/report/rest_spec.rb
puppet-8.1.0-x86-mingw32 spec/unit/indirector/report/rest_spec.rb
puppet-8.1.0-x64-mingw32 spec/unit/indirector/report/rest_spec.rb
puppet-8.1.0-universal-darwin spec/unit/indirector/report/rest_spec.rb