diff options
author | tyler-ball <tyleraball@gmail.com> | 2014-09-15 09:46:09 -0700 |
---|---|---|
committer | tyler-ball <tyleraball@gmail.com> | 2014-09-29 08:31:08 -0700 |
commit | e121b47679cb38fe8a1571405d9f8f8969266122 (patch) | |
tree | dcae065d1bca14da77b7385467640b2a1b1042e9 | |
parent | 22889f0fd605a1404ad1c46562254e19bd0f7ede (diff) | |
download | chef-e121b47679cb38fe8a1571405d9f8f8969266122.tar.gz |
Unsorted file listings were causing intermittent test failures on different boxes - mocked out the file lister so the results are consistent now
-rw-r--r-- | spec/unit/knife/data_bag_from_file_spec.rb | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/spec/unit/knife/data_bag_from_file_spec.rb b/spec/unit/knife/data_bag_from_file_spec.rb index 6a55c0e0d2..662af3f0d6 100644 --- a/spec/unit/knife/data_bag_from_file_spec.rb +++ b/spec/unit/knife/data_bag_from_file_spec.rb @@ -30,8 +30,8 @@ describe Chef::Knife::DataBagFromFile do FileUtils.mkdir_p([db_folder, db_folder2]) db_file.write(plain_data.to_json) db_file.flush - knife.name_args = [bag_name, db_file.path] allow(knife).to receive(:config).and_return(config) + allow(Chef::Knife::Core::ObjectLoader).to receive(:new).and_return(loader) end # We have to explicitly clean up Tempfile on Windows because it said so. @@ -68,6 +68,8 @@ describe Chef::Knife::DataBagFromFile do data_bag end + let(:loader) { double("Knife::Core::ObjectLoader") } + let(:data_bags_path) { "data_bags" } let(:plain_data) { { "id" => "item_name", @@ -88,7 +90,8 @@ describe Chef::Knife::DataBagFromFile do let(:config) { {} } it "loads from a file and saves" do - expect(knife.loader).to receive(:load_from).with(data_bags_path, bag_name, db_file.path).and_return(plain_data) + knife.name_args = [bag_name, db_file.path] + expect(loader).to receive(:load_from).with(data_bags_path, bag_name, db_file.path).and_return(plain_data) expect(Chef::DataBagItem).to receive(:new).and_return(new_bag_expects) knife.run @@ -96,8 +99,8 @@ describe Chef::Knife::DataBagFromFile do it "loads all from multiple files and saves" do knife.name_args = [ bag_name, db_file.path, db_file2.path ] - expect(knife.loader).to receive(:load_from).with(data_bags_path, bag_name, db_file.path).and_return(plain_data) - expect(knife.loader).to receive(:load_from).with(data_bags_path, bag_name, db_file2.path).and_return(plain_data) + expect(loader).to receive(:load_from).with(data_bags_path, bag_name, db_file.path).and_return(plain_data) + expect(loader).to receive(:load_from).with(data_bags_path, bag_name, db_file2.path).and_return(plain_data) expect(Chef::DataBagItem).to receive(:new).twice.and_return(new_bag_expects, new_bag_expects) knife.run @@ -105,8 +108,8 @@ describe Chef::Knife::DataBagFromFile do it "loads all from a folder and saves" do knife.name_args = [ bag_name, db_folder ] - expect(knife.loader).to receive(:load_from).with(data_bags_path, bag_name, db_file.path).and_return(plain_data) - expect(knife.loader).to receive(:load_from).with(data_bags_path, bag_name, db_file2.path).and_return(plain_data) + expect(loader).to receive(:load_from).with(data_bags_path, bag_name, db_file.path).and_return(plain_data) + expect(loader).to receive(:load_from).with(data_bags_path, bag_name, db_file2.path).and_return(plain_data) expect(Chef::DataBagItem).to receive(:new).twice.and_return(new_bag_expects, new_bag_expects) knife.run @@ -114,21 +117,15 @@ describe Chef::Knife::DataBagFromFile do describe "loading all data bags" do - before do - @pwd = Dir.pwd - Dir.chdir(tmp_dir) - end - - after do - Dir.chdir(@pwd) - end - it "loads all data bags when -a or --all options is provided" do knife.name_args = [] config[:all] = true - expect(knife.loader).to receive(:load_from).with(data_bags_path, bag_name, File.basename(db_file.path)).and_return(plain_data) - expect(knife.loader).to receive(:load_from).with(data_bags_path, bag_name, File.basename(db_file2.path)).and_return(plain_data) - expect(knife.loader).to receive(:load_from).with(data_bags_path, bag_name2, File.basename(db_file3.path)).and_return(plain_data) + expect(loader).to receive(:find_all_object_dirs).with("./#{data_bags_path}").and_return([bag_name, bag_name2]) + expect(loader).to receive(:find_all_objects).with("./#{data_bags_path}/#{bag_name}").and_return([File.basename(db_file.path), File.basename(db_file2.path)]) + expect(loader).to receive(:find_all_objects).with("./#{data_bags_path}/#{bag_name2}").and_return([File.basename(db_file3.path)]) + expect(loader).to receive(:load_from).with(data_bags_path, bag_name, File.basename(db_file.path)).and_return(plain_data) + expect(loader).to receive(:load_from).with(data_bags_path, bag_name, File.basename(db_file2.path)).and_return(plain_data) + expect(loader).to receive(:load_from).with(data_bags_path, bag_name2, File.basename(db_file3.path)).and_return(plain_data) expect(Chef::DataBagItem).to receive(:new).exactly(3).times.and_return(new_bag_expects, new_bag_expects, new_bag_expects(bag_name2)) knife.run @@ -137,7 +134,8 @@ describe Chef::Knife::DataBagFromFile do it "loads all data bags items when -a or --all options is provided" do knife.name_args = [bag_name2] config[:all] = true - expect(knife.loader).to receive(:load_from).with(data_bags_path, bag_name2, File.basename(db_file3.path)).and_return(plain_data) + expect(loader).to receive(:find_all_objects).with("./#{data_bags_path}/#{bag_name2}").and_return([File.basename(db_file3.path)]) + expect(loader).to receive(:load_from).with(data_bags_path, bag_name2, File.basename(db_file3.path)).and_return(plain_data) expect(Chef::DataBagItem).to receive(:new).and_return(new_bag_expects(bag_name2)) knife.run @@ -153,7 +151,8 @@ describe Chef::Knife::DataBagFromFile do end it "encrypts values when given --secret" do - expect(knife.loader).to receive(:load_from).with(data_bags_path, bag_name, db_file.path).and_return(plain_data) + knife.name_args = [bag_name, db_file.path] + expect(loader).to receive(:load_from).with(data_bags_path, bag_name, db_file.path).and_return(plain_data) expect(Chef::DataBagItem).to receive(:new).and_return(new_bag_expects(bag_name, enc_data)) knife.run |