diff options
author | Vivek Singh <vivek.singh@msystechnologies.com> | 2020-08-26 05:08:15 +0530 |
---|---|---|
committer | Vivek Singh <vivek.singh@msystechnologies.com> | 2020-08-26 05:08:15 +0530 |
commit | c1df0337ea568d578fef198e4ee94ef503494323 (patch) | |
tree | 940012e88aaf410ae9a77e7cf26be9915763e181 | |
parent | 68cf3453975dccaad52ec76a17f35c6f6d824b5b (diff) | |
download | chef-c1df0337ea568d578fef198e4ee94ef503494323.tar.gz |
more config specs cleanup
Signed-off-by: Vivek Singh <vivek.singh@msystechnologies.com>
-rw-r--r-- | lib/chef/knife/config_list.rb | 1 | ||||
-rw-r--r-- | spec/integration/knife/config_get_profile_spec.rb | 114 | ||||
-rw-r--r-- | spec/integration/knife/config_get_spec.rb | 192 | ||||
-rw-r--r-- | spec/integration/knife/config_list_spec.rb | 2 | ||||
-rw-r--r-- | spec/integration/knife/config_use_spec.rb | 50 |
5 files changed, 50 insertions, 309 deletions
diff --git a/lib/chef/knife/config_list.rb b/lib/chef/knife/config_list.rb index 0a5d493273..53b3bac57d 100644 --- a/lib/chef/knife/config_list.rb +++ b/lib/chef/knife/config_list.rb @@ -21,7 +21,6 @@ class Chef class Knife class ConfigList < Knife banner "knife config list (options)" - category "deprecated" TABLE_HEADER = [" Profile", "Client", "Key", "Server"].freeze diff --git a/spec/integration/knife/config_get_profile_spec.rb b/spec/integration/knife/config_get_profile_spec.rb deleted file mode 100644 index 0cfa118efb..0000000000 --- a/spec/integration/knife/config_get_profile_spec.rb +++ /dev/null @@ -1,114 +0,0 @@ -# -# Copyright 2018, Noah Kantrowitz -# -# 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 "support/shared/integration/integration_helper" -require "support/shared/context/config" - -describe "knife config get-profile", :workstation do - include IntegrationSupport - include KnifeSupport - - include_context "default config options" - - let(:cmd_args) { [] } - - when_the_repository("has a custom env") do - subject do - cmd = knife("config", "get-profile", *cmd_args, instance_filter: lambda { |instance| - # Fake the failsafe check because this command doesn't actually process knife.rb. - $__KNIFE_INTEGRATION_FAILSAFE_CHECK << " ole" - }) - cmd.stdout - end - - around do |ex| - # Store and reset the value of some env vars. - old_chef_home = ENV["CHEF_HOME"] - old_knife_home = ENV["KNIFE_HOME"] - old_home = ENV["HOME"] - old_wd = Dir.pwd - ChefConfig::PathHelper.per_tool_home_environment = "KNIFE_HOME" - # Clear these out because they are cached permanently. - ChefConfig::PathHelper.class_exec { remove_class_variable(:@@home_dir) } - Chef::Knife::ConfigGetProfile.reset_config_loader! - begin - ex.run - ensure - ENV["CHEF_HOME"] = old_chef_home - ENV["KNIFE_HOME"] = old_knife_home - ENV["HOME"] = old_home - Dir.chdir(old_wd) - ENV[ChefUtils.windows? ? "CD" : "PWD"] = Dir.pwd - ChefConfig::PathHelper.per_tool_home_environment = nil - end - end - - before do - # Always run from the temp folder. This can't be in the `around` block above - # because it has to run after the before set in the "with a chef repo" shared context. - directory("repo") - Dir.chdir(path_to("repo")) - ENV[ChefUtils.windows? ? "CD" : "PWD"] = Dir.pwd - ENV["HOME"] = path_to(".") - end - - context "with no configuration" do - it { is_expected.to eq "default\n" } - end - - context "with --profile" do - let(:cmd_args) { %w{--profile production} } - it { is_expected.to eq "production\n" } - end - - context "with an environment variable" do - around do |ex| - old_chef_profile = ENV["CHEF_PROFILE"] - begin - ENV["CHEF_PROFILE"] = "staging" - ex.run - ensure - ENV["CHEF_PROFILE"] = old_chef_profile - end - end - - it { is_expected.to eq "staging\n" } - end - - context "with a context file" do - before { file(".chef/context", "development\n") } - it { is_expected.to eq "development\n" } - end - - context "with a context file under $CHEF_HOME" do - before do - file("chefhome/.chef/context", "other\n") - ENV["CHEF_HOME"] = path_to("chefhome") - end - - it { is_expected.to eq "other\n" } - end - - context "with a context file under $KNIFE_HOME" do - before do - file("knifehome/.chef/context", "other\n") - ENV["KNIFE_HOME"] = path_to("knifehome") - end - - it { is_expected.to eq "other\n" } - end - end -end diff --git a/spec/integration/knife/config_get_spec.rb b/spec/integration/knife/config_get_spec.rb deleted file mode 100644 index a0a5df1a8d..0000000000 --- a/spec/integration/knife/config_get_spec.rb +++ /dev/null @@ -1,192 +0,0 @@ -# -# Copyright 2018, Noah Kantrowitz -# -# 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 "support/shared/integration/integration_helper" -require "support/shared/context/config" - -describe "knife config get", :workstation do - include IntegrationSupport - include KnifeSupport - - include_context "default config options" - - let(:cmd_args) { [] } - - when_the_repository("has a custom env") do - subject do - cmd = knife("config", "get", *cmd_args, instance_filter: lambda { |instance| - # Clear the stub set up in KnifeSupport. - allow(File).to receive(:file?).and_call_original - # Lies, damn lies, and config files. We need to allow normal config loading - # behavior to be able to test stuff. - instance.config.delete(:config_file) - $__KNIFE_INTEGRATION_FAILSAFE_CHECK << " ole" - }) - cmd.stdout - end - - around do |ex| - # Store and reset the value of some env vars. - old_chef_home = ENV["CHEF_HOME"] - old_knife_home = ENV["KNIFE_HOME"] - old_home = ENV["HOME"] - old_wd = Dir.pwd - ChefConfig::PathHelper.per_tool_home_environment = "KNIFE_HOME" - # Clear these out because they are cached permanently. - ChefConfig::PathHelper.class_exec { remove_class_variable(:@@home_dir) } - Chef::Knife::ConfigGet.reset_config_loader! - begin - ex.run - ensure - ENV["CHEF_HOME"] = old_chef_home - ENV["KNIFE_HOME"] = old_knife_home - ENV["HOME"] = old_home - Dir.chdir(old_wd) - ENV[ChefUtils.windows? ? "CD" : "PWD"] = Dir.pwd - ChefConfig::PathHelper.per_tool_home_environment = nil - end - end - - before do - # Always run from the temp folder. This can't be in the `around` block above - # because it has to run after the before set in the "with a chef repo" shared context. - directory("repo") - Dir.chdir(path_to("repo")) - ENV[ChefUtils.windows? ? "CD" : "PWD"] = Dir.pwd - ENV["HOME"] = path_to(".") - end - - context "with a global knife.rb" do - before { file(".chef/knife.rb", "node_name 'one'\n") } - - it { is_expected.to match(%r{^Loading from configuration file .*/#{File.basename(path_to("."))}/.chef/knife.rb$}) } - it { is_expected.to match(/^node_name:\s+one$/) } - end - - context "with a repo knife.rb" do - before { file("repo/.chef/knife.rb", "node_name 'two'\n") } - - it { is_expected.to match(%r{^Loading from configuration file .*/#{File.basename(path_to("."))}/repo/.chef/knife.rb$}) } - it { is_expected.to match(/^node_name:\s+two$/) } - end - - context "with both knife.rb" do - before do - file(".chef/knife.rb", "node_name 'one'\n") - file("repo/.chef/knife.rb", "node_name 'two'\n") - end - - it { is_expected.to match(%r{^Loading from configuration file .*/#{File.basename(path_to("."))}/repo/.chef/knife.rb$}) } - it { is_expected.to match(/^node_name:\s+two$/) } - end - - context "with a credentials file" do - before { file(".chef/credentials", "[default]\nclient_name = \"three\"\n") } - - it { is_expected.to match(%r{^Loading from credentials file .*/#{File.basename(path_to("."))}/.chef/credentials$}) } - it { is_expected.to match(/^node_name:\s+three$/) } - end - - context "with a credentials file and knife.rb" do - before do - file(".chef/knife.rb", "node_name 'one'\n") - file(".chef/credentials", "[default]\nclient_name = \"three\"\n") - end - - it { is_expected.to match(%r{^Loading from configuration file .*/#{File.basename(path_to("."))}/.chef/knife.rb$}) } - it { is_expected.to match(%r{^Loading from credentials file .*/#{File.basename(path_to("."))}/.chef/credentials$}) } - it { is_expected.to match(/^node_name:\s+one$/) } - end - - context "with a config dot d files" do - before { file(".chef/config.d/abc.rb", "node_name 'one'\n") } - - it { is_expected.to match(%r{^Loading from .d/ configuration file .*/#{File.basename(path_to("."))}/.chef/config.d/abc.rb$}) } - it { is_expected.to match(/^node_name:\s+one$/) } - end - - context "with a credentials file and CHEF_HOME" do - before do - file(".chef/credentials", "[default]\nclient_name = \"three\"\n") - file("foo/.chef/credentials", "[default]\nclient_name = \"four\"\n") - ENV["CHEF_HOME"] = path_to("foo") - end - - it { is_expected.to match(%r{^Loading from credentials file .*/#{File.basename(path_to("."))}/foo/.chef/credentials$}) } - it { is_expected.to match(/^node_name:\s+four$/) } - end - - context "with a credentials file and KNIFE_HOME" do - before do - file(".chef/credentials", "[default]\nclient_name = \"three\"\n") - file("bar/.chef/credentials", "[default]\nclient_name = \"four\"\n") - ENV["KNIFE_HOME"] = path_to("bar") - end - - it { is_expected.to match(%r{^Loading from credentials file .*/#{File.basename(path_to("."))}/bar/.chef/credentials$}) } - it { is_expected.to match(/^node_name:\s+four$/) } - end - - context "with single argument" do - let(:cmd_args) { %w{node_name} } - before { file(".chef/credentials", "[default]\nclient_name = \"three\"\n") } - - it { is_expected.to match(/^node_name:\s+three\Z/) } - end - - context "with two arguments" do - let(:cmd_args) { %w{node_name client_key} } - before { file(".chef/credentials", "[default]\nclient_name = \"three\"\nclient_key = \"three.pem\"") } - - it { is_expected.to match(%r{^client_key:\s+\S*/.chef/three.pem\nnode_name:\s+three\Z}) } - end - - context "with a dotted argument" do - let(:cmd_args) { %w{knife.ssh_user} } - before { file(".chef/credentials", "[default]\nclient_name = \"three\"\n[default.knife]\nssh_user = \"foo\"\n") } - - it { is_expected.to match(/^knife.ssh_user:\s+foo\Z/) } - end - - context "with regex argument" do - let(:cmd_args) { %w{/name/} } - before { file(".chef/credentials", "[default]\nclient_name = \"three\"\n") } - - it { is_expected.to match(/^node_name:\s+three\Z/) } - end - - context "with --all" do - let(:cmd_args) { %w{-a /key_contents/} } - before { file(".chef/credentials", "[default]\nclient_name = \"three\"\n") } - - it { is_expected.to match(/^client_key_contents:\s+\nvalidation_key_contents:\s+\Z/) } - end - - context "with --raw" do - let(:cmd_args) { %w{-r node_name} } - before { file(".chef/credentials", "[default]\nclient_name = \"three\"\n") } - - it { is_expected.to eq("three\n") } - end - - context "with --format=json" do - let(:cmd_args) { %w{--format=json node_name} } - before { file(".chef/credentials", "[default]\nclient_name = \"three\"\n") } - - it { expect(JSON.parse(subject)).to eq({ "node_name" => "three" }) } - end - end -end diff --git a/spec/integration/knife/config_list_spec.rb b/spec/integration/knife/config_list_spec.rb index 03409e4983..d00cf11dc4 100644 --- a/spec/integration/knife/config_list_spec.rb +++ b/spec/integration/knife/config_list_spec.rb @@ -40,7 +40,7 @@ describe "knife config list", :workstation do old_wd = Dir.pwd # Clear these out because they are cached permanently. ChefConfig::PathHelper.class_exec { remove_class_variable(:@@home_dir) } - Chef::Knife::ConfigListProfiles.reset_config_loader! + Chef::Knife::ConfigList.reset_config_loader! begin ex.run ensure diff --git a/spec/integration/knife/config_use_spec.rb b/spec/integration/knife/config_use_spec.rb index 41d575669c..0431729b25 100644 --- a/spec/integration/knife/config_use_spec.rb +++ b/spec/integration/knife/config_use_spec.rb @@ -45,7 +45,7 @@ describe "knife config use", :workstation do ChefConfig::PathHelper.per_tool_home_environment = "KNIFE_HOME" # Clear these out because they are cached permanently. ChefConfig::PathHelper.class_exec { remove_class_variable(:@@home_dir) } - Chef::Knife::ConfigUseProfile.reset_config_loader! + Chef::Knife::ConfigUse.reset_config_loader! begin ex.run ensure @@ -67,6 +67,54 @@ describe "knife config use", :workstation do ENV["HOME"] = path_to(".") end + context "with no argument" do + context "with no configuration" do + it { is_expected.to eq "default\n" } + end + + context "with --profile" do + let(:cmd_args) { %w{--profile production} } + it { is_expected.to eq "production\n" } + end + + context "with an environment variable" do + around do |ex| + old_chef_profile = ENV["CHEF_PROFILE"] + begin + ENV["CHEF_PROFILE"] = "staging" + ex.run + ensure + ENV["CHEF_PROFILE"] = old_chef_profile + end + end + + it { is_expected.to eq "staging\n" } + end + + context "with a context file" do + before { file(".chef/context", "development\n") } + it { is_expected.to eq "development\n" } + end + + context "with a context file under $CHEF_HOME" do + before do + file("chefhome/.chef/context", "other\n") + ENV["CHEF_HOME"] = path_to("chefhome") + end + + it { is_expected.to eq "other\n" } + end + + context "with a context file under $KNIFE_HOME" do + before do + file("knifehome/.chef/context", "other\n") + ENV["KNIFE_HOME"] = path_to("knifehome") + end + + it { is_expected.to eq "other\n" } + end + end + context "with an argument" do let(:cmd_args) { %w{production} } before { file(".chef/credentials", <<~EOH) } |