chef-api 0.8.0 → 0.10.7

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.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/lib/chef-api.rb +19 -20
  3. data/lib/chef-api/aclable.rb +35 -0
  4. data/lib/chef-api/authentication.rb +23 -25
  5. data/lib/chef-api/configurable.rb +14 -14
  6. data/lib/chef-api/connection.rb +68 -67
  7. data/lib/chef-api/defaults.rb +25 -24
  8. data/lib/chef-api/error_collection.rb +1 -1
  9. data/lib/chef-api/errors.rb +3 -3
  10. data/lib/chef-api/log.rb +7 -0
  11. data/lib/chef-api/multipart.rb +17 -17
  12. data/lib/chef-api/resource.rb +17 -15
  13. data/lib/chef-api/resources/base.rb +22 -22
  14. data/lib/chef-api/resources/client.rb +5 -3
  15. data/lib/chef-api/resources/collection_proxy.rb +4 -3
  16. data/lib/chef-api/resources/cookbook.rb +2 -2
  17. data/lib/chef-api/resources/cookbook_version.rb +1 -1
  18. data/lib/chef-api/resources/data_bag.rb +4 -4
  19. data/lib/chef-api/resources/data_bag_item.rb +2 -3
  20. data/lib/chef-api/resources/environment.rb +1 -1
  21. data/lib/chef-api/resources/group.rb +15 -0
  22. data/lib/chef-api/resources/node.rb +11 -8
  23. data/lib/chef-api/resources/organization.rb +2 -2
  24. data/lib/chef-api/resources/partial_search.rb +4 -4
  25. data/lib/chef-api/resources/principal.rb +1 -1
  26. data/lib/chef-api/resources/role.rb +2 -1
  27. data/lib/chef-api/resources/search.rb +6 -6
  28. data/lib/chef-api/resources/user.rb +3 -3
  29. data/lib/chef-api/util.rb +8 -8
  30. data/lib/chef-api/validator.rb +3 -3
  31. data/lib/chef-api/validators/base.rb +3 -3
  32. data/lib/chef-api/validators/required.rb +1 -1
  33. data/lib/chef-api/validators/type.rb +1 -1
  34. data/lib/chef-api/version.rb +1 -1
  35. metadata +25 -58
  36. data/.gitignore +0 -21
  37. data/.travis.yml +0 -18
  38. data/CHANGELOG.md +0 -63
  39. data/Gemfile +0 -12
  40. data/README.md +0 -352
  41. data/Rakefile +0 -11
  42. data/chef-api.gemspec +0 -25
  43. data/spec/integration/resources/client_spec.rb +0 -62
  44. data/spec/integration/resources/environment_spec.rb +0 -8
  45. data/spec/integration/resources/node_spec.rb +0 -8
  46. data/spec/integration/resources/partial_search_spec.rb +0 -23
  47. data/spec/integration/resources/role_spec.rb +0 -8
  48. data/spec/integration/resources/search_spec.rb +0 -21
  49. data/spec/integration/resources/user_spec.rb +0 -8
  50. data/spec/spec_helper.rb +0 -32
  51. data/spec/support/chef_server.rb +0 -198
  52. data/spec/support/cookbook.tar.gz +0 -0
  53. data/spec/support/shared/chef_api_resource.rb +0 -91
  54. data/spec/support/user.pem +0 -27
  55. data/spec/unit/authentication_spec.rb +0 -70
  56. data/spec/unit/defaults_spec.rb +0 -60
  57. data/spec/unit/errors_spec.rb +0 -294
  58. data/spec/unit/resources/base_spec.rb +0 -49
  59. data/spec/unit/resources/client_spec.rb +0 -53
  60. data/spec/unit/resources/connection_spec.rb +0 -53
@@ -59,6 +59,7 @@ module ChefAPI
59
59
  #
60
60
  def fetch(id)
61
61
  return nil unless exists?(id)
62
+
62
63
  cached(id) { klass.from_url(get(id), prefix) }
63
64
  end
64
65
 
@@ -76,7 +77,7 @@ module ChefAPI
76
77
  # true if the resource exists, false otherwise
77
78
  #
78
79
  def exists?(id)
79
- collection.has_key?(id.to_s)
80
+ collection.key?(id.to_s)
80
81
  end
81
82
 
82
83
  #
@@ -131,9 +132,9 @@ module ChefAPI
131
132
  def inspect
132
133
  objects = collection
133
134
  .map { |id, _| cached(id) || klass.new(klass.schema.primary_key => id) }
134
- .map { |object| object.to_s }
135
+ .map(&:to_s)
135
136
 
136
- "#<#{self.class.name} [#{objects.join(', ')}]>"
137
+ "#<#{self.class.name} [#{objects.join(", ")}]>"
137
138
  end
138
139
 
139
140
  private
@@ -5,7 +5,7 @@ module ChefAPI
5
5
  # of +cookbook_version+ objects that fully detail the layout of a cookbook.
6
6
  #
7
7
  class Resource::Cookbook < Resource::Base
8
- collection_path '/cookbooks'
8
+ collection_path "/cookbooks"
9
9
 
10
10
  schema do
11
11
  attribute :name, type: String, primary: true, required: true
@@ -13,7 +13,7 @@ module ChefAPI
13
13
 
14
14
  has_many :versions,
15
15
  class_name: CookbookVersion,
16
- rest_endpoint: '/?num_versions=all'
16
+ rest_endpoint: "/?num_versions=all"
17
17
 
18
18
  class << self
19
19
  def from_json(response, prefix = {})
@@ -1,6 +1,6 @@
1
1
  module ChefAPI
2
2
  class Resource::CookbookVersion < Resource::Base
3
- collection_path '/cookbooks/:cookbook'
3
+ collection_path "/cookbooks/:cookbook"
4
4
 
5
5
  schema do
6
6
  attribute :name, type: String, primary: true, required: true
@@ -1,6 +1,6 @@
1
1
  module ChefAPI
2
2
  class Resource::DataBag < Resource::Base
3
- collection_path '/data'
3
+ collection_path "/data"
4
4
 
5
5
  schema do
6
6
  attribute :name, type: String, primary: true, required: true
@@ -26,9 +26,9 @@ module ChefAPI
26
26
  # @return [Array<DataBagItem>]
27
27
  #
28
28
  def from_file(path, name = File.basename(path))
29
- path = File.expand_path(path)
29
+ path = File.expand_path(path)
30
30
 
31
- raise Error::FileNotFound.new(path: path) unless File.exists?(path)
31
+ raise Error::FileNotFound.new(path: path) unless File.exist?(path)
32
32
  raise Error::NotADirectory.new(path: path) unless File.directory?(path)
33
33
 
34
34
  raise ArgumentError unless File.directory?(path)
@@ -36,7 +36,7 @@ module ChefAPI
36
36
  bag = new(name: name)
37
37
 
38
38
  Util.fast_collect(Dir["#{path}/*.json"]) do |item|
39
- DataBagItem.from_file(item, bag)
39
+ Resource::DataBagItem.from_file(item, bag)
40
40
  end
41
41
  end
42
42
 
@@ -1,6 +1,6 @@
1
1
  module ChefAPI
2
2
  class Resource::DataBagItem < Resource::Base
3
- collection_path '/data/:bag'
3
+ collection_path "/data/:bag"
4
4
 
5
5
  schema do
6
6
  attribute :id, type: String, primary: true, required: true
@@ -28,11 +28,10 @@ module ChefAPI
28
28
  def initialize(attributes = {}, prefix = {}, bag = nil)
29
29
  @bag = bag || Resource::DataBag.fetch(prefix[:bag])
30
30
 
31
- id = attributes.delete(:id) || attributes.delete('id')
31
+ id = attributes.delete(:id) || attributes.delete("id")
32
32
  super({ id: id, data: attributes }, prefix)
33
33
  end
34
34
 
35
-
36
35
  #
37
36
  # Override the to_hash method to move data to the upper scope.
38
37
  #
@@ -1,6 +1,6 @@
1
1
  module ChefAPI
2
2
  class Resource::Environment < Resource::Base
3
- collection_path '/environments'
3
+ collection_path "/environments"
4
4
 
5
5
  schema do
6
6
  attribute :name, type: String, primary: true, required: true
@@ -0,0 +1,15 @@
1
+ module ChefAPI
2
+ class Resource::Group < Resource::Base
3
+ collection_path "/groups"
4
+
5
+ schema do
6
+ attribute :groupname, type: String, primary: true, required: true
7
+ attribute :name, type: String
8
+ attribute :orgname, type: String
9
+ attribute :actors, type: Array, default: []
10
+ attribute :users, type: Array, default: []
11
+ attribute :clients, type: Array, default: []
12
+ attribute :groups, type: Array, default: []
13
+ end
14
+ end
15
+ end
@@ -1,17 +1,20 @@
1
1
  module ChefAPI
2
2
  class Resource::Node < Resource::Base
3
- collection_path '/nodes'
3
+ include ChefAPI::AclAble
4
+ collection_path "/nodes"
4
5
 
5
6
  schema do
6
- attribute :name, type: String, primary: true, required: true
7
- attribute :automatic, type: Hash, default: {}
8
- attribute :default, type: Hash, default: {}
9
- attribute :normal, type: Hash, default: {}
10
- attribute :override, type: Hash, default: {}
11
- attribute :run_list, type: Array, default: []
7
+ attribute :name, type: String, primary: true, required: true
8
+ attribute :automatic, type: Hash, default: {}
9
+ attribute :default, type: Hash, default: {}
10
+ attribute :normal, type: Hash, default: {}
11
+ attribute :override, type: Hash, default: {}
12
+ attribute :run_list, type: Array, default: []
13
+ attribute :policy_name, type: String
14
+ attribute :policy_group, type: String
12
15
 
13
16
  # Enterprise Chef attributes
14
- attribute :chef_environment, type: String, default: '_default'
17
+ attribute :chef_environment, type: String, default: "_default"
15
18
  end
16
19
  end
17
20
  end
@@ -1,6 +1,6 @@
1
1
  module ChefAPI
2
2
  class Resource::Organization < Resource::Base
3
- collection_path '/organizations'
3
+ collection_path "/organizations"
4
4
 
5
5
  schema do
6
6
  attribute :name, type: String, primary: true, required: true
@@ -16,7 +16,7 @@ module ChefAPI
16
16
  ignore :billing_plan
17
17
  ignore :requester_id
18
18
  ignore :assigned_at
19
- ignore 'couchrest-type'
19
+ ignore "couchrest-type"
20
20
  end
21
21
  end
22
22
  end
@@ -1,6 +1,6 @@
1
1
  module ChefAPI
2
2
  class Resource::PartialSearch < Resource::Base
3
- collection_path '/search/:index'
3
+ collection_path "/search/:index"
4
4
 
5
5
  schema do
6
6
  attribute :total, type: Integer
@@ -24,19 +24,19 @@ module ChefAPI
24
24
  # @return [self]
25
25
  # the current resource
26
26
  #
27
- def query(index, keys, query = '*:*', options = {})
27
+ def query(index, keys, query = "*:*", options = {})
28
28
  return nil if index.nil?
29
29
 
30
30
  params = {}.tap do |o|
31
31
  o[:q] = query
32
32
  o[:rows] = options[:rows] || 1000
33
- o[:sort] = options[:sort] || 'X_CHEF_id_CHEF_X'
33
+ o[:sort] = options[:sort] || "X_CHEF_id_CHEF_X"
34
34
  o[:start] = options[:start] || 0
35
35
  end
36
36
 
37
37
  path = expanded_collection_path(index: index.to_s)
38
38
  response = connection.post(path, keys.to_json, params)
39
- response['rows'].map! { |row| row['data'] }
39
+ response["rows"].map! { |row| row["data"] }
40
40
  from_json(response, index: index.to_s)
41
41
  end
42
42
  end
@@ -1,6 +1,6 @@
1
1
  module ChefAPI
2
2
  class Resource::Principal < Resource::Base
3
- collection_path '/principals'
3
+ collection_path "/principals"
4
4
 
5
5
  schema do
6
6
  attribute :name, type: String, primary: true, required: true
@@ -1,6 +1,7 @@
1
1
  module ChefAPI
2
2
  class Resource::Role < Resource::Base
3
- collection_path '/roles'
3
+ include ChefAPI::AclAble
4
+ collection_path "/roles"
4
5
 
5
6
  schema do
6
7
  attribute :name, type: String, primary: true, required: true
@@ -1,6 +1,6 @@
1
1
  module ChefAPI
2
2
  class Resource::Search < Resource::Base
3
- collection_path '/search/:index'
3
+ collection_path "/search/:index"
4
4
 
5
5
  schema do
6
6
  attribute :total, type: Integer
@@ -22,22 +22,22 @@ module ChefAPI
22
22
  # @return [self]
23
23
  # the current resource
24
24
  #
25
- def query(index, query = '*:*', options = {})
25
+ def query(index, query = "*:*", options = {})
26
26
  return nil if index.nil?
27
27
 
28
28
  params = {}.tap do |o|
29
29
  o[:q] = query
30
30
  o[:rows] = options[:rows] || 1000
31
- o[:sort] = options[:sort] || 'X_CHEF_id_CHEF_X'
31
+ o[:sort] = options[:sort] || "X_CHEF_id_CHEF_X"
32
32
  o[:start] = options[:start] || 0
33
33
  end
34
34
 
35
35
  path = expanded_collection_path(index: index.to_s)
36
36
 
37
37
  response = if filter_result = options[:filter_result]
38
- connection.post(path, filter_result.to_json, params)
39
- else
40
- connection.get(path, params)
38
+ connection.post(path, filter_result.to_json, params)
39
+ else
40
+ connection.get(path, params)
41
41
  end
42
42
 
43
43
  from_json(response, index: index.to_s)
@@ -1,6 +1,6 @@
1
1
  module ChefAPI
2
2
  class Resource::User < Resource::Base
3
- collection_path '/users'
3
+ collection_path "/users"
4
4
 
5
5
  schema do
6
6
  flavor :enterprise do
@@ -38,7 +38,7 @@ module ChefAPI
38
38
  # HEC/EC returns a slightly different response than OSC/CZ
39
39
  if users.is_a?(Array)
40
40
  users.each do |info|
41
- name = URI.escape(info['user']['username'])
41
+ name = URI.escape(info["user"]["username"])
42
42
  response = connection.get("/users/#{name}")
43
43
  result = from_json(response, prefix)
44
44
 
@@ -75,7 +75,7 @@ module ChefAPI
75
75
  # the parsed JSON response from the server
76
76
  #
77
77
  def authenticate(options = {})
78
- connection.post('/authenticate_user', options.to_json)
78
+ connection.post("/authenticate_user", options.to_json)
79
79
  end
80
80
  end
81
81
  end
@@ -14,10 +14,10 @@ module ChefAPI
14
14
  def underscore(string)
15
15
  string
16
16
  .to_s
17
- .gsub(/::/, '/')
18
- .gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
19
- .gsub(/([a-z\d])([A-Z])/,'\1_\2')
20
- .tr('-', '_')
17
+ .gsub(/::/, "/")
18
+ .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
19
+ .gsub(/([a-z\d])([A-Z])/, '\1_\2')
20
+ .tr("-", "_")
21
21
  .downcase
22
22
  end
23
23
 
@@ -32,8 +32,8 @@ module ChefAPI
32
32
  def camelize(string)
33
33
  string
34
34
  .to_s
35
- .split('_')
36
- .map { |e| e.capitalize }
35
+ .split("_")
36
+ .map(&:capitalize)
37
37
  .join
38
38
  end
39
39
 
@@ -49,7 +49,7 @@ module ChefAPI
49
49
  length = options[:length] || 30
50
50
 
51
51
  if string.length > length
52
- string[0..length-3] + '...'
52
+ string[0..length - 3] + "..."
53
53
  else
54
54
  string
55
55
  end
@@ -77,7 +77,7 @@ module ChefAPI
77
77
  #
78
78
  def safe_read(path)
79
79
  path = File.expand_path(path)
80
- name = File.basename(path, '.*')
80
+ name = File.basename(path, ".*")
81
81
  contents = File.read(path)
82
82
 
83
83
  [name, contents]
@@ -1,8 +1,8 @@
1
1
  module ChefAPI
2
2
  module Validator
3
- autoload :Base, 'chef-api/validators/base'
4
- autoload :Required, 'chef-api/validators/required'
5
- autoload :Type, 'chef-api/validators/type'
3
+ autoload :Base, "chef-api/validators/base"
4
+ autoload :Required, "chef-api/validators/required"
5
+ autoload :Type, "chef-api/validators/type"
6
6
 
7
7
  #
8
8
  # Find a validator by the given key.
@@ -35,7 +35,7 @@ module ChefAPI
35
35
  # @return [Symbol]
36
36
  #
37
37
  def key
38
- name = self.class.name.split('::').last
38
+ name = self.class.name.split("::").last
39
39
  Util.underscore(name).to_sym
40
40
  end
41
41
 
@@ -47,7 +47,7 @@ module ChefAPI
47
47
  # the parent resource to validate against
48
48
  #
49
49
  def validate(resource)
50
- raise Error::AbstractMethod.new(method: 'Validators::Base#validate')
50
+ raise Error::AbstractMethod.new(method: "Validators::Base#validate")
51
51
  end
52
52
 
53
53
  #
@@ -76,7 +76,7 @@ module ChefAPI
76
76
  # @return [String]
77
77
  #
78
78
  def classname
79
- @classname ||= self.class.name.split('::')[1..-1].join('::')
79
+ @classname ||= self.class.name.split("::")[1..-1].join("::")
80
80
  end
81
81
  end
82
82
  end
@@ -4,7 +4,7 @@ module ChefAPI
4
4
  value = resource._attributes[attribute]
5
5
 
6
6
  if value.to_s.strip.empty?
7
- resource.errors.add(attribute, 'must be present')
7
+ resource.errors.add(attribute, "must be present")
8
8
  end
9
9
  end
10
10
  end
@@ -15,7 +15,7 @@ module ChefAPI
15
15
  value = resource._attributes[attribute]
16
16
 
17
17
  if value && !types.any? { |type| value.is_a?(type) }
18
- short_name = type.to_s.split('::').last
18
+ short_name = types.to_s.split("::").last
19
19
  resource.errors.add(attribute, "must be a kind of #{short_name}")
20
20
  end
21
21
  end
@@ -1,3 +1,3 @@
1
1
  module ChefAPI
2
- VERSION = '0.8.0'
2
+ VERSION = "0.10.7".freeze
3
3
  end
metadata CHANGED
@@ -1,29 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.10.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seth Vargo
8
+ - Tim Smith
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2018-03-02 00:00:00.000000000 Z
12
+ date: 2020-06-12 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: logify
15
+ name: mixlib-log
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
- - - "~>"
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '1'
21
+ - - "<"
18
22
  - !ruby/object:Gem::Version
19
- version: '0.1'
23
+ version: '4'
20
24
  type: :runtime
21
25
  prerelease: false
22
26
  version_requirements: !ruby/object:Gem::Requirement
23
27
  requirements:
24
- - - "~>"
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ version: '1'
31
+ - - "<"
25
32
  - !ruby/object:Gem::Version
26
- version: '0.1'
33
+ version: '4'
27
34
  - !ruby/object:Gem::Dependency
28
35
  name: mime-types
29
36
  requirement: !ruby/object:Gem::Requirement
@@ -38,22 +45,17 @@ dependencies:
38
45
  - - ">="
39
46
  - !ruby/object:Gem::Version
40
47
  version: '0'
41
- description: A tiny Chef API client with minimal dependencies
48
+ description: A tiny Chef Infra API client with minimal dependencies
42
49
  email:
43
50
  - sethvargo@gmail.com
51
+ - tsmith84@gmail.com
44
52
  executables: []
45
53
  extensions: []
46
54
  extra_rdoc_files: []
47
55
  files:
48
- - ".gitignore"
49
- - ".travis.yml"
50
- - CHANGELOG.md
51
- - Gemfile
52
56
  - LICENSE
53
- - README.md
54
- - Rakefile
55
- - chef-api.gemspec
56
57
  - lib/chef-api.rb
58
+ - lib/chef-api/aclable.rb
57
59
  - lib/chef-api/authentication.rb
58
60
  - lib/chef-api/boolean.rb
59
61
  - lib/chef-api/configurable.rb
@@ -61,6 +63,7 @@ files:
61
63
  - lib/chef-api/defaults.rb
62
64
  - lib/chef-api/error_collection.rb
63
65
  - lib/chef-api/errors.rb
66
+ - lib/chef-api/log.rb
64
67
  - lib/chef-api/multipart.rb
65
68
  - lib/chef-api/resource.rb
66
69
  - lib/chef-api/resources/base.rb
@@ -71,6 +74,7 @@ files:
71
74
  - lib/chef-api/resources/data_bag.rb
72
75
  - lib/chef-api/resources/data_bag_item.rb
73
76
  - lib/chef-api/resources/environment.rb
77
+ - lib/chef-api/resources/group.rb
74
78
  - lib/chef-api/resources/node.rb
75
79
  - lib/chef-api/resources/organization.rb
76
80
  - lib/chef-api/resources/partial_search.rb
@@ -85,24 +89,6 @@ files:
85
89
  - lib/chef-api/validators/required.rb
86
90
  - lib/chef-api/validators/type.rb
87
91
  - lib/chef-api/version.rb
88
- - spec/integration/resources/client_spec.rb
89
- - spec/integration/resources/environment_spec.rb
90
- - spec/integration/resources/node_spec.rb
91
- - spec/integration/resources/partial_search_spec.rb
92
- - spec/integration/resources/role_spec.rb
93
- - spec/integration/resources/search_spec.rb
94
- - spec/integration/resources/user_spec.rb
95
- - spec/spec_helper.rb
96
- - spec/support/chef_server.rb
97
- - spec/support/cookbook.tar.gz
98
- - spec/support/shared/chef_api_resource.rb
99
- - spec/support/user.pem
100
- - spec/unit/authentication_spec.rb
101
- - spec/unit/defaults_spec.rb
102
- - spec/unit/errors_spec.rb
103
- - spec/unit/resources/base_spec.rb
104
- - spec/unit/resources/client_spec.rb
105
- - spec/unit/resources/connection_spec.rb
106
92
  - templates/errors/abstract_method.erb
107
93
  - templates/errors/cannot_regenerate_key.erb
108
94
  - templates/errors/chef_api_error.erb
@@ -124,9 +110,9 @@ files:
124
110
  - templates/errors/resource_not_found.erb
125
111
  - templates/errors/resource_not_mutable.erb
126
112
  - templates/errors/unknown_attribute.erb
127
- homepage: https://github.com/sethvargo/chef-api
113
+ homepage: https://github.com/chef/chef-api
128
114
  licenses:
129
- - Apache 2.0
115
+ - Apache-2.0
130
116
  metadata: {}
131
117
  post_install_message:
132
118
  rdoc_options: []
@@ -136,34 +122,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
136
122
  requirements:
137
123
  - - ">="
138
124
  - !ruby/object:Gem::Version
139
- version: '2.1'
125
+ version: '2.3'
140
126
  required_rubygems_version: !ruby/object:Gem::Requirement
141
127
  requirements:
142
128
  - - ">="
143
129
  - !ruby/object:Gem::Version
144
130
  version: '0'
145
131
  requirements: []
146
- rubyforge_project:
147
- rubygems_version: 2.7.5
132
+ rubygems_version: 3.0.3
148
133
  signing_key:
149
134
  specification_version: 4
150
- summary: A Chef API client in Ruby
151
- test_files:
152
- - spec/integration/resources/client_spec.rb
153
- - spec/integration/resources/environment_spec.rb
154
- - spec/integration/resources/node_spec.rb
155
- - spec/integration/resources/partial_search_spec.rb
156
- - spec/integration/resources/role_spec.rb
157
- - spec/integration/resources/search_spec.rb
158
- - spec/integration/resources/user_spec.rb
159
- - spec/spec_helper.rb
160
- - spec/support/chef_server.rb
161
- - spec/support/cookbook.tar.gz
162
- - spec/support/shared/chef_api_resource.rb
163
- - spec/support/user.pem
164
- - spec/unit/authentication_spec.rb
165
- - spec/unit/defaults_spec.rb
166
- - spec/unit/errors_spec.rb
167
- - spec/unit/resources/base_spec.rb
168
- - spec/unit/resources/client_spec.rb
169
- - spec/unit/resources/connection_spec.rb
135
+ summary: A Chef Infra API client in Ruby
136
+ test_files: []