chef-zero 4.8.0 → 4.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +8 -4
  3. data/Rakefile +20 -10
  4. data/bin/chef-zero +12 -12
  5. data/chef-zero.gemspec +24 -24
  6. data/lib/chef_zero.rb +1 -1
  7. data/lib/chef_zero/chef_data/acl_path.rb +16 -16
  8. data/lib/chef_zero/chef_data/cookbook_data.rb +24 -24
  9. data/lib/chef_zero/chef_data/data_normalizer.rb +120 -120
  10. data/lib/chef_zero/chef_data/default_creator.rb +145 -145
  11. data/lib/chef_zero/data_store/data_already_exists_error.rb +1 -1
  12. data/lib/chef_zero/data_store/data_not_found_error.rb +2 -2
  13. data/lib/chef_zero/data_store/default_facade.rb +5 -5
  14. data/lib/chef_zero/data_store/interface_v1.rb +1 -1
  15. data/lib/chef_zero/data_store/interface_v2.rb +1 -1
  16. data/lib/chef_zero/data_store/memory_store.rb +4 -4
  17. data/lib/chef_zero/data_store/memory_store_v2.rb +8 -8
  18. data/lib/chef_zero/data_store/raw_file_store.rb +10 -10
  19. data/lib/chef_zero/data_store/v1_to_v2_adapter.rb +9 -9
  20. data/lib/chef_zero/data_store/v2_to_v1_adapter.rb +5 -5
  21. data/lib/chef_zero/endpoints/acl_endpoint.rb +6 -6
  22. data/lib/chef_zero/endpoints/acls_endpoint.rb +5 -5
  23. data/lib/chef_zero/endpoints/actor_default_key_endpoint.rb +1 -1
  24. data/lib/chef_zero/endpoints/actor_endpoint.rb +20 -20
  25. data/lib/chef_zero/endpoints/actor_key_endpoint.rb +1 -1
  26. data/lib/chef_zero/endpoints/actor_keys_endpoint.rb +5 -6
  27. data/lib/chef_zero/endpoints/actors_endpoint.rb +12 -12
  28. data/lib/chef_zero/endpoints/authenticate_user_endpoint.rb +10 -10
  29. data/lib/chef_zero/endpoints/container_endpoint.rb +4 -4
  30. data/lib/chef_zero/endpoints/containers_endpoint.rb +3 -3
  31. data/lib/chef_zero/endpoints/cookbook_artifact_endpoint.rb +1 -1
  32. data/lib/chef_zero/endpoints/cookbook_artifact_identifier_endpoint.rb +1 -1
  33. data/lib/chef_zero/endpoints/cookbook_artifacts_endpoint.rb +1 -1
  34. data/lib/chef_zero/endpoints/cookbook_endpoint.rb +5 -5
  35. data/lib/chef_zero/endpoints/cookbook_version_endpoint.rb +20 -16
  36. data/lib/chef_zero/endpoints/cookbooks_base.rb +13 -13
  37. data/lib/chef_zero/endpoints/cookbooks_endpoint.rb +4 -4
  38. data/lib/chef_zero/endpoints/data_bag_endpoint.rb +12 -12
  39. data/lib/chef_zero/endpoints/data_bag_item_endpoint.rb +6 -6
  40. data/lib/chef_zero/endpoints/data_bags_endpoint.rb +5 -5
  41. data/lib/chef_zero/endpoints/dummy_endpoint.rb +0 -2
  42. data/lib/chef_zero/endpoints/environment_cookbook_endpoint.rb +6 -6
  43. data/lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb +16 -16
  44. data/lib/chef_zero/endpoints/environment_cookbooks_endpoint.rb +6 -6
  45. data/lib/chef_zero/endpoints/environment_endpoint.rb +3 -3
  46. data/lib/chef_zero/endpoints/environment_nodes_endpoint.rb +6 -6
  47. data/lib/chef_zero/endpoints/environment_recipes_endpoint.rb +4 -4
  48. data/lib/chef_zero/endpoints/environment_role_endpoint.rb +8 -8
  49. data/lib/chef_zero/endpoints/file_store_file_endpoint.rb +2 -2
  50. data/lib/chef_zero/endpoints/group_endpoint.rb +4 -4
  51. data/lib/chef_zero/endpoints/groups_endpoint.rb +3 -3
  52. data/lib/chef_zero/endpoints/license_endpoint.rb +5 -5
  53. data/lib/chef_zero/endpoints/node_endpoint.rb +3 -4
  54. data/lib/chef_zero/endpoints/node_identifiers_endpoint.rb +7 -7
  55. data/lib/chef_zero/endpoints/nodes_endpoint.rb +3 -4
  56. data/lib/chef_zero/endpoints/not_found_endpoint.rb +2 -2
  57. data/lib/chef_zero/endpoints/organization_association_request_endpoint.rb +2 -2
  58. data/lib/chef_zero/endpoints/organization_association_requests_endpoint.rb +6 -6
  59. data/lib/chef_zero/endpoints/organization_authenticate_user_endpoint.rb +8 -8
  60. data/lib/chef_zero/endpoints/organization_endpoint.rb +10 -10
  61. data/lib/chef_zero/endpoints/organization_user_base.rb +2 -2
  62. data/lib/chef_zero/endpoints/organization_user_default_key_endpoint.rb +1 -1
  63. data/lib/chef_zero/endpoints/organization_user_endpoint.rb +5 -5
  64. data/lib/chef_zero/endpoints/organization_user_key_endpoint.rb +2 -2
  65. data/lib/chef_zero/endpoints/organization_user_keys_endpoint.rb +1 -1
  66. data/lib/chef_zero/endpoints/organization_users_endpoint.rb +12 -12
  67. data/lib/chef_zero/endpoints/organization_validator_key_endpoint.rb +6 -6
  68. data/lib/chef_zero/endpoints/organizations_endpoint.rb +12 -13
  69. data/lib/chef_zero/endpoints/policies_endpoint.rb +2 -2
  70. data/lib/chef_zero/endpoints/policy_endpoint.rb +1 -1
  71. data/lib/chef_zero/endpoints/policy_group_endpoint.rb +6 -6
  72. data/lib/chef_zero/endpoints/policy_group_policy_endpoint.rb +3 -4
  73. data/lib/chef_zero/endpoints/policy_groups_endpoint.rb +4 -4
  74. data/lib/chef_zero/endpoints/policy_revision_endpoint.rb +1 -1
  75. data/lib/chef_zero/endpoints/policy_revisions_endpoint.rb +1 -1
  76. data/lib/chef_zero/endpoints/principal_endpoint.rb +15 -15
  77. data/lib/chef_zero/endpoints/rest_list_endpoint.rb +4 -4
  78. data/lib/chef_zero/endpoints/rest_object_endpoint.rb +4 -4
  79. data/lib/chef_zero/endpoints/role_endpoint.rb +3 -3
  80. data/lib/chef_zero/endpoints/role_environments_endpoint.rb +3 -3
  81. data/lib/chef_zero/endpoints/sandbox_endpoint.rb +8 -8
  82. data/lib/chef_zero/endpoints/sandboxes_endpoint.rb +9 -9
  83. data/lib/chef_zero/endpoints/search_endpoint.rb +51 -49
  84. data/lib/chef_zero/endpoints/searches_endpoint.rb +2 -2
  85. data/lib/chef_zero/endpoints/server_api_version_endpoint.rb +2 -2
  86. data/lib/chef_zero/endpoints/system_recovery_endpoint.rb +8 -8
  87. data/lib/chef_zero/endpoints/user_association_request_endpoint.rb +12 -12
  88. data/lib/chef_zero/endpoints/user_association_requests_count_endpoint.rb +4 -4
  89. data/lib/chef_zero/endpoints/user_association_requests_endpoint.rb +4 -4
  90. data/lib/chef_zero/endpoints/user_organizations_endpoint.rb +5 -5
  91. data/lib/chef_zero/endpoints/version_endpoint.rb +1 -1
  92. data/lib/chef_zero/log.rb +1 -1
  93. data/lib/chef_zero/rest_base.rb +25 -25
  94. data/lib/chef_zero/rest_request.rb +11 -11
  95. data/lib/chef_zero/rest_router.rb +30 -30
  96. data/lib/chef_zero/rspec.rb +33 -33
  97. data/lib/chef_zero/server.rb +188 -189
  98. data/lib/chef_zero/socketless_server_map.rb +2 -3
  99. data/lib/chef_zero/solr/query/binary_operator.rb +8 -8
  100. data/lib/chef_zero/solr/query/phrase.rb +1 -1
  101. data/lib/chef_zero/solr/query/range_query.rb +2 -2
  102. data/lib/chef_zero/solr/query/regexpable_query.rb +1 -0
  103. data/lib/chef_zero/solr/query/term.rb +5 -5
  104. data/lib/chef_zero/solr/query/unary_operator.rb +4 -4
  105. data/lib/chef_zero/solr/solr_doc.rb +4 -4
  106. data/lib/chef_zero/solr/solr_parser.rb +34 -33
  107. data/lib/chef_zero/version.rb +1 -1
  108. data/spec/run_oc_pedant.rb +61 -60
  109. data/spec/search_spec.rb +11 -11
  110. data/spec/server_spec.rb +35 -35
  111. data/spec/socketless_server_map_spec.rb +1 -3
  112. data/spec/support/oc_pedant.rb +20 -21
  113. metadata +2 -2
@@ -16,8 +16,8 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require 'thread'
20
- require 'singleton'
19
+ require "thread"
20
+ require "singleton"
21
21
 
22
22
  module ChefZero
23
23
 
@@ -89,4 +89,3 @@ module ChefZero
89
89
 
90
90
  end
91
91
  end
92
-
@@ -18,13 +18,13 @@ module ChefZero
18
18
 
19
19
  def matches_doc?(doc)
20
20
  case @operator
21
- when 'AND'
21
+ when "AND"
22
22
  left.matches_doc?(doc) && right.matches_doc?(doc)
23
- when 'OR'
23
+ when "OR"
24
24
  left.matches_doc?(doc) || right.matches_doc?(doc)
25
- when '^'
25
+ when "^"
26
26
  left.matches_doc?(doc)
27
- when ':'
27
+ when ":"
28
28
  if left.respond_to?(:literal_string) && left.literal_string
29
29
  values = doc[left.literal_string]
30
30
  else
@@ -36,13 +36,13 @@ module ChefZero
36
36
 
37
37
  def matches_values?(values)
38
38
  case @operator
39
- when 'AND'
39
+ when "AND"
40
40
  left.matches_values?(values) && right.matches_values?(values)
41
- when 'OR'
41
+ when "OR"
42
42
  left.matches_values?(values) || right.matches_values?(values)
43
- when '^'
43
+ when "^"
44
44
  left.matches_values?(values)
45
- when ':'
45
+ when ":"
46
46
  raise ": does not work inside a : or term"
47
47
  end
48
48
  end
@@ -1,4 +1,4 @@
1
- require 'chef_zero/solr/query/regexpable_query'
1
+ require "chef_zero/solr/query/regexpable_query"
2
2
 
3
3
  module ChefZero
4
4
  module Solr
@@ -15,7 +15,7 @@ module ChefZero
15
15
 
16
16
  def matches_values?(values)
17
17
  values.any? do |value|
18
- unless @from == '*'
18
+ unless @from == "*"
19
19
  case @from <=> value
20
20
  when -1
21
21
  return false
@@ -23,7 +23,7 @@ module ChefZero
23
23
  return false if !@from_inclusive
24
24
  end
25
25
  end
26
- unless @to == '*'
26
+ unless @to == "*"
27
27
  case value <=> @to
28
28
  when 1
29
29
  return false
@@ -16,6 +16,7 @@ module ChefZero
16
16
  def matches_doc?(doc)
17
17
  matches_values?(doc[DEFAULT_FIELD])
18
18
  end
19
+
19
20
  def matches_values?(values)
20
21
  values.any? { |value| !@regexp.match(value).nil? }
21
22
  end
@@ -1,4 +1,4 @@
1
- require 'chef_zero/solr/query/regexpable_query'
1
+ require "chef_zero/solr/query/regexpable_query"
2
2
 
3
3
  module ChefZero
4
4
  module Solr
@@ -11,19 +11,19 @@ module ChefZero
11
11
  regexp_string = ""
12
12
  index = 0
13
13
  while index < term.length
14
- if term[index] == '*'
14
+ if term[index] == "*"
15
15
  regexp_string << "#{WORD_CHARACTER}*"
16
16
  literal_string = nil
17
17
  index += 1
18
- elsif term[index] == '?'
18
+ elsif term[index] == "?"
19
19
  regexp_string << WORD_CHARACTER
20
20
  literal_string = nil
21
21
  index += 1
22
- elsif term[index] == '~'
22
+ elsif term[index] == "~"
23
23
  raise "~ unsupported"
24
24
  else
25
25
  if term[index] == '\\'
26
- index = index+1
26
+ index = index + 1
27
27
  if index >= term.length
28
28
  raise "Backslash at end of string '#{term}'"
29
29
  end
@@ -16,9 +16,9 @@ module ChefZero
16
16
 
17
17
  def matches_doc?(doc)
18
18
  case @operator
19
- when '-', 'NOT'
19
+ when "-", "NOT"
20
20
  !operand.matches_doc?(doc)
21
- when '+'
21
+ when "+"
22
22
  # TODO This operator uses relevance to eliminate other, unrelated
23
23
  # expressions. +a OR b means "if it has b but not a, don't return it"
24
24
  raise "+ not supported yet, because it is hard."
@@ -27,9 +27,9 @@ module ChefZero
27
27
 
28
28
  def matches_values?(values)
29
29
  case @operator
30
- when '-', 'NOT'
30
+ when "-", "NOT"
31
31
  !operand.matches_values?(values)
32
- when '+'
32
+ when "+"
33
33
  # TODO This operator uses relevance to eliminate other, unrelated
34
34
  # expressions. +a OR b means "if it has b but not a, don't return it"
35
35
  raise "+ not supported yet, because it is hard."
@@ -15,12 +15,12 @@ module ChefZero
15
15
  def matching_values(&block)
16
16
  result = []
17
17
  key_values(nil, @json) do |key, value|
18
- if block.call(key)
18
+ if yield(key)
19
19
  result << value.to_s
20
20
  end
21
21
  end
22
22
  # Handle manufactured value(s)
23
- if block.call('X_CHEF_id_CHEF_X')
23
+ if yield("X_CHEF_id_CHEF_X")
24
24
  result << @id.to_s
25
25
  end
26
26
 
@@ -32,7 +32,7 @@ module ChefZero
32
32
  def key_values(key_so_far, value, &block)
33
33
  if value.is_a?(Hash)
34
34
  value.each_pair do |child_key, child_value|
35
- block.call(child_key, child_value.to_s)
35
+ yield(child_key, child_value.to_s)
36
36
  if key_so_far
37
37
  new_key = "#{key_so_far}_#{child_key}"
38
38
  key_values(new_key, child_value, &block)
@@ -45,7 +45,7 @@ module ChefZero
45
45
  key_values(key_so_far, child_value, &block)
46
46
  end
47
47
  else
48
- block.call(key_so_far || 'text', value.to_s)
48
+ yield(key_so_far || "text", value.to_s)
49
49
  end
50
50
  end
51
51
  end
@@ -1,9 +1,9 @@
1
- require 'chef_zero/solr/query/binary_operator'
2
- require 'chef_zero/solr/query/unary_operator'
3
- require 'chef_zero/solr/query/term'
4
- require 'chef_zero/solr/query/phrase'
5
- require 'chef_zero/solr/query/range_query'
6
- require 'chef_zero/solr/query/subquery'
1
+ require "chef_zero/solr/query/binary_operator"
2
+ require "chef_zero/solr/query/unary_operator"
3
+ require "chef_zero/solr/query/term"
4
+ require "chef_zero/solr/query/phrase"
5
+ require "chef_zero/solr/query/range_query"
6
+ require "chef_zero/solr/query/subquery"
7
7
 
8
8
  module ChefZero
9
9
  module Solr
@@ -40,19 +40,20 @@ module ChefZero
40
40
  # Operators
41
41
  operator = peek_operator_token
42
42
  if operator
43
- @index+=operator.length
43
+ @index += operator.length
44
44
  operator
45
45
  else
46
46
  # Everything that isn't whitespace or an operator, is part of a term
47
47
  # (characters plus backslashed escaped characters)
48
48
  start_index = @index
49
- begin
49
+ loop do
50
50
  if @query_string[@index] == '\\'
51
- @index+=1
51
+ @index += 1
52
52
  end
53
- @index+=1 if !eof?
54
- end while !eof? && peek_term_token
55
- @query_string[start_index..@index-1]
53
+ @index += 1 if !eof?
54
+ break if eof? || !peek_term_token
55
+ end
56
+ @query_string[start_index..@index - 1]
56
57
  end
57
58
  end
58
59
 
@@ -66,15 +67,15 @@ module ChefZero
66
67
  def peek_term_token
67
68
  return nil if @query_string[@index] =~ /\s/
68
69
  op = peek_operator_token
69
- return !op || op == '-'
70
+ return !op || op == "-"
70
71
  end
71
72
 
72
73
  def peek_operator_token
73
- if ['"', '+', '-', '!', '(', ')', '{', '}', '[', ']', '^', ':'].include?(@query_string[@index])
74
+ if ['"', "+", "-", "!", "(", ")", "{", "}", "[", "]", "^", ":"].include?(@query_string[@index])
74
75
  return @query_string[@index]
75
76
  else
76
- result = @query_string[@index..@index+1]
77
- if ['&&', '||'].include?(result)
77
+ result = @query_string[@index..@index + 1]
78
+ if ["&&", "||"].include?(result)
78
79
  return result
79
80
  end
80
81
  end
@@ -91,19 +92,19 @@ module ChefZero
91
92
  # Expression is over when we hit a close paren or eof
92
93
  # (peek_token has the side effect of skipping whitespace for us, so we
93
94
  # really know if we're at eof or not)
94
- until peek_token == ')' || eof?
95
+ until peek_token == ")" || eof?
95
96
  operator = peek_token
96
97
  if binary_operator?(operator)
97
98
  next_token
98
99
  else
99
100
  # If 2 terms are next to each other, the default operator is OR
100
- operator = 'OR'
101
+ operator = "OR"
101
102
  end
102
103
  next_expression = read_single_expression
103
104
 
104
105
  # Build the operator, taking precedence into account
105
106
  if result.is_a?(Query::BinaryOperator) &&
106
- binary_operator_precedence(operator) > binary_operator_precedence(result.operator)
107
+ binary_operator_precedence(operator) > binary_operator_precedence(result.operator)
107
108
  # a+b*c -> a+(b*c)
108
109
  new_right = Query::BinaryOperator.new(result.right, operator, next_expression)
109
110
  result = Query::BinaryOperator.new(result.left, result.operator, new_right)
@@ -142,7 +143,7 @@ module ChefZero
142
143
  Query::Phrase.new(phrase_terms)
143
144
 
144
145
  # If it's the start of a range query, build that
145
- elsif token == '{' || token == '['
146
+ elsif token == "{" || token == "["
146
147
  left = next_token
147
148
  parse_error(left, "Expected left term in range query") if !left
148
149
  to = next_token
@@ -150,17 +151,17 @@ module ChefZero
150
151
  right = next_token
151
152
  parse_error(right, "Expected left term in range query") if !right
152
153
  end_range = next_token
153
- parse_error(right, "Expected end range '#{end_range}") if !['}', ']'].include?(end_range)
154
- Query::RangeQuery.new(left, right, token == '[', end_range == ']')
154
+ parse_error(right, "Expected end range '#{end_range}") if !["}", "]"].include?(end_range)
155
+ Query::RangeQuery.new(left, right, token == "[", end_range == "]")
155
156
 
156
- elsif token == '('
157
+ elsif token == "("
157
158
  subquery = read_expression
158
159
  close_paren = next_token
159
- parse_error(close_paren, "Expected ')'") if close_paren != ')'
160
+ parse_error(close_paren, "Expected ')'") if close_paren != ")"
160
161
  Query::Subquery.new(subquery)
161
162
 
162
163
  # If it's the end of a closure, raise an exception
163
- elsif ['}',']',')'].include?(token)
164
+ elsif ["}", "]", ")"].include?(token)
164
165
  parse_error(token, "Unexpected end paren")
165
166
 
166
167
  # If it's a binary operator, raise an exception
@@ -170,7 +171,7 @@ module ChefZero
170
171
  # Otherwise it's a term.
171
172
  else
172
173
  term = Query::Term.new(token)
173
- if peek_token == ':'
174
+ if peek_token == ":"
174
175
  Query::BinaryOperator.new(term, next_token, read_single_expression)
175
176
  else
176
177
  term
@@ -179,27 +180,27 @@ module ChefZero
179
180
  end
180
181
 
181
182
  def unary_operator?(token)
182
- [ 'NOT', '+', '-' ].include?(token)
183
+ [ "NOT", "+", "-" ].include?(token)
183
184
  end
184
185
 
185
186
  def binary_operator?(token)
186
- [ 'AND', 'OR', '^', ':'].include?(token)
187
+ [ "AND", "OR", "^", ":"].include?(token)
187
188
  end
188
189
 
189
190
  def binary_operator_precedence(token)
190
191
  case token
191
- when '^'
192
+ when "^"
192
193
  4
193
- when ':'
194
+ when ":"
194
195
  3
195
- when 'AND'
196
+ when "AND"
196
197
  2
197
- when 'OR'
198
+ when "OR"
198
199
  1
199
200
  end
200
201
  end
201
202
 
202
- DEFAULT_FIELD = 'text'
203
+ DEFAULT_FIELD = "text"
203
204
  end
204
205
  end
205
206
  end
@@ -1,3 +1,3 @@
1
1
  module ChefZero
2
- VERSION = '4.8.0'
2
+ VERSION = "4.9.0"
3
3
  end
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
- require 'bundler'
3
- require 'bundler/setup'
2
+ require "bundler"
3
+ require "bundler/setup"
4
4
 
5
- require 'chef_zero/server'
6
- require 'rspec/core'
5
+ require "chef_zero/server"
6
+ require "rspec/core"
7
7
 
8
8
  # This file runs oc-chef-pedant specs and is invoked by `rake pedant`
9
9
  # and other Rake tasks. Run `rake -T` to list tasks.
@@ -29,56 +29,56 @@ DEFAULT_SERVER_OPTIONS = {
29
29
  DEFAULT_LOG_LEVEL = :warn
30
30
 
31
31
  def log_level
32
- return ENV['LOG_LEVEL'].downcase.to_sym if ENV['LOG_LEVEL']
33
- return :debug if ENV['DEBUG']
32
+ return ENV["LOG_LEVEL"].downcase.to_sym if ENV["LOG_LEVEL"]
33
+ return :debug if ENV["DEBUG"]
34
34
  DEFAULT_LOG_LEVEL
35
35
  end
36
36
 
37
- def start_chef_server(opts={})
37
+ def start_chef_server(opts = {})
38
38
  opts = DEFAULT_SERVER_OPTIONS.merge(opts)
39
39
  opts[:log_level] = log_level
40
40
 
41
- ChefZero::Server.new(opts).tap {|server| server.start_background }
41
+ ChefZero::Server.new(opts).tap { |server| server.start_background }
42
42
  end
43
43
 
44
44
  def start_cheffs_server(chef_repo_path)
45
- require 'chef/version'
46
- require 'chef/config'
47
- require 'chef/chef_fs/config'
48
- require 'chef/chef_fs/chef_fs_data_store'
49
- require 'chef_zero/server'
45
+ require "chef/version"
46
+ require "chef/config"
47
+ require "chef/chef_fs/config"
48
+ require "chef/chef_fs/chef_fs_data_store"
49
+ require "chef_zero/server"
50
50
 
51
51
  Dir.mkdir(chef_repo_path) if !File.exists?(chef_repo_path)
52
52
 
53
53
  # 11.6 and below had a bug where it couldn't create the repo children automatically
54
54
  if Chef::VERSION.to_f < 11.8
55
- %w(clients cookbooks data_bags environments nodes roles users).each do |child|
55
+ %w{clients cookbooks data_bags environments nodes roles users}.each do |child|
56
56
  Dir.mkdir("#{chef_repo_path}/#{child}") if !File.exists?("#{chef_repo_path}/#{child}")
57
57
  end
58
58
  end
59
59
 
60
60
  # Start the new server
61
- Chef::Config.repo_mode = 'hosted_everything'
61
+ Chef::Config.repo_mode = "hosted_everything"
62
62
  Chef::Config.chef_repo_path = chef_repo_path
63
63
  Chef::Config.versioned_cookbooks = true
64
64
  chef_fs_config = Chef::ChefFS::Config.new
65
65
 
66
66
  data_store = Chef::ChefFS::ChefFSDataStore.new(chef_fs_config.local_fs, chef_fs_config.chef_config)
67
- data_store = ChefZero::DataStore::V1ToV2Adapter.new(data_store, 'pedant-testorg')
68
- data_store = ChefZero::DataStore::DefaultFacade.new(data_store, 'pedant-testorg', false)
69
- data_store.create(%w(organizations pedant-testorg users), 'pivotal', '{}')
70
- data_store.set(%w(organizations pedant-testorg groups admins), '{ "users": [ "pivotal" ] }')
71
- data_store.set(%w(organizations pedant-testorg groups users), '{ "users": [ "pivotal" ] }')
67
+ data_store = ChefZero::DataStore::V1ToV2Adapter.new(data_store, "pedant-testorg")
68
+ data_store = ChefZero::DataStore::DefaultFacade.new(data_store, "pedant-testorg", false)
69
+ data_store.create(%w{organizations pedant-testorg users}, "pivotal", "{}")
70
+ data_store.set(%w{organizations pedant-testorg groups admins}, '{ "users": [ "pivotal" ] }')
71
+ data_store.set(%w{organizations pedant-testorg groups users}, '{ "users": [ "pivotal" ] }')
72
72
 
73
73
  start_chef_server(data_store: data_store)
74
74
  end
75
75
 
76
76
  def pedant_args_from_env
77
- args_from_env('PEDANT_OPTS')
77
+ args_from_env("PEDANT_OPTS")
78
78
  end
79
79
 
80
80
  def rspec_args_from_env
81
- args_from_env('RSPEC_OPTS')
81
+ args_from_env("RSPEC_OPTS")
82
82
  end
83
83
 
84
84
  def args_from_env(key)
@@ -89,17 +89,17 @@ end
89
89
  begin
90
90
  tmpdir = nil
91
91
  server =
92
- if ENV['FILE_STORE']
93
- require 'tmpdir'
94
- require 'chef_zero/data_store/raw_file_store'
92
+ if ENV["FILE_STORE"]
93
+ require "tmpdir"
94
+ require "chef_zero/data_store/raw_file_store"
95
95
  tmpdir = Dir.mktmpdir
96
96
  data_store = ChefZero::DataStore::RawFileStore.new(tmpdir, true)
97
97
  data_store = ChefZero::DataStore::DefaultFacade.new(data_store, false, false)
98
98
 
99
99
  start_chef_server(data_store: data_store)
100
100
 
101
- elsif ENV['CHEF_FS']
102
- require 'tmpdir'
101
+ elsif ENV["CHEF_FS"]
102
+ require "tmpdir"
103
103
  tmpdir = Dir.mktmpdir
104
104
  start_cheffs_server(tmpdir)
105
105
 
@@ -107,42 +107,43 @@ begin
107
107
  start_chef_server
108
108
  end
109
109
 
110
- require 'rspec/core'
111
- require 'pedant'
112
- require 'pedant/organization'
110
+ require "rspec/core"
111
+ require "pedant"
112
+ require "pedant/organization"
113
113
 
114
114
  # Pedant::Config.rerun = true
115
115
 
116
- Pedant.config.suite = 'api'
116
+ Pedant.config.suite = "api"
117
117
 
118
- Pedant.config[:config_file] = 'spec/support/oc_pedant.rb'
118
+ Pedant.config[:config_file] = "spec/support/oc_pedant.rb"
119
119
 
120
120
  # Because ChefFS can only ever have one user (pivotal), we can't do most of the
121
121
  # tests that involve multiple
122
- chef_fs_skips = if ENV['CHEF_FS']
123
- [ '--skip-association',
124
- '--skip-users',
125
- '--skip-organizations',
126
- '--skip-multiuser',
127
- '--skip-user-keys',
128
-
129
- # chef-zero has some non-removable quirks, such as the fact that files
130
- # with 255-character names cannot be stored in local mode. This is
131
- # reserved only for quirks that are *irrevocable* and by design; and
132
- # should barely be used at all.
133
- '--skip-chef-zero-quirks',
134
- ]
135
- else
136
- []
137
- end
138
- # The latest released Chef doesn't do ACLs, Cookbook Artifacts or Policies yet
139
- chef_fs_skips << '--skip-acl'
140
- chef_fs_skips << '--skip-cookbook-artifacts'
141
- chef_fs_skips << '--skip-policies'
122
+ chef_fs_skips = if ENV["CHEF_FS"]
123
+ [ "--skip-association",
124
+ "--skip-users",
125
+ "--skip-organizations",
126
+ "--skip-multiuser",
127
+ "--skip-user-keys",
128
+
129
+ # chef-zero has some non-removable quirks, such as the fact that files
130
+ # with 255-character names cannot be stored in local mode. This is
131
+ # reserved only for quirks that are *irrevocable* and by design; and
132
+ # should barely be used at all.
133
+ "--skip-chef-zero-quirks",
134
+ ]
135
+ else
136
+ []
137
+ end
142
138
 
143
- # Multi-keys don't work prior to 12.8
144
139
  unless Gem::Requirement.new(">= 12.8.0").satisfied_by?(Gem::Version.new(Chef::VERSION))
145
- chef_fs_skips << '--skip-keys'
140
+ chef_fs_skips << "--skip-keys"
141
+ end
142
+
143
+ unless Gem::Requirement.new(">= 12.13.19").satisfied_by?(Gem::Version.new(Chef::VERSION))
144
+ chef_fs_skips << "--skip-acl"
145
+ chef_fs_skips << "--skip-cookbook-artifacts"
146
+ chef_fs_skips << "--skip-policies"
146
147
  end
147
148
 
148
149
  # These things aren't supported by Chef Zero in any mode of operation:
@@ -153,30 +154,30 @@ begin
153
154
  # ...but we're not there yet
154
155
 
155
156
  # Chef Zero does not intend to support validation the way erchef does.
156
- '--skip-validation',
157
+ "--skip-validation",
157
158
 
158
159
  # Chef Zero does not intend to support authentication the way erchef does.
159
- '--skip-authentication',
160
+ "--skip-authentication",
160
161
 
161
162
  # Chef Zero does not intend to support authorization the way erchef does.
162
- '--skip-authorization',
163
+ "--skip-authorization",
163
164
 
164
165
  # Omnibus tests depend on erchef features that are specific to erchef and
165
166
  # bundled in the omnibus package. Currently the only test in this category
166
167
  # is for the search reindexing script.
167
- '--skip-omnibus',
168
+ "--skip-omnibus",
168
169
 
169
170
  # USAGs (user-specific association groups) are Authz groups that contain
170
171
  # only one user and represent that user's association with an org. Though
171
172
  # there are good reasons for them, they don't work well in practice and
172
173
  # only the manage console really uses them. Since Chef Zero + Manage is a
173
174
  # quite unusual configuration, we're ignoring them.
174
- '--skip-usags',
175
+ "--skip-usags",
175
176
 
176
177
  # Chef 12 features not yet 100% supported by Chef Zero
177
178
 
178
179
  # The universe endpoint is unlikely to ever make sense for Chef Zero
179
- '--skip-universe',
180
+ "--skip-universe",
180
181
  ]
181
182
 
182
183
  # The knife tests are very slow and don't give us a lot of extra coverage,