inspec/test/functional/inspec_exec_automate_test.rb
Ryan Davis 865e0d43c0 Fixed a race condition in the tests on windows.
Second test would always fail, resumably because the GC kicks in and
the tempfile gets obliterated before the subprocess can read it.

Don't do tempfiles via let. Do them via ivars so they can persist.
2019-11-12 14:51:56 -08:00

101 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
after do
@file.unlink
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