summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThom May <thom@may.lt>2017-12-10 11:05:37 +0000
committerGitHub <noreply@github.com>2017-12-10 11:05:37 +0000
commit73b2128f6d980c3632fb6bd33931ebef261f61e9 (patch)
treea1de9fb2be26f74e26ae6867671ebdc8e6bf632e
parent8c923eee2f43bbd48ffc8f8137c369e5c3661a2b (diff)
parenta917fe84578b30b7e60d5aaa06456bdd2cac9adc (diff)
downloadchef-73b2128f6d980c3632fb6bd33931ebef261f61e9.tar.gz
Merge pull request #6636 from EmFl/patch-1
Ensure data bags names can contain reserved words
-rw-r--r--lib/chef/data_bag.rb2
-rw-r--r--spec/unit/knife/data_bag_create_spec.rb23
2 files changed, 23 insertions, 2 deletions
diff --git a/lib/chef/data_bag.rb b/lib/chef/data_bag.rb
index 82eb03fbd7..cd10b7c704 100644
--- a/lib/chef/data_bag.rb
+++ b/lib/chef/data_bag.rb
@@ -33,7 +33,7 @@ class Chef
include Chef::Mixin::ParamsValidate
VALID_NAME = /^[\.\-[:alnum:]_]+$/
- RESERVED_NAMES = /node|role|environment|client/
+ RESERVED_NAMES = /^(node|role|environment|client)$/
attr_accessor :chef_server_rest
diff --git a/spec/unit/knife/data_bag_create_spec.rb b/spec/unit/knife/data_bag_create_spec.rb
index 1f99fe74fe..f7dfc075e1 100644
--- a/spec/unit/knife/data_bag_create_spec.rb
+++ b/spec/unit/knife/data_bag_create_spec.rb
@@ -79,7 +79,28 @@ describe Chef::Knife::DataBagCreate do
expect { knife.run }.to exit_with_code(1)
end
end
-
+
+ context "when part of the name is a reserved name" do
+ before do
+ exception = double("404 error", :code => "404")
+ %w{node role client environment}.each do |name|
+ allow(rest).to receive(:get)
+ .with("data/sudoing_#{name}_admins")
+ .and_raise(Net::HTTPServerException.new("404", exception))
+ end
+ end
+
+ it "will create a data bag containing a reserved word" do
+ %w{node role client environment}.each do |name|
+ knife.name_args = ["sudoing_#{name}_admins"]
+ expect(rest).to receive(:post).with("data", { "name" => knife.name_args[0] })
+ expect(knife.ui).to receive(:info).with("Created data_bag[#{knife.name_args[0]}]")
+
+ knife.run
+ end
+ end
+ end
+
context "when given one argument" do
before do
knife.name_args = [bag_name]