# # Author:: Claire McQuin # Copyright:: Copyright (c) 2015-2016 Chef Software, Inc. # License:: Apache License, Version 2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # require_relative "../spec_helper" require "ohai/application" RSpec.describe "Ohai::Application" do let(:argv) { [] } let(:app) { Ohai::Application.new } before(:each) do @original_argv = ARGV ARGV.replace(argv) end after(:each) do ARGV.replace(@original_argv) end describe '#configure_ohai' do describe "loading configuration from a file" do let(:config_file) { "/local/workstation/config" } let(:config_loader) { instance_double("ChefConfig::WorkstationConfigLoader") } context "when specified on the command line" do let(:argv) { [ "-c", config_file ] } before(:each) do if windows? expect(ChefConfig::WorkstationConfigLoader).to receive(:new). with("C:#{config_file}", Ohai::Log). and_return(config_loader) else expect(ChefConfig::WorkstationConfigLoader).to receive(:new). with(config_file, Ohai::Log). and_return(config_loader) end end it "loads the configuration file" do expect(config_loader).to receive(:load) app.configure_ohai end context "when the configuration file does not exist" do it "terminates the application" do expect(config_loader).to receive(:load).and_raise(ChefConfig::ConfigurationError) expect(Ohai::Application).to receive(:fatal!) app.configure_ohai end end end context "when a local workstation config exists" do before(:each) do expect(ChefConfig::WorkstationConfigLoader).to receive(:new). with(nil, Ohai::Log). and_return(config_loader) end it "loads the configuration file" do expect(config_loader).to receive(:load) app.configure_ohai end end end context "when CLI options are provided" do let(:argv) { [ "-d", directory ] } let(:directory) { "/some/fantastic/plugins" } it "does not generate deprecated config warnings for cli options" do expect(Ohai::Log).to_not receive(:warn). with(/Ohai::Config\[:directory\] is deprecated/) app.configure_ohai end end end end