spec/unit/command/push_archive_spec.rb in chef-dk-0.14.25 vs spec/unit/command/push_archive_spec.rb in chef-dk-0.15.9
- old
+ new
@@ -1,153 +1,153 @@
-#
-# Copyright:: Copyright (c) 2015 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 'spec_helper'
-require 'shared/command_with_ui_object'
-require 'chef-dk/command/push_archive'
-
-describe ChefDK::Command::PushArchive do
-
- subject(:command) { described_class.new }
-
- let(:policy_group) { "staging" }
-
- let(:archive_path) { "mypolicy-abc123.tgz" }
-
- it_behaves_like "a command with a UI object"
-
- let(:ui) { TestHelpers::TestUI.new }
-
- let(:chef_config_loader) { instance_double("Chef::WorkstationConfigLoader") }
-
- let(:config_arg) { nil }
-
- before do
- allow(Chef::WorkstationConfigLoader).to receive(:new).with(config_arg).and_return(chef_config_loader)
- end
-
- describe "evaluating params" do
-
- before do
- command.ui = ui
- end
-
- context "when given no arguments" do
-
- it "prints the banner message and exits non-zero" do
- expect(command.run([])).to eq(1)
- expect(ui.output).to include(described_class.banner)
- end
-
- end
-
- context "when the archive path is omitted" do
-
- it "prints the banner message and exits non-zero" do
- expect(command.run([policy_group])).to eq(1)
- expect(ui.output).to include(described_class.banner)
- end
-
- end
-
- context "when all required arguments are given" do
-
- let(:params) { [ policy_group, archive_path ] }
-
- before do
- command.apply_params!(params)
- end
-
- it "disables debug by default" do
- expect(command.debug?).to be(false)
- end
-
- context "and debug mode is set" do
-
- let(:params) { [ policy_group, archive_path, "-D" ] }
-
- it "enables debug messages" do
- expect(command.debug?).to be(true)
- end
-
- end
-
- describe "configuring settings that depend on the chef config file" do
-
- before do
- expect(chef_config_loader).to receive(:load)
- end
-
- it "sets the policy group" do
- expect(command.policy_group).to eq(policy_group)
- expect(command.push_archive_service.policy_group).to eq(policy_group)
- end
-
- it "sets the path to the archive file" do
- expect(command.archive_path).to eq(archive_path)
- expect(command.push_archive_service.archive_file).to eq(File.expand_path(archive_path))
- end
- end
-
- end
-
- end
-
- describe "running the push operation" do
-
- let(:push_archive_service) { instance_double("ChefDK::PolicyfileServices::PushArchive") }
-
- let(:params) { [ policy_group, archive_path ] }
-
- before do
- allow(command).to receive(:push_archive_service).and_return(push_archive_service)
- command.ui = ui
- end
-
- context "when the push is successful" do
-
- it "exits 0" do
- expect(push_archive_service).to receive(:run)
- expect(command.run(params)).to eq(0)
- end
-
- end
-
- context "when the push in not successful" do
-
- let(:backtrace) { caller[0...3] }
-
- let(:cause) do
- e = StandardError.new("some operation failed")
- e.set_backtrace(backtrace)
- e
- end
-
- let(:exception) do
- ChefDK::PolicyfilePushArchiveError.new("push failed", cause)
- end
-
- before do
- expect(push_archive_service).to receive(:run).and_raise(exception)
- end
-
- it "exits non-zero" do
- expect(command.run(params)).to eq(1)
- end
-
- end
- end
-end
+#
+# Copyright:: Copyright (c) 2015 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 'spec_helper'
+require 'shared/command_with_ui_object'
+require 'chef-dk/command/push_archive'
+
+describe ChefDK::Command::PushArchive do
+
+ subject(:command) { described_class.new }
+
+ let(:policy_group) { "staging" }
+
+ let(:archive_path) { "mypolicy-abc123.tgz" }
+
+ it_behaves_like "a command with a UI object"
+
+ let(:ui) { TestHelpers::TestUI.new }
+
+ let(:chef_config_loader) { instance_double("Chef::WorkstationConfigLoader") }
+
+ let(:config_arg) { nil }
+
+ before do
+ allow(Chef::WorkstationConfigLoader).to receive(:new).with(config_arg).and_return(chef_config_loader)
+ end
+
+ describe "evaluating params" do
+
+ before do
+ command.ui = ui
+ end
+
+ context "when given no arguments" do
+
+ it "prints the banner message and exits non-zero" do
+ expect(command.run([])).to eq(1)
+ expect(ui.output).to include(described_class.banner)
+ end
+
+ end
+
+ context "when the archive path is omitted" do
+
+ it "prints the banner message and exits non-zero" do
+ expect(command.run([policy_group])).to eq(1)
+ expect(ui.output).to include(described_class.banner)
+ end
+
+ end
+
+ context "when all required arguments are given" do
+
+ let(:params) { [ policy_group, archive_path ] }
+
+ before do
+ command.apply_params!(params)
+ end
+
+ it "disables debug by default" do
+ expect(command.debug?).to be(false)
+ end
+
+ context "and debug mode is set" do
+
+ let(:params) { [ policy_group, archive_path, "-D" ] }
+
+ it "enables debug messages" do
+ expect(command.debug?).to be(true)
+ end
+
+ end
+
+ describe "configuring settings that depend on the chef config file" do
+
+ before do
+ expect(chef_config_loader).to receive(:load)
+ end
+
+ it "sets the policy group" do
+ expect(command.policy_group).to eq(policy_group)
+ expect(command.push_archive_service.policy_group).to eq(policy_group)
+ end
+
+ it "sets the path to the archive file" do
+ expect(command.archive_path).to eq(archive_path)
+ expect(command.push_archive_service.archive_file).to eq(File.expand_path(archive_path))
+ end
+ end
+
+ end
+
+ end
+
+ describe "running the push operation" do
+
+ let(:push_archive_service) { instance_double("ChefDK::PolicyfileServices::PushArchive") }
+
+ let(:params) { [ policy_group, archive_path ] }
+
+ before do
+ allow(command).to receive(:push_archive_service).and_return(push_archive_service)
+ command.ui = ui
+ end
+
+ context "when the push is successful" do
+
+ it "exits 0" do
+ expect(push_archive_service).to receive(:run)
+ expect(command.run(params)).to eq(0)
+ end
+
+ end
+
+ context "when the push in not successful" do
+
+ let(:backtrace) { caller[0...3] }
+
+ let(:cause) do
+ e = StandardError.new("some operation failed")
+ e.set_backtrace(backtrace)
+ e
+ end
+
+ let(:exception) do
+ ChefDK::PolicyfilePushArchiveError.new("push failed", cause)
+ end
+
+ before do
+ expect(push_archive_service).to receive(:run).and_raise(exception)
+ end
+
+ it "exits non-zero" do
+ expect(command.run(params)).to eq(1)
+ end
+
+ end
+ end
+end