summaryrefslogtreecommitdiff
path: root/spec/unit/knife/bootstrap_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/unit/knife/bootstrap_spec.rb')
-rw-r--r--spec/unit/knife/bootstrap_spec.rb33
1 files changed, 28 insertions, 5 deletions
diff --git a/spec/unit/knife/bootstrap_spec.rb b/spec/unit/knife/bootstrap_spec.rb
index b8141d496f..f24dec6fa7 100644
--- a/spec/unit/knife/bootstrap_spec.rb
+++ b/spec/unit/knife/bootstrap_spec.rb
@@ -40,7 +40,6 @@ describe Chef::Knife::Bootstrap do
let(:knife) do
Chef::Log.logger = Logger.new(StringIO.new)
Chef::Config[:knife][:bootstrap_template] = bootstrap_template unless bootstrap_template.nil?
- expect(LicenseAcceptance::Acceptor).to receive(:check_and_persist!)
k = Chef::Knife::Bootstrap.new(bootstrap_cli_options)
allow(k.ui).to receive(:stderr).and_return(stderr)
@@ -50,9 +49,31 @@ describe Chef::Knife::Bootstrap do
k
end
- it "fails when LicenseAcceptance fails" do
- expect(LicenseAcceptance::Acceptor).to receive(:check_and_persist!).and_raise("foo")
- expect { k = Chef::Knife::Bootstrap.new(bootstrap_cli_options) }.to raise_error("foo")
+ context "#check_license" do
+ let(:acceptor) { instance_double(LicenseAcceptance::Acceptor) }
+
+ before do
+ expect(LicenseAcceptance::Acceptor).to receive(:new).and_return(acceptor)
+ end
+
+ describe "when a license is not required" do
+ it "does not set the chef_license" do
+ expect(acceptor).to receive(:license_required?).and_return(false)
+ knife.check_license
+ expect(Chef::Config[:chef_license]).to eq(nil)
+ end
+ end
+
+ describe "when a license is required" do
+ it "sets the chef_license" do
+ expect(acceptor).to receive(:license_required?).and_return(true)
+ expect(acceptor).to receive(:id_from_mixlib).and_return("id")
+ expect(acceptor).to receive(:check_and_persist)
+ expect(acceptor).to receive(:acceptance_value).and_return("accept-no-persist")
+ knife.check_license
+ expect(Chef::Config[:chef_license]).to eq("accept-no-persist")
+ end
+ end
end
context "#bootstrap_template" do
@@ -303,6 +324,7 @@ describe Chef::Knife::Bootstrap do
knife.parse_options(["--json-attribute-file", jsonfile.path])
knife.merge_configs
allow(knife).to receive(:validate_name_args!)
+ expect(knife).to receive(:check_license)
expect { knife.run }.to raise_error(Chef::Exceptions::BootstrapCommandInputError)
jsonfile.close
@@ -329,7 +351,6 @@ describe Chef::Knife::Bootstrap do
describe "specifying no_proxy with various entries" do
subject(:knife) do
- expect(LicenseAcceptance::Acceptor).to receive(:check_and_persist!)
k = described_class.new
Chef::Config[:knife][:bootstrap_template] = template_file
allow(k).to receive(:connection).and_return connection
@@ -1582,6 +1603,7 @@ describe Chef::Knife::Bootstrap do
end
it "performs the steps we expect to run a bootstrap" do
+ expect(knife).to receive(:check_license)
expect(knife).to receive(:verify_deprecated_flags!).ordered
expect(knife).to receive(:validate_name_args!).ordered
expect(knife).to receive(:validate_protocol!).ordered
@@ -1803,6 +1825,7 @@ describe Chef::Knife::Bootstrap do
it "verifies that a server to bootstrap was given as a command line arg" do
knife.name_args = nil
+ expect(knife).to receive(:check_license)
expect { knife.run }.to raise_error(SystemExit)
expect(stderr.string).to match(/ERROR:.+FQDN or ip/)
end