chef-vault-testfixtures 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2c1145329f986e4edbf1b757f7e2b7d09b87c8b0
4
- data.tar.gz: 6e474ea233078ca1fc0811b83fdcf3ddf333f471
3
+ metadata.gz: 644e9c5bbb5372faf29af5d11bc7d7580d07fdca
4
+ data.tar.gz: 42a949fc8bea10c3a4f3d6b63f2a4d811110a7ce
5
5
  SHA512:
6
- metadata.gz: a1f71a70286b72a489a2759ca0bdc77de747434c5bb4990c8f28991af3b9a2e7fbf785bf52718824c5bf1269a4a752dc781e73111aabed4624e9d3f8d3b8016a
7
- data.tar.gz: d83dc649270a02559a29083467f1198fbcc55fab393b112b9b3de69de6e2ff4ef28af8cf3ce15d018f48fc8ebcc366dd72c0f52794ca15eb27e7e6d9c142804e
6
+ metadata.gz: 5e2eb02210c2483adb5a57e12f0ba1e879eb9fc1aa6f89fd2771e165081dae3b50adc2ac5244b81c848ac7244a5b085deb96a50a505e7384117410ac9015ff91
7
+ data.tar.gz: 0d9d7006e1a92c22993a1b130e275f24521399de3ab84728403a2a12e000929c53a0a6bef3811f17ccbc98ecc27dddec89e19178eb89642cb78f5ac3d71b6fef
@@ -2,6 +2,7 @@ AllCops:
2
2
  Exclude:
3
3
  - '**/Gemfile'
4
4
  - '**/*.gemspec'
5
+ - 'pkg/**/*'
5
6
 
6
7
  Style/RegexpLiteral:
7
8
  Exclude:
@@ -12,3 +13,6 @@ Style/Documentation:
12
13
  - 'spec/**/*.rb'
13
14
  - lib/chef-vault/test_fixtures/version.rb
14
15
  - lib/hoe/markdown.rb
16
+
17
+ Metrics/CyclomaticComplexity:
18
+ Max: 7
data/Guardfile CHANGED
@@ -10,6 +10,7 @@ guard :rubocop, all_on_start: true, cli: ['-D'] do
10
10
  end
11
11
 
12
12
  guard :rspec, all_on_start: true, cmd: 'bundle exec rspec' do
13
+ watch(%r{^spec/recipes/.+_spec\.rb$})
13
14
  watch(%r{^spec/(.+)_spec\.rb$})
14
15
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
15
16
  watch(%r{^spec/spec_helper.*\.rb$}) { 'spec' }
data/History.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog for chef-vault-testfixtures
2
2
 
3
+ ## 0.5.0
4
+
5
+ * breaking change: by default, only stub calls to `ChefVault::Item.load(bag, item)` and `Chef::DataBag.load(bag).key?(item_keys)`. This allows people who are using the JSON files in test/integration/data_bags to stub unencrypted data bag to do so. See the README for details of how to continue to stub `ChefVault::DataBagItem.load(bag, item)` and return a fake hash. Reported by [Dru Goradia](https://github.com/dgoradia-atlas))
6
+
3
7
  ## 0.4.1
4
8
 
5
9
  * fix bug where only the last item for a given vault was stubbed
data/README.md CHANGED
@@ -79,9 +79,88 @@ encrypted data, then checking for the existence of the `_keys` data bag
79
79
  item to go along with the normal item. The [sensu cookbook](https://github.com/sensu/sensu-chef/blob/35ee3aa6fa4ad578cdf751fe6822e3d2b3890d94/libraries/sensu_helpers.rb#L39-55) is a good example
80
80
  of this:
81
81
 
82
- The helper also stubs these methods, so that the probe mechanism should
83
- consider the data bag to be a vault and call ChefVault::Item.load, which
84
- is stubbed as described above.
82
+ ```
83
+ raw_hash = Chef::DataBagItem.load(data_bag_name, item)
84
+ encrypted = raw_hash.detect do |key, value|
85
+ if value.is_a?(Hash)
86
+ value.has_key?("encrypted_data")
87
+ end
88
+ end
89
+ if encrypted
90
+ if Chef::DataBag.load(data_bag_name).key? "#{item}_keys"
91
+ chef_vault_item(data_bag_name, item)
92
+ else
93
+ secret = Chef::EncryptedDataBagItem.load_secret
94
+ Chef::EncryptedDataBagItem.new(raw_hash, secret)
95
+ end
96
+ else
97
+ raw_hash
98
+ end
99
+ ```
100
+
101
+ chef-vault-testfixtures also stubs `Chef::DataBag` so that for every JSON
102
+ file in your test directory, it will think that there is a side-along
103
+ item suffixed with `_keys`. This satisfies the probes that the chef-vault
104
+ cookbook helper uses. To address the check for the `encrypted_data` key
105
+ that the sensu cookbook uses, pass a true value to `rspec_shared_context`:
106
+
107
+ ```
108
+ RSpec.describe 'my_cookbook::default' do
109
+ include ChefVault::TestFixtures.rspec_shared_context(true)
110
+ end
111
+ ```
112
+
113
+ Now, when your recipe calls `Chef::DataBagItem.load`, it will
114
+ get back a hash with the same keys as the JSON file, but values which are
115
+ hashes of the form:
116
+
117
+ ```
118
+ {
119
+ encrypted_data => '...'
120
+ }
121
+ ```
122
+
123
+ This is not a valid data bag obviously, but it will satisfy the probe
124
+ and cause code like that in the sensu cookbook to call `ChefVault::Item.load`,
125
+ which is stubbed to return valid data.
126
+
127
+ ## STUBBING UNENCRYPTED DATA BAGS
128
+
129
+ This technique is not a part of this gem, but was brought to my attention
130
+ in an issue. Credit to Dru Goradia for the approach. This will let you
131
+ populate an unencrypted data bag from the same JSON files:
132
+
133
+ In `spec/spec_helper.rb`:
134
+
135
+ ```
136
+ require 'chef-vault/test_fixtures'
137
+ require 'json'
138
+
139
+ def parse_data_bag (path)
140
+ data_bags_path = File.expand_path(File.join(File.dirname(__FILE__), '../test/integration/data_bags'))
141
+ return JSON.parse(File.read("#{data_bags_path}/#{path}"))
142
+ end
143
+ ```
144
+
145
+ In your test:
146
+
147
+ ```
148
+ describe 'my_cookbook::default' do
149
+ include ChefVault::TestFixtures.rspec_shared_context
150
+
151
+ let(:chef_run) do
152
+ ChefSpec::ServerRunner.new() do |node, server|
153
+ server.create_data_bag('foo', {
154
+ 'bar' => parse_data_bag('foo/bar.json')
155
+ })
156
+ end.converge(described_recipe)
157
+ end
158
+
159
+ it 'should converge' do
160
+ expect(chef_run).to include_recipe(described_recipe)
161
+ end
162
+ end
163
+ ```
85
164
 
86
165
  ## DEPENDENCIES
87
166
 
data/Rakefile CHANGED
@@ -12,6 +12,7 @@ begin
12
12
  license 'apache2'
13
13
  extra_deps << ['rspec', '~> 3.1']
14
14
  extra_deps << ['chef-vault', '~> 2.5']
15
+ extra_deps << ['hashie', '~> 2.1']
15
16
  extra_dev_deps << ['chef', '~> 12.0']
16
17
  extra_dev_deps << ['hoe', '~> 3.13']
17
18
  extra_dev_deps << ['hoe-gemspec', '~> 1.0']
@@ -21,6 +22,8 @@ begin
21
22
  extra_dev_deps << ['guard-rspec', '~> 4.2']
22
23
  extra_dev_deps << ['guard-rake', '~> 0.0']
23
24
  extra_dev_deps << ['guard-rubocop', '~> 1.2']
25
+ extra_dev_deps << ['chefspec', '~> 4.2']
26
+ extra_dev_deps << ['berkshelf', '~> 3.2']
24
27
  extra_dev_deps << ['rubocop', '~> 0.29']
25
28
  extra_dev_deps << ['simplecov', '~> 0.9']
26
29
  extra_dev_deps << ['simplecov-console', '~> 0.2']
@@ -1,14 +1,14 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: chef-vault-testfixtures 0.4.1.20150424142230 ruby lib
2
+ # stub: chef-vault-testfixtures 0.4.2.20150505160823 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "chef-vault-testfixtures"
6
- s.version = "0.4.1.20150424142230"
6
+ s.version = "0.4.2.20150505160823"
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib"]
10
10
  s.authors = ["James FitzGibbon"]
11
- s.date = "2015-04-24"
11
+ s.date = "2015-05-05"
12
12
  s.description = "chef-vault-testfixtures provides an RSpec shared context that\nstubs access to chef-vault encrypted data bags using the same\nfallback mechanism as the `chef_vault_item` helper from the\n[chef-vault cookbook](https://supermarket.chef.io/cookbooks/chef-vault)"
13
13
  s.email = ["james.i.fitzgibbon@nordstrom.com"]
14
14
  s.extra_rdoc_files = ["History.md", "Manifest.txt", "README.md"]
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.homepage = "https://github.com/Nordstrom/chef-vault-testfixtures"
17
17
  s.licenses = ["apache2"]
18
18
  s.rdoc_options = ["--main", "README.md"]
19
- s.rubygems_version = "2.4.6"
19
+ s.rubygems_version = "2.4.4"
20
20
  s.summary = "chef-vault-testfixtures provides an RSpec shared context that stubs access to chef-vault encrypted data bags using the same fallback mechanism as the `chef_vault_item` helper from the [chef-vault cookbook](https://supermarket.chef.io/cookbooks/chef-vault)"
21
21
 
22
22
  if s.respond_to? :specification_version then
@@ -25,6 +25,7 @@ Gem::Specification.new do |s|
25
25
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
26
26
  s.add_runtime_dependency(%q<rspec>, ["~> 3.1"])
27
27
  s.add_runtime_dependency(%q<chef-vault>, ["~> 2.5"])
28
+ s.add_runtime_dependency(%q<hashie>, ["~> 2.1"])
28
29
  s.add_development_dependency(%q<rdoc>, ["~> 4.0"])
29
30
  s.add_development_dependency(%q<chef>, ["~> 12.0"])
30
31
  s.add_development_dependency(%q<hoe>, ["~> 3.13"])
@@ -34,6 +35,8 @@ Gem::Specification.new do |s|
34
35
  s.add_development_dependency(%q<guard-rspec>, ["~> 4.2"])
35
36
  s.add_development_dependency(%q<guard-rake>, ["~> 0.0"])
36
37
  s.add_development_dependency(%q<guard-rubocop>, ["~> 1.2"])
38
+ s.add_development_dependency(%q<chefspec>, ["~> 4.2"])
39
+ s.add_development_dependency(%q<berkshelf>, ["~> 3.2"])
37
40
  s.add_development_dependency(%q<rubocop>, ["~> 0.29"])
38
41
  s.add_development_dependency(%q<simplecov>, ["~> 0.9"])
39
42
  s.add_development_dependency(%q<simplecov-console>, ["~> 0.2"])
@@ -41,6 +44,7 @@ Gem::Specification.new do |s|
41
44
  else
42
45
  s.add_dependency(%q<rspec>, ["~> 3.1"])
43
46
  s.add_dependency(%q<chef-vault>, ["~> 2.5"])
47
+ s.add_dependency(%q<hashie>, ["~> 2.1"])
44
48
  s.add_dependency(%q<rdoc>, ["~> 4.0"])
45
49
  s.add_dependency(%q<chef>, ["~> 12.0"])
46
50
  s.add_dependency(%q<hoe>, ["~> 3.13"])
@@ -50,6 +54,8 @@ Gem::Specification.new do |s|
50
54
  s.add_dependency(%q<guard-rspec>, ["~> 4.2"])
51
55
  s.add_dependency(%q<guard-rake>, ["~> 0.0"])
52
56
  s.add_dependency(%q<guard-rubocop>, ["~> 1.2"])
57
+ s.add_dependency(%q<chefspec>, ["~> 4.2"])
58
+ s.add_dependency(%q<berkshelf>, ["~> 3.2"])
53
59
  s.add_dependency(%q<rubocop>, ["~> 0.29"])
54
60
  s.add_dependency(%q<simplecov>, ["~> 0.9"])
55
61
  s.add_dependency(%q<simplecov-console>, ["~> 0.2"])
@@ -58,6 +64,7 @@ Gem::Specification.new do |s|
58
64
  else
59
65
  s.add_dependency(%q<rspec>, ["~> 3.1"])
60
66
  s.add_dependency(%q<chef-vault>, ["~> 2.5"])
67
+ s.add_dependency(%q<hashie>, ["~> 2.1"])
61
68
  s.add_dependency(%q<rdoc>, ["~> 4.0"])
62
69
  s.add_dependency(%q<chef>, ["~> 12.0"])
63
70
  s.add_dependency(%q<hoe>, ["~> 3.13"])
@@ -67,6 +74,8 @@ Gem::Specification.new do |s|
67
74
  s.add_dependency(%q<guard-rspec>, ["~> 4.2"])
68
75
  s.add_dependency(%q<guard-rake>, ["~> 0.0"])
69
76
  s.add_dependency(%q<guard-rubocop>, ["~> 1.2"])
77
+ s.add_dependency(%q<chefspec>, ["~> 4.2"])
78
+ s.add_dependency(%q<berkshelf>, ["~> 3.2"])
70
79
  s.add_dependency(%q<rubocop>, ["~> 0.29"])
71
80
  s.add_dependency(%q<simplecov>, ["~> 0.9"])
72
81
  s.add_dependency(%q<simplecov-console>, ["~> 0.2"])
@@ -1,14 +1,17 @@
1
1
  require 'pathname'
2
2
  require 'json'
3
+ require 'hashie/extensions/method_access'
3
4
 
4
5
  require 'rspec'
5
6
  require 'rspec/core/shared_context'
6
7
  require 'chef-vault'
7
8
 
9
+ # chef-vault helps manage encrypted data bags using a node's public key
8
10
  class ChefVault
9
11
  # dynamic RSpec contexts for cookbooks that use chef-vault
10
12
  class TestFixtures
11
- VERSION = '0.4.1'
13
+ # the version of the gem
14
+ VERSION = '0.5.0'
12
15
 
13
16
  # dynamically creates a memoized RSpec shared context
14
17
  # that when included into an example group will stub
@@ -17,42 +20,75 @@ class ChefVault
17
20
  # @return [Module] the RSpec shared context
18
21
  class << self
19
22
  # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
20
- def rspec_shared_context
23
+
24
+ # created a shared RSpec context that stubs calls to ChefVault::Item.load
25
+ # @param stub_encrypted_data [Boolean] whether to also stub calls to
26
+ # Chef::DataBagItem.load
27
+ # @return [Module] a shared context to include in your example groups
28
+ def rspec_shared_context(stub_encrypted_data = false)
21
29
  @context ||= begin
22
30
  Module.new do
23
31
  extend RSpec::Core::SharedContext
24
32
 
25
- before { find_vaults }
33
+ before { find_vaults(stub_encrypted_data) }
26
34
 
27
35
  private
28
36
 
29
- def find_vaults
37
+ # finds all the directories in test/integration/data_bags, stubbing
38
+ # each as a vault
39
+ # @param stub_encrypted_data [Boolean] whether to also stub calls to
40
+ # Chef::DataBagItem.load
41
+ # return [void]
42
+ # @api private
43
+ def find_vaults(stub_encrypted_data)
30
44
  dbdir = Pathname.new('test') + 'integration' + 'data_bags'
31
45
  dbdir.each_child do |vault|
32
46
  next unless vault.directory?
33
- stub_vault(vault)
47
+ stub_vault(stub_encrypted_data, vault)
34
48
  end
35
49
  end
36
50
 
37
- def stub_vault(vault)
51
+ # stubs a vault with the contents of JSON files in a directory.
52
+ # Finds all files in the vault path ending in .json and stubs
53
+ # each as a vault item.
54
+ # @param stub_encrypted_data [Boolean] whether to also stub calls to
55
+ # Chef::DataBagItem.load
56
+ # @param vault [Pathname] the path to the directory that will be
57
+ # stubbed as a vault
58
+ # @return [void]
59
+ # @api private
60
+ def stub_vault(stub_encrypted_data, vault)
38
61
  db = {}
39
62
  vault.each_child do |e|
40
63
  next unless e.file?
41
64
  m = e.basename.to_s.downcase.match(/(.+)\.json/i)
42
- stub_vault_item(vault.basename.to_s, m[1], e.read, db) if m
65
+ next unless m
66
+ content = JSON.parse(e.read)
67
+ vaultname = vault.basename.to_s
68
+ stub_vault_item(vaultname, m[1], content, db)
69
+ if stub_encrypted_data
70
+ stub_vault_item_encrypted_data(vaultname, m[1], content)
71
+ end
43
72
  end
44
73
  end
45
74
 
46
- def stub_vault_item(vault, item, json, db)
47
- content = JSON.parse(json)
75
+ # stubs a vault item with the contents of a parsed JSON string.
76
+ # If the class-level setting `encrypted_data_stub` is true, then
77
+ # Chef::DataBagItem.load
78
+ # @param vault [String] the name of the vault data bag
79
+ # @param item [String] the name of the vault item
80
+ # @param content [String] the JSON-encoded contents to populate the
81
+ # fake vault with
82
+ # @param db [Hash] the fake data bag item that contains the item
83
+ # @return [void]
84
+ # @api private
85
+ def stub_vault_item(vault, item, content, db)
48
86
  db["#{item}_keys"] = true
49
- dbi = {}
50
87
  vi = make_fakevault(vault, item)
51
88
 
52
- # stub lookup of each of the vault item keys
89
+ # stub vault lookup of each of the vault item keys
53
90
  content.each do |k, v|
54
91
  next if 'id' == k
55
- dbi[k] = { 'encrypted_data' => '...' }
56
92
  allow(vi).to receive(:[]).with(k).and_return(v)
57
93
  end
58
94
 
@@ -64,11 +100,6 @@ class ChefVault
64
100
  .with(dbname, item)
65
101
  .and_return(vi)
66
102
  )
67
- allow(Chef::DataBagItem).to(
68
- receive(:load)
69
- .with(dbname, item)
70
- .and_return(dbi)
71
- )
72
103
  allow(Chef::DataBag).to(
73
104
  receive(:load)
74
105
  .with(dbname)
@@ -77,6 +108,39 @@ class ChefVault
77
108
  end
78
109
  end
79
110
 
111
+ # stubs Chef::DataBagItem.load to return a fake hash in which
112
+ # each key of the content returns a hash with single
113
+ # `encrypted_data` key, which fools some attempts to determine
114
+ # whether a data bag is a vault
115
+ # @param vault [String] the name of the vault data bag
116
+ # @param item [String] the name of the vault item
117
+ # @param content [String] the JSON-encoded contents to populate the
118
+ # fake vault with
119
+ # @return [void]
120
+ # @api private
121
+ def stub_vault_item_encrypted_data(vault, item, content)
122
+ # stub data bag lookup of each of the vault item keys
123
+ dbi = ChefVault::TestFixtureDataBagItem.new
124
+ dbi['raw_data'] = content
125
+ content.each_key do |k|
126
+ next if 'id' == k
127
+ dbi[k] = { 'encrypted_data' => '...' }
128
+ end
129
+
130
+ [vault, vault.to_sym].each do |dbname|
131
+ allow(Chef::DataBagItem).to(
132
+ receive(:load)
133
+ .with(dbname, item)
134
+ .and_return(dbi)
135
+ )
136
+ end
137
+ end
138
+
139
+ # returns an RSpec double that acts like a vault item
140
+ # @param vault [String] the name of the vault data bag
141
+ # @param item [String] the name of the vault item
142
+ # @return [RSpec::Mocks::Double] the vault double
143
+ # @api private
80
144
  def make_fakevault(vault, item)
81
145
  fakevault = double "vault item #{vault}/#{item}"
82
146
  allow(fakevault).to receive(:[]=).with(String, Object)
@@ -90,4 +154,9 @@ class ChefVault
90
154
  # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
91
155
  end
92
156
  end
157
+
158
+ # a hash with method access to stand in for a Chef::DataBagItem
159
+ class TestFixtureDataBagItem < Hash
160
+ include Hashie::Extensions::MethodAccess
161
+ end
93
162
  end
@@ -1,28 +1,10 @@
1
1
  require 'chef-vault/test_fixtures'
2
2
 
3
- # same with ChefVault::TestFixtures
4
- class ChefVault
5
- class TestFixtures
6
- class << self
7
- def clear_context
8
- @context = nil
9
- end
10
- end
11
- end
12
- end
13
-
14
3
  RSpec.describe ChefVault::TestFixtures do
15
- include ChefVault::TestFixtures.rspec_shared_context
16
-
17
- before do
4
+ describe 'without the encrypted_data stub' do
18
5
  ChefVault::TestFixtures.clear_context
19
- end
20
-
21
- after do
22
- ChefVault::TestFixtures.clear_context
23
- end
6
+ include ChefVault::TestFixtures.rspec_shared_context(false)
24
7
 
25
- describe 'Generic functionality' do
26
8
  it 'can create an RSpec shared context' do
27
9
  sc = ChefVault::TestFixtures.rspec_shared_context
28
10
  expect(sc).to be_a(Module)
@@ -34,9 +16,7 @@ RSpec.describe ChefVault::TestFixtures do
34
16
  mod2 = ChefVault::TestFixtures.rspec_shared_context
35
17
  expect(mod2).to be(mod1)
36
18
  end
37
- end
38
19
 
39
- describe 'stub ChefVault::Item.load' do
40
20
  it 'should stub the foo/bar vault item' do
41
21
  baz = ChefVault::Item.load('foo', 'bar')['baz']
42
22
  expect(baz).to eq(2)
@@ -78,9 +58,19 @@ RSpec.describe ChefVault::TestFixtures do
78
58
  item = ChefVault::Item.load('bar', 'foo')
79
59
  item.save
80
60
  end
61
+
62
+ it 'should stub the _keys data bag item' do
63
+ db = Chef::DataBag.load('foo')
64
+ expect(db.key?('bar_keys')).to be_truthy
65
+ end
81
66
  end
67
+ end
68
+
69
+ RSpec.describe ChefVault::TestFixtures do
70
+ describe 'with the encrypted_data stub' do
71
+ ChefVault::TestFixtures.clear_context
72
+ include ChefVault::TestFixtures.rspec_shared_context(true)
82
73
 
83
- describe 'stub Chef::DataBagItem.load' do
84
74
  it 'should present the foo/bar data bag item as encrypted' do
85
75
  dbi = Chef::DataBagItem.load('foo', 'bar')
86
76
  encrypted = dbi.detect do |_, v|\
@@ -89,11 +79,4 @@ RSpec.describe ChefVault::TestFixtures do
89
79
  expect(encrypted).to be_truthy
90
80
  end
91
81
  end
92
-
93
- describe 'stub Chef::DataBag.load' do
94
- it 'should fake the foo/bar_keys data bag item' do
95
- db = Chef::DataBag.load('foo')
96
- expect(db.key?('bar_keys')).to be_truthy
97
- end
98
- end
99
82
  end
@@ -21,3 +21,14 @@ RSpec.configure do |config|
21
21
  config.order = :random
22
22
  Kernel.srand config.seed
23
23
  end
24
+
25
+ # a helper to clear the context between examples
26
+ class ChefVault
27
+ class TestFixtures
28
+ class << self
29
+ def clear_context
30
+ @context = nil
31
+ end
32
+ end
33
+ end
34
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-vault-testfixtures
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James FitzGibbon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-24 00:00:00.000000000 Z
11
+ date: 2015-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.5'
41
+ - !ruby/object:Gem::Dependency
42
+ name: hashie
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.1'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rdoc
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -164,6 +178,34 @@ dependencies:
164
178
  - - "~>"
165
179
  - !ruby/object:Gem::Version
166
180
  version: '1.2'
181
+ - !ruby/object:Gem::Dependency
182
+ name: chefspec
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '4.2'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '4.2'
195
+ - !ruby/object:Gem::Dependency
196
+ name: berkshelf
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '3.2'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '3.2'
167
209
  - !ruby/object:Gem::Dependency
168
210
  name: rubocop
169
211
  requirement: !ruby/object:Gem::Requirement
@@ -270,7 +312,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
270
312
  version: '0'
271
313
  requirements: []
272
314
  rubyforge_project:
273
- rubygems_version: 2.4.6
315
+ rubygems_version: 2.4.4
274
316
  signing_key:
275
317
  specification_version: 4
276
318
  summary: chef-vault-testfixtures provides an RSpec shared context that stubs access