inspec/test/functional/inspec_exec_automate_test.rb
Clinton Wolfe a616205dfc Add failing tests for moving the passthru logic to json-automate
Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>
2019-03-28 01:07:41 -04:00

101 lines
2.4 KiB
Ruby

# encoding: utf-8
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
cmd = 'exec '
cmd += example_profile + ' '
cmd += '--config ' + config_path
end
let(:run_result) { run_inspec_process(invocation) }
describe 'when the the URL is fake' do
let(:config_data) do
data = <<~EOF
{
"reporter": {
"automate" : {
"stdout" : false,
"url" : "https://fake_url_a2.com/data-collector/v0/",
"token" : "faketoken123",
"insecure" : true,
"node_uuid" : "test123"
}
}
}
EOF
end
it 'should fail' do
run_result.stderr.must_equal "Error generating reporter 'automate'\n"
run_result.exit_status.must_equal 1
run_result.stdout.must_include "ERROR: send_report: POST to /data-collector/v0/"
end
end
describe 'when outputting to STDOUT' do
let(:config_data) do
data = <<~EOF
{
"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"
}
}
}
}
EOF
end
it 'should include tramp data' do
run_result.stderr.must_equal ''
run_result.exit_status.wont_equal 1
# 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:
[
'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 ['projects', 'another_tramp_datum']
json['passthrough']['projects'].must_equal ['alpha', 'beta']
end
end
end