summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortyler-ball <tyleraball@gmail.com>2014-09-15 09:46:09 -0700
committertyler-ball <tyleraball@gmail.com>2014-09-29 08:31:08 -0700
commite121b47679cb38fe8a1571405d9f8f8969266122 (patch)
treedcae065d1bca14da77b7385467640b2a1b1042e9
parent22889f0fd605a1404ad1c46562254e19bd0f7ede (diff)
downloadchef-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.rb39
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