spec/unit/knife/node_edit_spec.rb in knife-18.0.185 vs spec/unit/knife/node_edit_spec.rb in knife-18.1.0
- old
+ new
@@ -1,116 +1,116 @@
-#
-# Author:: Adam Jacob (<adam@chef.io>)
-# Copyright:: Copyright (c) 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 "knife_spec_helper"
-Chef::Knife::NodeEdit.load_deps
-
-describe Chef::Knife::NodeEdit do
-
- # helper to convert the view from Chef objects into Ruby objects representing JSON
- def deserialized_json_view
- Chef::JSONCompat.from_json(Chef::JSONCompat.to_json_pretty(@knife.node_editor.send(:view)))
- end
-
- before(:each) do
- Chef::Config[:node_name] = "webmonkey.example.com"
- @knife = Chef::Knife::NodeEdit.new
- @knife.config = {
- editor: "cat",
- attribute: nil,
- print_after: nil,
- }
- @knife.name_args = [ "adam" ]
- @node = Chef::Node.new
- end
-
- it "should load the node" do
- expect(Chef::Node).to receive(:load).with("adam").and_return(@node)
- @knife.node
- end
-
- describe "after loading the node" do
- before do
- @knife.config[:all_attributes] = false
-
- allow(@knife).to receive(:node).and_return(@node)
- @node.automatic_attrs = { go: :away }
- @node.default_attrs = { hide: :me }
- @node.override_attrs = { dont: :show }
- @node.normal_attrs = { do_show: :these }
- @node.chef_environment("prod")
- @node.run_list("recipe[foo]")
- end
-
- it "creates a view of the node without attributes from roles or ohai" do
- actual = deserialized_json_view
- expect(actual).not_to have_key("automatic")
- expect(actual).not_to have_key("override")
- expect(actual).not_to have_key("default")
- expect(actual["normal"]).to eq({ "do_show" => "these" })
- expect(actual["run_list"]).to eq(["recipe[foo]"])
- expect(actual["chef_environment"]).to eq("prod")
- end
-
- it "shows the extra attributes when given the --all option" do
- @knife.config[:all_attributes] = true
-
- actual = deserialized_json_view
- expect(actual["automatic"]).to eq({ "go" => "away" })
- expect(actual["override"]).to eq({ "dont" => "show" })
- expect(actual["default"]).to eq({ "hide" => "me" })
- expect(actual["normal"]).to eq({ "do_show" => "these" })
- expect(actual["run_list"]).to eq(["recipe[foo]"])
- expect(actual["chef_environment"]).to eq("prod")
- end
-
- it "does not consider unedited data updated" do
- view = deserialized_json_view
- @knife.node_editor.send(:apply_updates, view)
- expect(@knife.node_editor).not_to be_updated
- end
-
- it "considers edited data updated" do
- view = deserialized_json_view
- view["run_list"] << "role[fuuu]"
- @knife.node_editor.send(:apply_updates, view)
- expect(@knife.node_editor).to be_updated
- end
-
- end
-
- describe "edit_node" do
-
- before do
- allow(@knife).to receive(:node).and_return(@node)
- end
-
- let(:subject) { @knife.node_editor.edit_node }
-
- it "raises an exception when editing is disabled" do
- @knife.config[:disable_editing] = true
- expect { subject }.to raise_error(SystemExit)
- end
-
- it "raises an exception when the editor is not set" do
- @knife.config[:editor] = nil
- expect { subject }.to raise_error(SystemExit)
- end
-
- end
-
-end
+#
+# Author:: Adam Jacob (<adam@chef.io>)
+# Copyright:: Copyright (c) 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 "knife_spec_helper"
+Chef::Knife::NodeEdit.load_deps
+
+describe Chef::Knife::NodeEdit do
+
+ # helper to convert the view from Chef objects into Ruby objects representing JSON
+ def deserialized_json_view
+ Chef::JSONCompat.from_json(Chef::JSONCompat.to_json_pretty(@knife.node_editor.send(:view)))
+ end
+
+ before(:each) do
+ Chef::Config[:node_name] = "webmonkey.example.com"
+ @knife = Chef::Knife::NodeEdit.new
+ @knife.config = {
+ editor: "cat",
+ attribute: nil,
+ print_after: nil,
+ }
+ @knife.name_args = [ "adam" ]
+ @node = Chef::Node.new
+ end
+
+ it "should load the node" do
+ expect(Chef::Node).to receive(:load).with("adam").and_return(@node)
+ @knife.node
+ end
+
+ describe "after loading the node" do
+ before do
+ @knife.config[:all_attributes] = false
+
+ allow(@knife).to receive(:node).and_return(@node)
+ @node.automatic_attrs = { go: :away }
+ @node.default_attrs = { hide: :me }
+ @node.override_attrs = { dont: :show }
+ @node.normal_attrs = { do_show: :these }
+ @node.chef_environment("prod")
+ @node.run_list("recipe[foo]")
+ end
+
+ it "creates a view of the node without attributes from roles or ohai" do
+ actual = deserialized_json_view
+ expect(actual).not_to have_key("automatic")
+ expect(actual).not_to have_key("override")
+ expect(actual).not_to have_key("default")
+ expect(actual["normal"]).to eq({ "do_show" => "these" })
+ expect(actual["run_list"]).to eq(["recipe[foo]"])
+ expect(actual["chef_environment"]).to eq("prod")
+ end
+
+ it "shows the extra attributes when given the --all option" do
+ @knife.config[:all_attributes] = true
+
+ actual = deserialized_json_view
+ expect(actual["automatic"]).to eq({ "go" => "away" })
+ expect(actual["override"]).to eq({ "dont" => "show" })
+ expect(actual["default"]).to eq({ "hide" => "me" })
+ expect(actual["normal"]).to eq({ "do_show" => "these" })
+ expect(actual["run_list"]).to eq(["recipe[foo]"])
+ expect(actual["chef_environment"]).to eq("prod")
+ end
+
+ it "does not consider unedited data updated" do
+ view = deserialized_json_view
+ @knife.node_editor.send(:apply_updates, view)
+ expect(@knife.node_editor).not_to be_updated
+ end
+
+ it "considers edited data updated" do
+ view = deserialized_json_view
+ view["run_list"] << "role[fuuu]"
+ @knife.node_editor.send(:apply_updates, view)
+ expect(@knife.node_editor).to be_updated
+ end
+
+ end
+
+ describe "edit_node" do
+
+ before do
+ allow(@knife).to receive(:node).and_return(@node)
+ end
+
+ let(:subject) { @knife.node_editor.edit_node }
+
+ it "raises an exception when editing is disabled" do
+ @knife.config[:disable_editing] = true
+ expect { subject }.to raise_error(SystemExit)
+ end
+
+ it "raises an exception when the editor is not set" do
+ @knife.config[:editor] = nil
+ expect { subject }.to raise_error(SystemExit)
+ end
+
+ end
+
+end