summaryrefslogtreecommitdiff
path: root/spec/unit
diff options
context:
space:
mode:
authorClaire McQuin <claire@getchef.com>2014-08-18 13:52:56 -0700
committerClaire McQuin <claire@getchef.com>2014-08-22 11:59:32 -0700
commit49e82f5b0b3febf5931813050e013eedf3e671a7 (patch)
tree859fce830e33a03f13ecbaacc1af7a2b0608f76e /spec/unit
parent7142a176f73996af5aa3efd22c21ab902b1df661 (diff)
downloadchef-49e82f5b0b3febf5931813050e013eedf3e671a7.tar.gz
Spec out behavior for autodetecting encrypted data bag items.
Diffstat (limited to 'spec/unit')
-rw-r--r--spec/unit/dsl/data_query_spec.rb58
1 files changed, 57 insertions, 1 deletions
diff --git a/spec/unit/dsl/data_query_spec.rb b/spec/unit/dsl/data_query_spec.rb
index d305c86d89..320e9894eb 100644
--- a/spec/unit/dsl/data_query_spec.rb
+++ b/spec/unit/dsl/data_query_spec.rb
@@ -62,7 +62,11 @@ describe Chef::DSL::DataQuery do
let(:raw_data) {{
"id" => item_name,
- "FUU" => "FUU"
+ "greeting" => "hello",
+ "nested" => {
+ "a1" => [1, 2, 3],
+ "a2" => { "b1" => true }
+ }
}}
let(:item) do
@@ -80,5 +84,57 @@ describe Chef::DSL::DataQuery do
include_examples "a data bag item" do
let(:method_name) { :data_bag_item }
end
+
+ context "when the item is encrypted" do
+
+ let(:secret) { "abc123SECRET" }
+
+ let(:encoded_data) { Chef::EncryptedDataBagItem.encrypt_data_bag_item(raw_data, secret) }
+
+ let(:item) do
+ item = Chef::DataBagItem.new
+ item.data_bag(bag_name)
+ item.raw_data = encoded_data
+ item
+ end
+
+ it "detects v1 encrypted data bag items" do
+ Chef::Config[:data_bag_encrypt_version] = 1
+ end
+
+ it "detects v2 encrypted data bag items" do
+ Chef::Config[:data_bag_encrypt_version] = 2
+ end
+
+ it "detects v3 encrypted data bag items" do
+ Chef::Config[:data_bag_encrypt_version] = 3
+ end
+
+ shared_examples_for "an encrypted data bag item" do
+ it "returns an encrypted data bag item" do
+
+ end
+ end
+
+ context "when a secret is supplied" do
+ include_examples "an encrypted data bag item" do
+
+ end
+ end
+
+ context "when a secret is not supplied" do
+ context "when a secret is located at Chef::Config[:encrypted_data_bag_secret]" do
+ include_examples "an encrypted data bag item" do
+
+ end
+ end
+
+ context "when a secret is not located at Chef::Config[:encrypted_data_bag_secret]" do
+ it "should fail to load the data bag item" do
+
+ end
+ end
+ end
+ end
end
end