inspec/test/functional/inspec_exec_automate_test.rb
Ryan Davis 18ce4850f0 Initial pass to clean up functional testing wrt exit codes and output.
This should get windows tests running again? Hopefully? They're
running SO slowly on my vagrant box that I'm just pushing for now.
They're clean on the mac side.

Signed-off-by: Ryan Davis <zenspider@chef.io>
2019-07-24 18:06:25 -07:00

97 lines
2.4 KiB
Ruby

require "functional/helper"
require "tempfile"
describe "inspec exec automate" do
include FunctionalHelper
let(:config_path) do
file = Tempfile.new("config.json")
file.write(config_data)
file.close
file.path
end
let(:invocation) do
"exec #{example_profile} --config #{config_path}"
end
let(:run_result) { run_inspec_process(invocation) }
describe "when the the URL is fake" do
let(:config_data) do
<<~END
{
"reporter": {
"automate": {
"stdout": false,
"url": "https://fake_url_a2.com/data-collector/v0/",
"token": "faketoken123",
"insecure": true,
"node_uuid": "test123"
}
}
}
END
end
it "should fail" do
run_result.stderr.must_equal "Error generating reporter 'automate'\n"
run_result.stdout.must_include "ERROR: send_report: POST to /data-collector/v0/"
assert_exit_code 1, run_result
end
end
describe "when outputting to $stdout" do
let(:config_data) do
<<~END
{
"reporter": {
"json-automate": {
"stdout": true,
"job_uuid": "test123",
"roles": ["stuff"],
"environment": "prod",
"node_name": "some_node",
"passthrough": {
"projects": ["alpha", "beta"],
"another_tramp_datum": "another_value"
}
}
}
}
END
end
it "should include tramp data" do
run_result.stderr.must_equal ""
# Can't use json-mode on run_inspec_process - it sets
# the reporter to be 'json', we need 'json-automate'
json = JSON.parse(run_result.stdout)
# As of InSpec v3.7.11, these are all top-level tramp data:
%w{
node_name
job_uuid
environment
roles
}.each do |field|
json.keys.must_include field
end
# As of InSpec v3.7.11+, these should be removed:
[
"recipies", # sic
].each do |field|
json.keys.wont_include field
end
# Added in InSpec v3.7.11+
json.keys.must_include "passthrough"
json["passthrough"].keys.sort.must_equal %w{another_tramp_datum projects}
json["passthrough"]["projects"].must_equal %w{alpha beta}
assert_exit_code 101, run_result
end
end
end