# encoding: utf-8 require 'functional/helper' describe 'inputs' do include FunctionalHelper let(:inputs_profiles_path) { File.join(profile_path, 'inputs') } [ 'flat', 'nested', ].each do |input_file| it "runs OK on #{input_file} inputs" do cmd = 'exec ' cmd += File.join(inputs_profiles_path, 'basic') cmd += ' --no-create-lockfile' cmd += ' --attrs ' + File.join(inputs_profiles_path, 'basic', 'files', "#{input_file}.yaml") cmd += ' --controls ' + input_file out = inspec(cmd) out.stderr.must_equal '' out.exit_status.must_equal 0 end end describe 'run profile with yaml inputs' do it "runs using yml inputs" do cmd = 'exec ' cmd += File.join(inputs_profiles_path, 'global') cmd += ' --no-create-lockfile' cmd += ' --attrs ' + File.join(inputs_profiles_path, 'global', 'files', "inputs.yml") out = inspec(cmd) out.stderr.must_equal '' # TODO: fix attribute inheritance override test # we have one failing case on this - run manually to see # For now, reduce cases to 20; we'll be reworking all this soon anyway # out.stdout.must_include '21 successful' # out.exit_status.must_equal 0 out.stdout.must_include '20 successful' # and one failing end it "does not error when inputs are empty" do cmd = 'exec ' cmd += File.join(inputs_profiles_path, 'metadata-empty') cmd += ' --no-create-lockfile' out = inspec(cmd) out.stdout.must_include 'WARN: Inputs must be defined as an Array. Skipping current definition.' out.exit_status.must_equal 0 end it "errors with invalid input types" do cmd = 'exec ' cmd += File.join(inputs_profiles_path, 'metadata-invalid') cmd += ' --no-create-lockfile' out = inspec(cmd) out.stderr.must_equal "Type 'Color' is not a valid input type.\n" out.stdout.must_equal '' out.exit_status.must_equal 1 end it "errors with required input not defined" do cmd = 'exec ' cmd += File.join(inputs_profiles_path, 'required') cmd += ' --no-create-lockfile' out = inspec(cmd) out.stderr.must_equal "Input 'username' is required and does not have a value.\n" out.stdout.must_equal '' out.exit_status.must_equal 1 end # TODO - add test for backwards compatibility using 'attribute' in DSL end end