diff options
author | Thom May <thom@may.lt> | 2017-12-10 11:05:37 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-10 11:05:37 +0000 |
commit | 73b2128f6d980c3632fb6bd33931ebef261f61e9 (patch) | |
tree | a1de9fb2be26f74e26ae6867671ebdc8e6bf632e | |
parent | 8c923eee2f43bbd48ffc8f8137c369e5c3661a2b (diff) | |
parent | a917fe84578b30b7e60d5aaa06456bdd2cac9adc (diff) | |
download | chef-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.rb | 2 | ||||
-rw-r--r-- | spec/unit/knife/data_bag_create_spec.rb | 23 |
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] |