berkshelf 0.6.0.beta4 → 1.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
@@ -77,12 +77,6 @@ module Berkshelf
77
77
  it "uses the value of Chef::Config[:client_key] for the client_key attribute" do
78
78
  @loc.client_key.should eql(Chef::Config[:client_key])
79
79
  end
80
-
81
- it "attempts to load the config file with no arguments" do
82
- Berkshelf.should_receive(:load_config).with(no_args)
83
-
84
- subject.new("nginx", constraint, chef_api: :knife)
85
- end
86
80
  end
87
81
  end
88
82
 
@@ -26,26 +26,6 @@ describe Berkshelf do
26
26
  end
27
27
  end
28
28
 
29
- describe "::config_path" do
30
- it "returns a default value if nothing is specified" do
31
- subject.config_path.should eql(Berkshelf::DEFAULT_CONFIG)
32
- end
33
-
34
- it "returns the value assigned if specified" do
35
- subject.config_path = value = "/Users/reset/.chef/knife.rb"
36
-
37
- subject.config_path.should eql(value)
38
- end
39
- end
40
-
41
- describe "::load_config" do
42
- it "loads the path specified by config_path if no parameter given" do
43
- Chef::Config.should_receive(:from_file).with(Berkshelf.config_path)
44
-
45
- subject.load_config
46
- end
47
- end
48
-
49
29
  describe "::formatter" do
50
30
  context "with default formatter" do
51
31
  it "should be human readable" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: berkshelf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0.beta4
4
+ version: 1.0.0.rc1
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -21,7 +21,7 @@ dependencies:
21
21
  requirements:
22
22
  - - ! '>='
23
23
  - !ruby/object:Gem::Version
24
- version: 0.1.0
24
+ version: 0.2.1
25
25
  type: :runtime
26
26
  prerelease: false
27
27
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  requirements:
30
30
  - - ! '>='
31
31
  - !ruby/object:Gem::Version
32
- version: 0.1.0
32
+ version: 0.2.1
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: ridley
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -212,7 +212,7 @@ files:
212
212
  - berkshelf.gemspec
213
213
  - bin/berks
214
214
  - features/config.feature
215
- - features/config_command.feature
215
+ - features/configure_command.feature
216
216
  - features/cookbook_command.feature
217
217
  - features/default_locations.feature
218
218
  - features/groups_install.feature
@@ -223,6 +223,7 @@ files:
223
223
  - features/step_definitions/berksfile_steps.rb
224
224
  - features/step_definitions/chef_server_steps.rb
225
225
  - features/step_definitions/cli_steps.rb
226
+ - features/step_definitions/configure_cli_steps.rb
226
227
  - features/step_definitions/filesystem_steps.rb
227
228
  - features/step_definitions/json_steps.rb
228
229
  - features/support/env.rb
@@ -235,7 +236,6 @@ files:
235
236
  - generator_files/Thorfile.erb
236
237
  - generator_files/Vagrantfile.erb
237
238
  - generator_files/chefignore
238
- - generator_files/config.json
239
239
  - generator_files/default_recipe.erb
240
240
  - generator_files/gitignore.erb
241
241
  - generator_files/licenses/apachev2.erb
@@ -250,8 +250,6 @@ files:
250
250
  - lib/berkshelf/cached_cookbook.rb
251
251
  - lib/berkshelf/cli.rb
252
252
  - lib/berkshelf/config.rb
253
- - lib/berkshelf/config_generator.rb
254
- - lib/berkshelf/config_validator.rb
255
253
  - lib/berkshelf/cookbook_generator.rb
256
254
  - lib/berkshelf/cookbook_source.rb
257
255
  - lib/berkshelf/cookbook_store.rb
@@ -323,7 +321,6 @@ files:
323
321
  - spec/unit/berkshelf/berksfile_spec.rb
324
322
  - spec/unit/berkshelf/cached_cookbook_spec.rb
325
323
  - spec/unit/berkshelf/config_spec.rb
326
- - spec/unit/berkshelf/config_validator_spec.rb
327
324
  - spec/unit/berkshelf/cookbook_generator_spec.rb
328
325
  - spec/unit/berkshelf/cookbook_source_spec.rb
329
326
  - spec/unit/berkshelf/cookbook_store_spec.rb
@@ -367,7 +364,7 @@ specification_version: 3
367
364
  summary: Manages a Cookbook's, or an Application's, Cookbook dependencies
368
365
  test_files:
369
366
  - features/config.feature
370
- - features/config_command.feature
367
+ - features/configure_command.feature
371
368
  - features/cookbook_command.feature
372
369
  - features/default_locations.feature
373
370
  - features/groups_install.feature
@@ -378,6 +375,7 @@ test_files:
378
375
  - features/step_definitions/berksfile_steps.rb
379
376
  - features/step_definitions/chef_server_steps.rb
380
377
  - features/step_definitions/cli_steps.rb
378
+ - features/step_definitions/configure_cli_steps.rb
381
379
  - features/step_definitions/filesystem_steps.rb
382
380
  - features/step_definitions/json_steps.rb
383
381
  - features/support/env.rb
@@ -419,7 +417,6 @@ test_files:
419
417
  - spec/unit/berkshelf/berksfile_spec.rb
420
418
  - spec/unit/berkshelf/cached_cookbook_spec.rb
421
419
  - spec/unit/berkshelf/config_spec.rb
422
- - spec/unit/berkshelf/config_validator_spec.rb
423
420
  - spec/unit/berkshelf/cookbook_generator_spec.rb
424
421
  - spec/unit/berkshelf/cookbook_source_spec.rb
425
422
  - spec/unit/berkshelf/cookbook_store_spec.rb
@@ -1,10 +0,0 @@
1
- Feature: config command
2
- As a Cookbook author
3
- I want to quickly generate a Berkshelf config
4
- So I can easily tell which options are available to me
5
-
6
- Scenario: creating a new config
7
- Given I do not have a Berkshelf config file
8
- When I run the config command
9
- Then I should have a Berkshelf config file
10
- And the exit status should be 0
@@ -1,22 +0,0 @@
1
- {
2
- "vagrant": {
3
- "chef": {
4
- "chef_server_url": "https://api.opscode.com/organizations/ORGNAME",
5
- "validation_client_name": "ORGNAME-validator",
6
- "validation_key_path": "~/validation.pem"
7
- },
8
- "vm": {
9
- "box": "base",
10
- "box_url": "http://files.vagrantup.com/lucid64.box",
11
- "forward_port": {
12
- "80": "8080"
13
- },
14
- "host_name": "berkshelf-cookbook",
15
- "network": {
16
- "bridged": true,
17
- "hostonly": "192.168.33.10"
18
- },
19
- "provision": "chef_solo"
20
- }
21
- }
22
- }
@@ -1,8 +0,0 @@
1
- module Berkshelf
2
- # @author Justin Campbell <justin@justincampbell.me>
3
- class ConfigGenerator < BaseGenerator
4
- def generate
5
- template "config.json", Config.path
6
- end
7
- end
8
- end
@@ -1,78 +0,0 @@
1
- module Berkshelf
2
- # @author Justin Campbell <justin@justincampbell.me>
3
- class ConfigValidator < ActiveModel::Validator
4
- DEFAULT_STRUCTURE = {
5
- vagrant: {
6
- chef: {
7
- chef_server_url: String,
8
- validation_client_name: String,
9
- validation_key_path: String
10
- },
11
- vm: {
12
- box: String,
13
- box_url: String,
14
- forward_port: Hash,
15
- host_name: String,
16
- network: {
17
- bridged: Object,
18
- hostonly: String
19
- },
20
- provision: String
21
- }
22
- }
23
- }
24
-
25
- # Recursively validate the structure of a hash with another hash. If
26
- # invalid, the actual_hash will have errors added to it.
27
- #
28
- # @param [Hash] actual_hash
29
- # The hash to validate
30
- #
31
- # @param [Hash] expected_hash
32
- # The expected structure of actual_hash
33
- #
34
- # @param [Config] config
35
- # The config object to add errors to. This is only used recursively.
36
- #
37
- # @return [Boolean]
38
- def assert_in_structure(actual_hash, expected_hash, config = nil)
39
- config ||= actual_hash
40
-
41
- actual_hash.keys.each do |key|
42
- unless expected_hash.keys.include? key.to_sym
43
- config.errors.add key, "is not a valid key"
44
- return
45
- end
46
-
47
- actual = actual_hash[key]
48
- expected = expected_hash[key.to_sym]
49
-
50
- if actual.is_a?(Hash) && expected.is_a?(Hash)
51
- return unless assert_in_structure actual, expected, config
52
- else
53
- unless actual.is_a? expected
54
- config.errors.add key, "should be an instance of #{expected}"
55
- return
56
- end
57
- end
58
- end
59
-
60
- true
61
- end
62
-
63
- # @see DEFAULT_STRUCTURE
64
- # @return [Hash]
65
- def structure
66
- @structure ||= DEFAULT_STRUCTURE
67
- end
68
-
69
- # @param [Config] config
70
- # The config to validate
71
- #
72
- # @return [Boolean]
73
- def validate(config)
74
- assert_in_structure config, structure
75
- end
76
- end
77
- end
78
-
@@ -1,68 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Berkshelf::ConfigValidator do
4
- let(:config) { Berkshelf::Config.from_json json }
5
- let(:config_validator) { klass.new Hash.new }
6
- let(:json) { '{}' }
7
- let(:klass) { described_class }
8
- let(:structure) { Hash.new }
9
-
10
- before :each do
11
- klass.any_instance.stub structure: structure
12
- end
13
-
14
- describe "#validate" do
15
- subject { config_validator.validate config }
16
-
17
- it { should be_true }
18
- it { config.should be_valid }
19
-
20
- context "with a top-level key" do
21
- let(:json) { '{ "a": 1 }' }
22
- let(:structure) { { a: Object } }
23
-
24
- it { should be_true }
25
- it { config.should be_valid }
26
- end
27
-
28
- context "with a nested key" do
29
- let(:json) { '{ "a": { "b": 1 } }' }
30
- let(:structure) { { a: { b: Object } } }
31
-
32
- it { should be_true }
33
- it { config.should be_valid }
34
- end
35
-
36
- context "with a top-level nonsense key" do
37
- let(:json) { '{ "nonsense": null }' }
38
- let(:structure) { { a: Object } }
39
-
40
- it { should be_false }
41
- it { config.should_not be_valid }
42
- end
43
-
44
- context "with a nested nonsense key" do
45
- let(:json) { '{ "a": { "nonsense": 1 } }' }
46
- let(:structure) { { a: { b: Object } } }
47
-
48
- it { should be_false }
49
- it { config.should_not be_valid }
50
- end
51
-
52
- context "with a top-level key that doesn't match the expected type" do
53
- let(:json) { '{ "a": 1 }' }
54
- let(:structure) { { a: String } }
55
-
56
- it { should be_false }
57
- it { config.should_not be_valid }
58
- end
59
-
60
- context "with a nested key that doesn't match the expected type" do
61
- let(:json) { '{ "a": { "b": 1 } }' }
62
- let(:structure) { { a: { b: String } } }
63
-
64
- it { should be_false }
65
- it { config.should_not be_valid }
66
- end
67
- end
68
- end