inspec 4.17.17 → 4.18.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1834559fb185f5d2d7477563f319605dc3111db8f598777c7d78d0e32b1fd11c
4
- data.tar.gz: 17b3b6a638f067cf14cdfa836940a1f620de0ae1310b7b3d45bf27b4d7a0552b
3
+ metadata.gz: f1383016cfa4899dc2457ba11f9f4a7e79e02b8cfa9c1fd9b2cba34e8b0a6aa4
4
+ data.tar.gz: f80b35ba96ed8a3954240b5a43611bd4e7822589bf1a52e761b75e3a9e144ab6
5
5
  SHA512:
6
- metadata.gz: 282930a4ab520be61d4d187aba3e7721a628882c0a6ded0f5df619ac681ed1f8951ffdc11212913066e77ebf9905e4d8ed47c4c275da0fada0a7e8c8a99c9704
7
- data.tar.gz: c1797f51e7552ea8930c50dfe3a25719430eb3221dd9d0799b32cf3e0a1290ae369c5df11c0d83a20e19a3928d176dade29a12fa904f8d5dd140164bb71bdd17
6
+ metadata.gz: 1c2b2cc5aea6c768acb57bd40cfd414c66ac56926dd8243e947e74aa748877a45ae778001c89d7d8a2f03abcc3ee165b2f525ebb664d0732f2d634a91498fbfe
7
+ data.tar.gz: cd5787223718099c19c4b3d4c85b726eee454305ea66ad7a0762674df7778efc64840d3f3db0debcaa4e1ec485202f9bebe8a2c9ad59c50361510133197efe7c
data/inspec.gemspec CHANGED
@@ -35,7 +35,7 @@ Gem::Specification.new do |spec|
35
35
  spec.add_dependency "json-schema", "~> 2.8"
36
36
  spec.add_dependency "method_source", "~> 0.8"
37
37
  spec.add_dependency "rubyzip", "~> 1.2", ">= 1.2.2"
38
- spec.add_dependency "rspec", "~> 3"
38
+ spec.add_dependency "rspec", ["~> 3.0", "< 3.9"] # TODO: Loosen - See https://github.com/inspec/inspec/issues/4575
39
39
  spec.add_dependency "rspec-its", "~> 1.2"
40
40
  spec.add_dependency "pry", "~> 0"
41
41
  spec.add_dependency "hashie", "~> 3.4"
@@ -222,16 +222,20 @@ module Inspec
222
222
 
223
223
  private
224
224
 
225
+ ALL_OF_OUR_REPORTERS = %w{json json-min json-rspec json-automate junit html yaml documentation progress}.freeze # BUT WHY?!?!
226
+
225
227
  def suppress_log_output?(opts)
226
228
  return false if opts["reporter"].nil?
227
229
 
228
- match = %w{json json-min json-rspec json-automate junit html yaml documentation progress} & opts["reporter"].keys
230
+ match = ALL_OF_OUR_REPORTERS & opts["reporter"].keys
231
+
229
232
  unless match.empty?
230
233
  match.each do |m|
231
234
  # check to see if we are outputting to stdout
232
235
  return true if opts["reporter"][m]["stdout"] == true
233
236
  end
234
237
  end
238
+
235
239
  false
236
240
  end
237
241
 
data/lib/inspec/cli.rb CHANGED
@@ -9,6 +9,7 @@ module Inspec # TODO: move this somewhere "better"?
9
9
  autoload :BaseCLI, "inspec/base_cli"
10
10
  autoload :Deprecation, "inspec/utils/deprecation"
11
11
  autoload :Exceptions, "inspec/exceptions"
12
+ autoload :EnvPrinter, "inspec/env_printer"
12
13
  autoload :Fetcher, "inspec/fetcher"
13
14
  autoload :Formatters, "inspec/formatters"
14
15
  autoload :Globals, "inspec/globals"
@@ -340,7 +341,15 @@ class Inspec::InspecCLI < Inspec::BaseCLI
340
341
  ui.exit res unless run_type == :ruby_eval
341
342
 
342
343
  # No InSpec tests - just print evaluation output.
343
- res = (res.respond_to?(:to_json) ? res.to_json : JSON.dump(res)) if o["reporter"]&.keys&.include?("json")
344
+ reporters = o["reporter"] || {}
345
+ if reporters.keys.include?("json")
346
+ res = if res.respond_to?(:to_json)
347
+ res.to_json
348
+ else
349
+ JSON.dump(res)
350
+ end
351
+ end
352
+
344
353
  puts res
345
354
  ui.exit Inspec::UI::EXIT_NORMAL
346
355
  rescue RuntimeError, Train::UserError => e
data/lib/inspec/dsl.rb CHANGED
@@ -34,6 +34,8 @@ module Inspec::DSL
34
34
  # resource.
35
35
 
36
36
  def self.method_missing_resource(backend, id, *arguments)
37
+ return unless backend
38
+
37
39
  begin
38
40
  require "inspec/resources/#{id}"
39
41
  rescue LoadError
@@ -259,6 +259,11 @@ module Inspec::Formatters
259
259
  example.delete(:id)
260
260
  example.delete(:profile_id)
261
261
  control[:results].push(example)
262
+
263
+ # Waiver data, if available, is internally stored on a per-result
264
+ # (that is, per-describe-block) basis, because that is the only granularity
265
+ # available to us in the RSpec report data structure which we use as a vehicle.
266
+ control[:waiver_data] ||= example[:waiver_data] || {}
262
267
  end
263
268
  end
264
269
  end
@@ -40,7 +40,6 @@ module Inspec::Reporters
40
40
  message: r[:message],
41
41
  exception: r[:exception],
42
42
  backtrace: r[:backtrace],
43
- waiver_data: r[:waiver_data],
44
43
  }.reject { |_k, v| v.nil? }
45
44
  }
46
45
  end
@@ -96,6 +95,7 @@ module Inspec::Reporters
96
95
  line: c[:source_location][:line],
97
96
  ref: c[:source_location][:ref],
98
97
  },
98
+ waiver_data: c[:waiver_data] || {},
99
99
  results: profile_results(c),
100
100
  }
101
101
  }
@@ -87,12 +87,14 @@ module Inspec::Resources
87
87
  active = raw_line == line
88
88
 
89
89
  # formats:
90
+ # deb "http://archive.ubuntu.com/ubuntu/" wily main restricted ...
90
91
  # deb http://archive.ubuntu.com/ubuntu/ wily main restricted ...
91
92
  # deb [trusted=yes] http://archive.ubuntu.com/ubuntu/ wily main restricted ...
92
93
 
93
94
  words = line.split
94
95
  words.delete 1 if words[1] && words[1].start_with?("[")
95
96
  type, url, distro, *components = words
97
+ url = url.delete('"') if url
96
98
 
97
99
  next if components.empty?
98
100
  next unless URI::HTTP === URI.parse(url)
@@ -17,38 +17,34 @@ module Inspec::Resources
17
17
  its('ipv6_cidrs') { should include '::1/128' }
18
18
  end
19
19
  EXAMPLE
20
+
20
21
  def initialize(iface)
21
22
  @iface = iface
22
-
23
- @interface_provider = nil
24
- if inspec.os.linux?
25
- @interface_provider = LinuxInterface.new(inspec)
26
- elsif inspec.os.windows?
27
- @interface_provider = WindowsInterface.new(inspec)
28
- else
29
- return skip_resource "The `interface` resource is not supported on your OS yet."
30
- end
31
23
  end
32
24
 
33
25
  def exists?
34
- !interface_info.nil? && !interface_info[:name].nil?
26
+ !!(interface_info && interface_info[:name])
35
27
  end
36
28
 
37
29
  def up?
38
- interface_info.nil? ? false : interface_info[:up]
30
+ !!(interface_info && interface_info[:up])
31
+ end
32
+
33
+ def name
34
+ interface_info[:name]
39
35
  end
40
36
 
41
37
  # returns link speed in Mbits/sec
42
38
  def speed
43
- interface_info.nil? ? nil : interface_info[:speed]
39
+ interface_info && interface_info[:speed]
44
40
  end
45
41
 
46
42
  def ipv4_address?
47
- !ipv4_addresses.nil? && !ipv4_addresses.empty?
43
+ ipv4_addresses && !ipv4_addresses.empty?
48
44
  end
49
45
 
50
46
  def ipv6_address?
51
- !ipv6_addresses.nil? && !ipv6_addresses.empty?
47
+ ipv6_addresses && !ipv6_addresses.empty?
52
48
  end
53
49
 
54
50
  def ipv4_addresses
@@ -72,11 +68,11 @@ module Inspec::Resources
72
68
  end
73
69
 
74
70
  def ipv4_cidrs
75
- interface_info.nil? ? [] : interface_info[:ipv4_addresses]
71
+ interface_info && Array(interface_info[:ipv4_addresses])
76
72
  end
77
73
 
78
74
  def ipv6_cidrs
79
- interface_info.nil? ? [] : interface_info[:ipv6_addresses]
75
+ interface_info && Array(interface_info[:ipv6_addresses])
80
76
  end
81
77
 
82
78
  def to_s
@@ -86,9 +82,11 @@ module Inspec::Resources
86
82
  private
87
83
 
88
84
  def interface_info
89
- return @cache if defined?(@cache)
90
-
91
- @cache = @interface_provider.interface_info(@iface) unless @interface_provider.nil?
85
+ @cache ||= begin
86
+ provider = LinuxInterface.new(inspec) if inspec.os.linux?
87
+ provider = WindowsInterface.new(inspec) if inspec.os.windows?
88
+ Hash(provider && provider.interface_info(@iface))
89
+ end
92
90
  end
93
91
  end
94
92
 
@@ -3,6 +3,7 @@ require "inspec/utils/convert"
3
3
  require "inspec/utils/filter"
4
4
  require "inspec/utils/simpleconfig"
5
5
  require "inspec/resources/powershell"
6
+ require "date"
6
7
 
7
8
  module Inspec::Resources
8
9
  # This file contains two resources, the `user` and `users` resource.
@@ -116,6 +117,24 @@ module Inspec::Resources
116
117
  # its('mindays') { should eq 0 }
117
118
  # its('maxdays') { should eq 99 }
118
119
  # its('warndays') { should eq 5 }
120
+ # its('passwordage') { should be >= 0 }
121
+ # its('maxbadpasswords') { should eq nil } // not yet supported on linux
122
+ # its('badpasswordattempts') { should eq 0 }
123
+ # end
124
+ # describe user('Administrator') do
125
+ # it { should exist }
126
+ # its('uid') { should eq "S-1-5-21-1759981009-4135989804-1844563890-500" }
127
+ # its('gid') { should eq nil } // not supported on Windows
128
+ # its('group') { should eq nil } // not supported on Windows
129
+ # its('groups') { should eq ['Administrators', 'Users']}
130
+ # its('home') { should eq '' }
131
+ # its('shell') { should eq nil } // not supported on Windows
132
+ # its('mindays') { should eq 0 }
133
+ # its('maxdays') { should eq 42 }
134
+ # its('warndays') { should eq nil }
135
+ # its('passwordage') { should eq 355 }
136
+ # its('maxbadpasswords') { should eq 0 }
137
+ # its('badpasswordattempts') { should eq 0 }
119
138
  # end
120
139
  #
121
140
  # The following Serverspec matchers are deprecated in favor for direct value access
@@ -196,6 +215,14 @@ module Inspec::Resources
196
215
  meta_info[:shell] unless meta_info.nil?
197
216
  end
198
217
 
218
+ def domain
219
+ meta_info[:domain] unless meta_info.nil?
220
+ end
221
+
222
+ def userflags
223
+ meta_info[:userflags] unless meta_info.nil?
224
+ end
225
+
199
226
  # returns the minimum days between password changes
200
227
  def mindays
201
228
  credentials[:mindays] unless credentials.nil?
@@ -211,6 +238,18 @@ module Inspec::Resources
211
238
  credentials[:warndays] unless credentials.nil?
212
239
  end
213
240
 
241
+ def badpasswordattempts
242
+ credentials[:badpasswordattempts] unless credentials.nil?
243
+ end
244
+
245
+ def maxbadpasswords
246
+ credentials[:maxbadpasswords] unless credentials.nil?
247
+ end
248
+
249
+ def passwordage
250
+ credentials[:passwordage] unless credentials.nil?
251
+ end
252
+
214
253
  # implement 'mindays' method to be compatible with serverspec
215
254
  def minimum_days_between_password_change
216
255
  Inspec.deprecate(:resource_user_serverspec_compat, "The user resource `minimum_days_between_password_change` property is deprecated. Please use `mindays`.")
@@ -425,10 +464,17 @@ module Inspec::Resources
425
464
  multiple_values: false
426
465
  ).params
427
466
 
467
+ dparse = Date.parse "#{params['Last password change']}"
468
+ dayslastset = (Date.today - dparse).to_i
469
+ cmd = inspec.command("lastb -w -a | grep #{username} | wc -l")
470
+ badpasswordattempts = convert_to_i(cmd.stdout.chomp) if cmd.exit_status == 0
471
+
428
472
  {
429
473
  mindays: convert_to_i(params["Minimum number of days between password change"]),
430
474
  maxdays: convert_to_i(params["Maximum number of days between password change"]),
431
475
  warndays: convert_to_i(params["Number of days of warning before password expires"]),
476
+ passwordage: dayslastset,
477
+ badpasswordattempts: badpasswordattempts,
432
478
  }
433
479
  end
434
480
  end
@@ -481,6 +527,8 @@ module Inspec::Resources
481
527
  mindays: user_sec[1].to_i * 7,
482
528
  maxdays: user_sec[2].to_i * 7,
483
529
  warndays: user_sec[3].to_i,
530
+ passwordage: nil,
531
+ badpasswordattempts: nil,
484
532
  }
485
533
  end
486
534
  end
@@ -573,6 +621,31 @@ module Inspec::Resources
573
621
  res[0] unless res.empty?
574
622
  end
575
623
 
624
+ def meta_info(username)
625
+ res = identity(username)
626
+ return if res.nil?
627
+ {
628
+ home: res[:home],
629
+ shell: res[:shell],
630
+ domain: res[:domain],
631
+ userflags: res[:userflags],
632
+ }
633
+ end
634
+
635
+ def credentials(username)
636
+ res = identity(username)
637
+ return if res.nil?
638
+ {
639
+ mindays: res[:mindays],
640
+ maxdays: res[:maxdays],
641
+ warndays: res[:warndays],
642
+ badpasswordattempts: res[:badpasswordattempts],
643
+ maxbadpasswords: res[:maxbadpasswords],
644
+ minpasswordlength: res[:minpasswordlength],
645
+ passwordage: res[:passwordage],
646
+ }
647
+ end
648
+
576
649
  def list_users
577
650
  collect_user_details.map { |user| user[:username] }
578
651
  end
@@ -50,6 +50,7 @@ module Inspec
50
50
  def method_missing(method_name, *arguments, &block)
51
51
  # see if it is a resource first
52
52
  begin
53
+ inspec = inspec if respond_to?(:inspec) # backend not available??
53
54
  resource = Inspec::DSL.method_missing_resource(inspec, method_name, *arguments)
54
55
  return resource if resource
55
56
  rescue LoadError
data/lib/inspec/rule.rb CHANGED
@@ -297,11 +297,11 @@ module Inspec
297
297
  __waiver_data["skipped_due_to_waiver"] = false
298
298
  __waiver_data["message"] = ""
299
299
 
300
- # Waivers should have a hash value with keys possibly including skip and
301
- # expiration_date. We only care here if it has a skip key and it
302
- # is yes-like, since all non-skipped waiver operations are handled
300
+ # Waivers should have a hash value with keys possibly including "run" and
301
+ # expiration_date. We only care here if it has a "run" key and it
302
+ # is false-like, since all non-skipped waiver operations are handled
303
303
  # during reporting phase.
304
- return unless __waiver_data.key?("skip") && __waiver_data["skip"]
304
+ return unless __waiver_data.key?("run") && !__waiver_data["run"]
305
305
 
306
306
  # OK, the intent is to skip. Does it have an expiration date, and
307
307
  # if so, is it in the future?
@@ -83,7 +83,7 @@ module Inspec
83
83
  return @rspec_exit_code if @formatter.results.empty?
84
84
 
85
85
  stats = @formatter.results[:statistics][:controls]
86
- skipped = @formatter.results&.fetch(:profiles, nil)&.first&.fetch(:status, nil) == "skipped"
86
+ skipped = @formatter.results.dig(:profiles, 0, :status) == "skipped"
87
87
  if stats[:failed][:total] == 0 && stats[:skipped][:total] == 0 && !skipped
88
88
  0
89
89
  elsif stats[:failed][:total] > 0
data/lib/inspec/schema.rb CHANGED
@@ -96,6 +96,16 @@ module Inspec
96
96
  },
97
97
  },
98
98
  "results" => { "type" => "array", "items" => RESULT },
99
+ "waiver_data" => {
100
+ "type" => "object",
101
+ "properties" => {
102
+ "skipped_due_to_waiver" => { "type" => "string" },
103
+ "run" => { "type" => "boolean" },
104
+ "message" => { "type" => "string" },
105
+ "expiration_date" => { "type" => "string" },
106
+ "justification" => { "type" => "string" },
107
+ },
108
+ },
99
109
  },
100
110
  }.freeze
101
111
 
@@ -20,13 +20,14 @@ module PasswdParser
20
20
  def parse_passwd_line(line)
21
21
  x = line.split(":")
22
22
  {
23
- "user" => x.at(0),
24
- "password" => x.at(1),
25
- "uid" => x.at(2),
26
- "gid" => x.at(3),
27
- "desc" => x.at(4),
28
- "home" => x.at(5),
29
- "shell" => x.at(6),
23
+ # rubocop:disable Layout/AlignHash
24
+ "user" => x[0],
25
+ "password" => x[1],
26
+ "uid" => x[2],
27
+ "gid" => x[3],
28
+ "desc" => x[4],
29
+ "home" => x[5],
30
+ "shell" => x[6],
30
31
  }
31
32
  end
32
33
  end
@@ -1,3 +1,3 @@
1
1
  module Inspec
2
- VERSION = "4.17.17".freeze
2
+ VERSION = "4.18.0".freeze
3
3
  end
@@ -58,18 +58,18 @@ describe InspecPlugins::Compliance::API do
58
58
  it "raises an error if `--user` is missing" do
59
59
  options = automate_options
60
60
  options.delete("user")
61
- err = proc { InspecPlugins::Compliance::API.login(options) }.must_raise(ArgumentError)
62
- err.message.must_match(/Please specify a user.*/)
63
- err.message.lines.length.must_equal(1)
61
+ err = _ { InspecPlugins::Compliance::API.login(options) }.must_raise(ArgumentError)
62
+ _(err.message).must_match(/Please specify a user.*/)
63
+ _(err.message.lines.length).must_equal(1)
64
64
  end
65
65
 
66
66
  it "raises an error if `--token` and `--dctoken` are missing" do
67
67
  options = automate_options
68
68
  options.delete("token")
69
69
  options.delete("dctoken")
70
- err = proc { InspecPlugins::Compliance::API.login(options) }.must_raise(ArgumentError)
71
- err.message.must_match(/Please specify a token.*/)
72
- err.message.lines.length.must_equal(1)
70
+ err = _ { InspecPlugins::Compliance::API.login(options) }.must_raise(ArgumentError)
71
+ _(err.message).must_match(/Please specify a token.*/)
72
+ _(err.message.lines.length).must_equal(1)
73
73
  end
74
74
 
75
75
  it "stores an access token" do
@@ -79,12 +79,12 @@ describe InspecPlugins::Compliance::API do
79
79
  InspecPlugins::Compliance::Configuration.expects(:new).returns(fake_config)
80
80
 
81
81
  InspecPlugins::Compliance::API.login(options)
82
- fake_config["automate"]["ent"].must_equal("automate")
83
- fake_config["automate"]["token_type"].must_equal("dctoken")
84
- fake_config["user"].must_equal("someone")
85
- fake_config["server"].must_equal("https://automate.example.com/api/v0")
86
- fake_config["server_type"].must_equal("automate2")
87
- fake_config["token"].must_equal("token")
82
+ _(fake_config["automate"]["ent"]).must_equal("automate")
83
+ _(fake_config["automate"]["token_type"]).must_equal("dctoken")
84
+ _(fake_config["user"]).must_equal("someone")
85
+ _(fake_config["server"]).must_equal("https://automate.example.com/api/v0")
86
+ _(fake_config["server_type"]).must_equal("automate2")
87
+ _(fake_config["token"]).must_equal("token")
88
88
  end
89
89
  end
90
90
 
@@ -96,26 +96,26 @@ describe InspecPlugins::Compliance::API do
96
96
  it "raises an error if `--user` is missing" do
97
97
  options = automate_options
98
98
  options.delete("user")
99
- err = proc { InspecPlugins::Compliance::API.login(options) }.must_raise(ArgumentError)
100
- err.message.must_match(/Please specify a user.*/)
101
- err.message.lines.length.must_equal(1)
99
+ err = _ { InspecPlugins::Compliance::API.login(options) }.must_raise(ArgumentError)
100
+ _(err.message).must_match(/Please specify a user.*/)
101
+ _(err.message.lines.length).must_equal(1)
102
102
  end
103
103
 
104
104
  it "raises an error if `--ent` is missing" do
105
105
  options = automate_options
106
106
  options.delete("ent")
107
- err = proc { InspecPlugins::Compliance::API.login(options) }.must_raise(ArgumentError)
108
- err.message.must_match(/Please specify an enterprise.*/)
109
- err.message.lines.length.must_equal(1)
107
+ err = _ { InspecPlugins::Compliance::API.login(options) }.must_raise(ArgumentError)
108
+ _(err.message).must_match(/Please specify an enterprise.*/)
109
+ _(err.message.lines.length).must_equal(1)
110
110
  end
111
111
 
112
112
  it "raises an error if `--token` and `--dctoken` are missing" do
113
113
  options = automate_options
114
114
  options.delete("token")
115
115
  options.delete("dctoken")
116
- err = proc { InspecPlugins::Compliance::API.login(options) }.must_raise(ArgumentError)
117
- err.message.must_match(/Please specify a token.*/)
118
- err.message.lines.length.must_equal(1)
116
+ err = _ { InspecPlugins::Compliance::API.login(options) }.must_raise(ArgumentError)
117
+ _(err.message).must_match(/Please specify a token.*/)
118
+ _(err.message.lines.length).must_equal(1)
119
119
  end
120
120
 
121
121
  it "stores an access token" do
@@ -125,12 +125,12 @@ describe InspecPlugins::Compliance::API do
125
125
  InspecPlugins::Compliance::Configuration.expects(:new).returns(fake_config)
126
126
 
127
127
  InspecPlugins::Compliance::API.login(options)
128
- fake_config["automate"]["ent"].must_equal("automate")
129
- fake_config["automate"]["token_type"].must_equal("usertoken")
130
- fake_config["user"].must_equal("someone")
131
- fake_config["server"].must_equal("https://automate.example.com/compliance")
132
- fake_config["server_type"].must_equal("automate")
133
- fake_config["token"].must_equal("token")
128
+ _(fake_config["automate"]["ent"]).must_equal("automate")
129
+ _(fake_config["automate"]["token_type"]).must_equal("usertoken")
130
+ _(fake_config["user"]).must_equal("someone")
131
+ _(fake_config["server"]).must_equal("https://automate.example.com/compliance")
132
+ _(fake_config["server_type"]).must_equal("automate")
133
+ _(fake_config["token"]).must_equal("token")
134
134
  end
135
135
  end
136
136
 
@@ -143,9 +143,9 @@ describe InspecPlugins::Compliance::API do
143
143
  options = automate_options
144
144
  options.delete("user")
145
145
  options.delete("refresh_token")
146
- err = proc { InspecPlugins::Compliance::API.login(options) }.must_raise(ArgumentError)
147
- err.message.must_match(/Please specify a.*--user.*--refresh-token.*/)
148
- err.message.lines.length.must_equal(1)
146
+ err = _ { InspecPlugins::Compliance::API.login(options) }.must_raise(ArgumentError)
147
+ _(err.message).must_match(/Please specify a.*--user.*--refresh-token.*/)
148
+ _(err.message.lines.length).must_equal(1)
149
149
  end
150
150
 
151
151
  it "raises an error if `--user` is present but authentication method missing" do
@@ -153,9 +153,9 @@ describe InspecPlugins::Compliance::API do
153
153
  options.delete("password")
154
154
  options.delete("token")
155
155
  options.delete("refresh_token")
156
- err = proc { InspecPlugins::Compliance::API.login(options) }.must_raise(ArgumentError)
157
- err.message.must_match(/Please specify.*--password.*--token.*--refresh-token.*/)
158
- err.message.lines.length.must_equal(1)
156
+ err = _ { InspecPlugins::Compliance::API.login(options) }.must_raise(ArgumentError)
157
+ _(err.message).must_match(/Please specify.*--password.*--token.*--refresh-token.*/)
158
+ _(err.message.lines.length).must_equal(1)
159
159
  end
160
160
 
161
161
  it "stores an access token" do
@@ -165,25 +165,25 @@ describe InspecPlugins::Compliance::API do
165
165
  InspecPlugins::Compliance::Configuration.expects(:new).returns(fake_config)
166
166
 
167
167
  InspecPlugins::Compliance::API.login(options)
168
- fake_config["user"].must_equal("someone")
169
- fake_config["server"].must_equal("https://compliance.example.com/api")
170
- fake_config["server_type"].must_equal("compliance")
171
- fake_config["token"].must_equal("token")
168
+ _(fake_config["user"]).must_equal("someone")
169
+ _(fake_config["server"]).must_equal("https://compliance.example.com/api")
170
+ _(fake_config["server_type"]).must_equal("compliance")
171
+ _(fake_config["token"]).must_equal("token")
172
172
  end
173
173
  end
174
174
 
175
175
  describe "when target is neither a Chef Compliance nor Chef Automate server" do
176
176
  it "raises an error if `https://SERVER` is missing" do
177
177
  options = {}
178
- err = proc { InspecPlugins::Compliance::API.login(options) }.must_raise(ArgumentError)
179
- err.message.must_match(/Please specify a server.*/)
180
- err.message.lines.length.must_equal(1)
178
+ err = _ { InspecPlugins::Compliance::API.login(options) }.must_raise(ArgumentError)
179
+ _(err.message).must_match(/Please specify a server.*/)
180
+ _(err.message.lines.length).must_equal(1)
181
181
  end
182
182
 
183
183
  it "rasies a `CannotDetermineServerType` error" do
184
184
  InspecPlugins::Compliance::API.expects(:determine_server_type).returns(nil)
185
- err = proc { InspecPlugins::Compliance::API.login(automate_options) }.must_raise(StandardError)
186
- err.message.must_match(/Unable to determine/)
185
+ err = _ { InspecPlugins::Compliance::API.login(automate_options) }.must_raise(StandardError)
186
+ _(err.message).must_match(/Unable to determine/)
187
187
  end
188
188
  end
189
189
  end
@@ -60,7 +60,7 @@ describe InspecPlugins::Compliance::API do
60
60
  response = mock
61
61
  response.stubs(:code).returns("404")
62
62
  InspecPlugins::Compliance::HTTP.expects(:get).with("myserver/version", "test-headers", true).returns(response)
63
- InspecPlugins::Compliance::API.version(config).must_equal({})
63
+ _(InspecPlugins::Compliance::API.version(config)).must_equal({})
64
64
  end
65
65
  end
66
66
 
@@ -70,7 +70,7 @@ describe InspecPlugins::Compliance::API do
70
70
  response.stubs(:code).returns("200")
71
71
  response.stubs(:body).returns(nil)
72
72
  InspecPlugins::Compliance::HTTP.expects(:get).with("myserver/version", "test-headers", true).returns(response)
73
- InspecPlugins::Compliance::API.version(config).must_equal({})
73
+ _(InspecPlugins::Compliance::API.version(config)).must_equal({})
74
74
  end
75
75
  end
76
76
 
@@ -80,7 +80,7 @@ describe InspecPlugins::Compliance::API do
80
80
  response.stubs(:code).returns("200")
81
81
  response.stubs(:body).returns("")
82
82
  InspecPlugins::Compliance::HTTP.expects(:get).with("myserver/version", "test-headers", true).returns(response)
83
- InspecPlugins::Compliance::API.version(config).must_equal({})
83
+ _(InspecPlugins::Compliance::API.version(config)).must_equal({})
84
84
  end
85
85
  end
86
86
 
@@ -90,7 +90,7 @@ describe InspecPlugins::Compliance::API do
90
90
  response.stubs(:code).returns("200")
91
91
  response.stubs(:body).returns('{"api":"compliance"}')
92
92
  InspecPlugins::Compliance::HTTP.expects(:get).with("myserver/version", "test-headers", true).returns(response)
93
- InspecPlugins::Compliance::API.version(config).must_equal({})
93
+ _(InspecPlugins::Compliance::API.version(config)).must_equal({})
94
94
  end
95
95
  end
96
96
 
@@ -100,7 +100,7 @@ describe InspecPlugins::Compliance::API do
100
100
  response.stubs(:code).returns("200")
101
101
  response.stubs(:body).returns('{"api":"compliance","version":""}')
102
102
  InspecPlugins::Compliance::HTTP.expects(:get).with("myserver/version", "test-headers", true).returns(response)
103
- InspecPlugins::Compliance::API.version(config).must_equal({})
103
+ _(InspecPlugins::Compliance::API.version(config)).must_equal({})
104
104
  end
105
105
  end
106
106
 
@@ -110,7 +110,7 @@ describe InspecPlugins::Compliance::API do
110
110
  response.stubs(:code).returns("200")
111
111
  response.stubs(:body).returns('{"api":"compliance","version":"1.2.3"}')
112
112
  InspecPlugins::Compliance::HTTP.expects(:get).with("myserver/version", "test-headers", true).returns(response)
113
- InspecPlugins::Compliance::API.version(config).must_equal({ "version" => "1.2.3", "api" => "compliance" })
113
+ _(InspecPlugins::Compliance::API.version(config)).must_equal({ "version" => "1.2.3", "api" => "compliance" })
114
114
  end
115
115
  end
116
116
  end
@@ -121,11 +121,11 @@ describe InspecPlugins::Compliance::API do
121
121
  config = InspecPlugins::Compliance::Configuration.new
122
122
  config.clean
123
123
  config["server_type"] = "compliance"
124
- InspecPlugins::Compliance::API.is_compliance_server?(config).must_equal true
125
- InspecPlugins::Compliance::API.is_automate_server?(config).must_equal false
126
- InspecPlugins::Compliance::API.is_automate_server_pre_080?(config).must_equal false
127
- InspecPlugins::Compliance::API.is_automate_server_080_and_later?(config).must_equal false
128
- InspecPlugins::Compliance::API.is_automate2_server?(config).must_equal false
124
+ _(InspecPlugins::Compliance::API.is_compliance_server?(config)).must_equal true
125
+ _(InspecPlugins::Compliance::API.is_automate_server?(config)).must_equal false
126
+ _(InspecPlugins::Compliance::API.is_automate_server_pre_080?(config)).must_equal false
127
+ _(InspecPlugins::Compliance::API.is_automate_server_080_and_later?(config)).must_equal false
128
+ _(InspecPlugins::Compliance::API.is_automate2_server?(config)).must_equal false
129
129
  end
130
130
  end
131
131
 
@@ -134,11 +134,11 @@ describe InspecPlugins::Compliance::API do
134
134
  config = InspecPlugins::Compliance::Configuration.new
135
135
  config.clean
136
136
  config["server_type"] = "automate2"
137
- InspecPlugins::Compliance::API.is_compliance_server?(config).must_equal false
138
- InspecPlugins::Compliance::API.is_automate_server?(config).must_equal false
139
- InspecPlugins::Compliance::API.is_automate_server_pre_080?(config).must_equal false
140
- InspecPlugins::Compliance::API.is_automate_server_080_and_later?(config).must_equal false
141
- InspecPlugins::Compliance::API.is_automate2_server?(config).must_equal true
137
+ _(InspecPlugins::Compliance::API.is_compliance_server?(config)).must_equal false
138
+ _(InspecPlugins::Compliance::API.is_automate_server?(config)).must_equal false
139
+ _(InspecPlugins::Compliance::API.is_automate_server_pre_080?(config)).must_equal false
140
+ _(InspecPlugins::Compliance::API.is_automate_server_080_and_later?(config)).must_equal false
141
+ _(InspecPlugins::Compliance::API.is_automate2_server?(config)).must_equal true
142
142
  end
143
143
  end
144
144
 
@@ -147,11 +147,11 @@ describe InspecPlugins::Compliance::API do
147
147
  config = InspecPlugins::Compliance::Configuration.new
148
148
  config.clean
149
149
  config["server_type"] = "automate"
150
- InspecPlugins::Compliance::API.is_compliance_server?(config).must_equal false
151
- InspecPlugins::Compliance::API.is_automate_server?(config).must_equal true
152
- InspecPlugins::Compliance::API.is_automate_server_pre_080?(config).must_equal true
153
- InspecPlugins::Compliance::API.is_automate_server_080_and_later?(config).must_equal false
154
- InspecPlugins::Compliance::API.is_automate2_server?(config).must_equal false
150
+ _(InspecPlugins::Compliance::API.is_compliance_server?(config)).must_equal false
151
+ _(InspecPlugins::Compliance::API.is_automate_server?(config)).must_equal true
152
+ _(InspecPlugins::Compliance::API.is_automate_server_pre_080?(config)).must_equal true
153
+ _(InspecPlugins::Compliance::API.is_automate_server_080_and_later?(config)).must_equal false
154
+ _(InspecPlugins::Compliance::API.is_automate2_server?(config)).must_equal false
155
155
  end
156
156
  end
157
157
 
@@ -161,11 +161,11 @@ describe InspecPlugins::Compliance::API do
161
161
  config.clean
162
162
  config["server_type"] = "automate"
163
163
  config["version"] = "1.2.3"
164
- InspecPlugins::Compliance::API.is_compliance_server?(config).must_equal false
165
- InspecPlugins::Compliance::API.is_automate_server?(config).must_equal true
166
- InspecPlugins::Compliance::API.is_automate_server_pre_080?(config).must_equal true
167
- InspecPlugins::Compliance::API.is_automate_server_080_and_later?(config).must_equal false
168
- InspecPlugins::Compliance::API.is_automate2_server?(config).must_equal false
164
+ _(InspecPlugins::Compliance::API.is_compliance_server?(config)).must_equal false
165
+ _(InspecPlugins::Compliance::API.is_automate_server?(config)).must_equal true
166
+ _(InspecPlugins::Compliance::API.is_automate_server_pre_080?(config)).must_equal true
167
+ _(InspecPlugins::Compliance::API.is_automate_server_080_and_later?(config)).must_equal false
168
+ _(InspecPlugins::Compliance::API.is_automate2_server?(config)).must_equal false
169
169
  end
170
170
  end
171
171
 
@@ -175,10 +175,10 @@ describe InspecPlugins::Compliance::API do
175
175
  config.clean
176
176
  config["server_type"] = "automate"
177
177
  config["version"] = {}
178
- InspecPlugins::Compliance::API.is_compliance_server?(config).must_equal false
179
- InspecPlugins::Compliance::API.is_automate_server?(config).must_equal true
180
- InspecPlugins::Compliance::API.is_automate_server_pre_080?(config).must_equal true
181
- InspecPlugins::Compliance::API.is_automate_server_080_and_later?(config).must_equal false
178
+ _(InspecPlugins::Compliance::API.is_compliance_server?(config)).must_equal false
179
+ _(InspecPlugins::Compliance::API.is_automate_server?(config)).must_equal true
180
+ _(InspecPlugins::Compliance::API.is_automate_server_pre_080?(config)).must_equal true
181
+ _(InspecPlugins::Compliance::API.is_automate_server_080_and_later?(config)).must_equal false
182
182
  end
183
183
  end
184
184
 
@@ -188,10 +188,10 @@ describe InspecPlugins::Compliance::API do
188
188
  config.clean
189
189
  config["server_type"] = "automate"
190
190
  config["version"] = { "version" => "0.8.1" }
191
- InspecPlugins::Compliance::API.is_compliance_server?(config).must_equal false
192
- InspecPlugins::Compliance::API.is_automate_server?(config).must_equal true
193
- InspecPlugins::Compliance::API.is_automate_server_pre_080?(config).must_equal false
194
- InspecPlugins::Compliance::API.is_automate_server_080_and_later?(config).must_equal true
191
+ _(InspecPlugins::Compliance::API.is_compliance_server?(config)).must_equal false
192
+ _(InspecPlugins::Compliance::API.is_automate_server?(config)).must_equal true
193
+ _(InspecPlugins::Compliance::API.is_automate_server_pre_080?(config)).must_equal false
194
+ _(InspecPlugins::Compliance::API.is_automate_server_080_and_later?(config)).must_equal true
195
195
  end
196
196
  end
197
197
  end
@@ -199,32 +199,32 @@ describe InspecPlugins::Compliance::API do
199
199
  describe ".server_version_from_config" do
200
200
  it "returns nil when the config has no version key" do
201
201
  config = {}
202
- InspecPlugins::Compliance::API.server_version_from_config(config).must_be_nil
202
+ _(InspecPlugins::Compliance::API.server_version_from_config(config)).must_be_nil
203
203
  end
204
204
 
205
205
  it "returns nil when the version value is not a hash" do
206
206
  config = { "version" => "123" }
207
- InspecPlugins::Compliance::API.server_version_from_config(config).must_be_nil
207
+ _(InspecPlugins::Compliance::API.server_version_from_config(config)).must_be_nil
208
208
  end
209
209
 
210
210
  it "returns nil when the version value is a hash but has no version key inside" do
211
211
  config = { "version" => {} }
212
- InspecPlugins::Compliance::API.server_version_from_config(config).must_be_nil
212
+ _(InspecPlugins::Compliance::API.server_version_from_config(config)).must_be_nil
213
213
  end
214
214
 
215
215
  it "returns the version if the version value is a hash containing a version" do
216
216
  config = { "version" => { "version" => "1.2.3" } }
217
- InspecPlugins::Compliance::API.server_version_from_config(config).must_equal "1.2.3"
217
+ _(InspecPlugins::Compliance::API.server_version_from_config(config)).must_equal "1.2.3"
218
218
  end
219
219
  end
220
220
 
221
221
  describe "profile_split" do
222
222
  it "handles a profile without version" do
223
- InspecPlugins::Compliance::API.profile_split("admin/apache-baseline").must_equal ["admin", "apache-baseline", nil]
223
+ _(InspecPlugins::Compliance::API.profile_split("admin/apache-baseline")).must_equal ["admin", "apache-baseline", nil]
224
224
  end
225
225
 
226
226
  it "handles a profile with a version" do
227
- InspecPlugins::Compliance::API.profile_split("admin/apache-baseline#2.0.1").must_equal ["admin", "apache-baseline", "2.0.1"]
227
+ _(InspecPlugins::Compliance::API.profile_split("admin/apache-baseline#2.0.1")).must_equal ["admin", "apache-baseline", "2.0.1"]
228
228
  end
229
229
  end
230
230
 
@@ -235,8 +235,8 @@ describe InspecPlugins::Compliance::API do
235
235
  config["server_type"] = "automate"
236
236
  config["server"] = "https://myautomate"
237
237
  config["version"] = "1.6.99"
238
- InspecPlugins::Compliance::API.target_url(config, "admin/apache-baseline").must_equal "https://myautomate/profiles/admin/apache-baseline/tar"
239
- InspecPlugins::Compliance::API.target_url(config, "admin/apache-baseline#2.0.2").must_equal "https://myautomate/profiles/admin/apache-baseline/version/2.0.2/tar"
238
+ _(InspecPlugins::Compliance::API.target_url(config, "admin/apache-baseline")).must_equal "https://myautomate/profiles/admin/apache-baseline/tar"
239
+ _(InspecPlugins::Compliance::API.target_url(config, "admin/apache-baseline#2.0.2")).must_equal "https://myautomate/profiles/admin/apache-baseline/version/2.0.2/tar"
240
240
  end
241
241
 
242
242
  it "handles a chef-compliance profile with and without version" do
@@ -245,8 +245,8 @@ describe InspecPlugins::Compliance::API do
245
245
  config["server_type"] = "compliance"
246
246
  config["server"] = "https://mychefcompliance"
247
247
  config["version"] = "1.1.2"
248
- InspecPlugins::Compliance::API.target_url(config, "admin/apache-baseline").must_equal "https://mychefcompliance/owners/admin/compliance/apache-baseline/tar"
249
- InspecPlugins::Compliance::API.target_url(config, "admin/apache-baseline#2.0.2").must_equal "https://mychefcompliance/owners/admin/compliance/apache-baseline/tar"
248
+ _(InspecPlugins::Compliance::API.target_url(config, "admin/apache-baseline")).must_equal "https://mychefcompliance/owners/admin/compliance/apache-baseline/tar"
249
+ _(InspecPlugins::Compliance::API.target_url(config, "admin/apache-baseline#2.0.2")).must_equal "https://mychefcompliance/owners/admin/compliance/apache-baseline/tar"
250
250
  end
251
251
  end
252
252
 
@@ -269,10 +269,10 @@ describe InspecPlugins::Compliance::API do
269
269
  .with(headers: { "Accept" => "*/*", "Accept-Encoding" => "gzip;q=1.0,deflate;q=0.6,identity;q=0.3", "Chef-Delivery-Enterprise" => "automate", "User-Agent" => "Ruby", "X-Data-Collector-Token" => "" })
270
270
  .to_return(status: 200, body: profiles_response.to_json, headers: {})
271
271
 
272
- InspecPlugins::Compliance::API.exist?(config, "admin/apache-baseline").must_equal true
273
- InspecPlugins::Compliance::API.exist?(config, "admin/apache-baseline#2.0.1").must_equal true
274
- InspecPlugins::Compliance::API.exist?(config, "admin/apache-baseline#2.0.999").must_equal false
275
- InspecPlugins::Compliance::API.exist?(config, "admin/missing-in-action").must_equal false
272
+ _(InspecPlugins::Compliance::API.exist?(config, "admin/apache-baseline")).must_equal true
273
+ _(InspecPlugins::Compliance::API.exist?(config, "admin/apache-baseline#2.0.1")).must_equal true
274
+ _(InspecPlugins::Compliance::API.exist?(config, "admin/apache-baseline#2.0.999")).must_equal false
275
+ _(InspecPlugins::Compliance::API.exist?(config, "admin/missing-in-action")).must_equal false
276
276
  end
277
277
  end
278
278
 
@@ -295,7 +295,7 @@ describe InspecPlugins::Compliance::API do
295
295
  .with(url + automate2_endpoint, headers, insecure)
296
296
  .returns(good_response)
297
297
 
298
- InspecPlugins::Compliance::API.determine_server_type(url, insecure).must_equal(:automate2)
298
+ _(InspecPlugins::Compliance::API.determine_server_type(url, insecure)).must_equal(:automate2)
299
299
  end
300
300
 
301
301
  it "returns `:automate` when a 401 is received from `https://URL/compliance/version`" do
@@ -309,7 +309,7 @@ describe InspecPlugins::Compliance::API do
309
309
  .with(url + automate_endpoint, headers, insecure)
310
310
  .returns(good_response)
311
311
 
312
- InspecPlugins::Compliance::API.determine_server_type(url, insecure).must_equal(:automate)
312
+ _(InspecPlugins::Compliance::API.determine_server_type(url, insecure)).must_equal(:automate)
313
313
  end
314
314
 
315
315
  # Chef Automate currently returns 401 for `/compliance/version` but some
@@ -327,7 +327,7 @@ describe InspecPlugins::Compliance::API do
327
327
  .with(url + automate_endpoint, headers, insecure)
328
328
  .returns(good_response)
329
329
 
330
- InspecPlugins::Compliance::API.determine_server_type(url, insecure).must_equal(:automate)
330
+ _(InspecPlugins::Compliance::API.determine_server_type(url, insecure)).must_equal(:automate)
331
331
  end
332
332
 
333
333
  it "returns `nil` if a 200 is received from `https://URL/compliance/version` but not redirected to Chef Manage" do
@@ -347,7 +347,7 @@ describe InspecPlugins::Compliance::API do
347
347
  .with(url + compliance_endpoint, headers, insecure)
348
348
  .returns(mock_compliance_response)
349
349
 
350
- InspecPlugins::Compliance::API.determine_server_type(url, insecure).must_be_nil
350
+ _(InspecPlugins::Compliance::API.determine_server_type(url, insecure)).must_be_nil
351
351
  end
352
352
 
353
353
  it "returns `:compliance` when a 200 is received from `https://URL/api/version`" do
@@ -364,7 +364,7 @@ describe InspecPlugins::Compliance::API do
364
364
  .with(url + compliance_endpoint, headers, insecure)
365
365
  .returns(good_response)
366
366
 
367
- InspecPlugins::Compliance::API.determine_server_type(url, insecure).must_equal(:compliance)
367
+ _(InspecPlugins::Compliance::API.determine_server_type(url, insecure)).must_equal(:compliance)
368
368
  end
369
369
 
370
370
  it "returns `nil` if it cannot determine the server type" do
@@ -380,7 +380,7 @@ describe InspecPlugins::Compliance::API do
380
380
  .with(url + compliance_endpoint, headers, insecure)
381
381
  .returns(bad_response)
382
382
 
383
- InspecPlugins::Compliance::API.determine_server_type(url, insecure).must_be_nil
383
+ _(InspecPlugins::Compliance::API.determine_server_type(url, insecure)).must_be_nil
384
384
  end
385
385
  end
386
386
  end
@@ -15,7 +15,7 @@ describe InspecPlugins::Compliance::Fetcher do
15
15
 
16
16
  it "returns an error when token is not set" do
17
17
  ex = assert_raises(Inspec::FetcherFailure) { fetcher.class.check_compliance_token("http://test.com", config) }
18
- ex.message.must_include "Cannot fetch http://test.com because your compliance token has not been\nconfigured."
18
+ _(ex.message).must_include "Cannot fetch http://test.com because your compliance token has not been\nconfigured."
19
19
  end
20
20
  end
21
21
 
@@ -25,7 +25,7 @@ describe InspecPlugins::Compliance::Fetcher do
25
25
  it "returns the correct owner and profile name" do
26
26
  config["profile"] = ["admin", "ssh-baseline", nil]
27
27
  fetcher = InspecPlugins::Compliance::Fetcher.new("myserver/profile", config)
28
- fetcher.send(:compliance_profile_name).must_equal "admin/ssh-baseline"
28
+ _(fetcher.send(:compliance_profile_name)).must_equal "admin/ssh-baseline"
29
29
  end
30
30
  end
31
31
 
@@ -34,12 +34,12 @@ describe InspecPlugins::Compliance::Fetcher do
34
34
 
35
35
  it "returns the correct profile name when the url is correct" do
36
36
  fetcher = InspecPlugins::Compliance::Fetcher.new("myserver/myowner/myprofile/tar", config)
37
- fetcher.send(:compliance_profile_name).must_equal "myowner/myprofile"
37
+ _(fetcher.send(:compliance_profile_name)).must_equal "myowner/myprofile"
38
38
  end
39
39
 
40
40
  it "raises an exception if the url is malformed" do
41
41
  fetcher = InspecPlugins::Compliance::Fetcher.new("a/bad/url", config)
42
- proc { fetcher.send(:compliance_profile_name) }.must_raise RuntimeError
42
+ _(proc { fetcher.send(:compliance_profile_name) }).must_raise RuntimeError
43
43
  end
44
44
  end
45
45
 
@@ -51,12 +51,12 @@ describe InspecPlugins::Compliance::Fetcher do
51
51
 
52
52
  it "returns the correct profile name when the url is correct" do
53
53
  fetcher = InspecPlugins::Compliance::Fetcher.new("myserver/profiles/myowner/myprofile/tar", config)
54
- fetcher.send(:compliance_profile_name).must_equal "myowner/myprofile"
54
+ _(fetcher.send(:compliance_profile_name)).must_equal "myowner/myprofile"
55
55
  end
56
56
 
57
57
  it "raises an exception if the url is malformed" do
58
58
  fetcher = InspecPlugins::Compliance::Fetcher.new("a/bad/url", config)
59
- proc { fetcher.send(:compliance_profile_name) }.must_raise RuntimeError
59
+ _(proc { fetcher.send(:compliance_profile_name) }).must_raise RuntimeError
60
60
  end
61
61
  end
62
62
 
@@ -68,12 +68,12 @@ describe InspecPlugins::Compliance::Fetcher do
68
68
 
69
69
  it "returns the correct profile name when the url is correct" do
70
70
  fetcher = InspecPlugins::Compliance::Fetcher.new("myserver/owners/myowner/compliance/myprofile/tar", config)
71
- fetcher.send(:compliance_profile_name).must_equal "myowner/myprofile"
71
+ _(fetcher.send(:compliance_profile_name)).must_equal "myowner/myprofile"
72
72
  end
73
73
 
74
74
  it "raises an exception if the url is malformed" do
75
75
  fetcher = InspecPlugins::Compliance::Fetcher.new("a/bad/url", config)
76
- proc { fetcher.send(:compliance_profile_name) }.must_raise RuntimeError
76
+ _(proc { fetcher.send(:compliance_profile_name) }).must_raise RuntimeError
77
77
  end
78
78
  end
79
79
 
@@ -104,7 +104,7 @@ describe InspecPlugins::Compliance::Fetcher do
104
104
  InspecPlugins::Compliance::API.stubs(:profiles).returns(["success", profiles_result])
105
105
  fetcher = InspecPlugins::Compliance::Fetcher.resolve("compliance://admin/ssh-baseline")
106
106
  assert = ["admin", "ssh-baseline", nil]
107
- fetcher.instance_variable_get(:"@config")["profile"].must_equal assert
107
+ _(fetcher.instance_variable_get(:"@config")["profile"]).must_equal assert
108
108
  end
109
109
 
110
110
  it "returns the correct profile name when parsing compliance hash" do
@@ -116,7 +116,7 @@ describe InspecPlugins::Compliance::Fetcher do
116
116
  }
117
117
  fetcher = InspecPlugins::Compliance::Fetcher.resolve(hash)
118
118
  assert = ["admin", "ssh-baseline", nil]
119
- fetcher.instance_variable_get(:"@config")["profile"].must_equal assert
119
+ _(fetcher.instance_variable_get(:"@config")["profile"]).must_equal assert
120
120
  end
121
121
  end
122
122
 
@@ -149,7 +149,7 @@ describe InspecPlugins::Compliance::Fetcher do
149
149
  prof = profiles_result[0]
150
150
  target = "compliance://#{prof["owner"]}/#{prof["name"]}"
151
151
  fetcher = InspecPlugins::Compliance::Fetcher.resolve(target)
152
- fetcher.upstream_sha256.must_equal prof["sha256"]
152
+ _(fetcher.upstream_sha256).must_equal prof["sha256"]
153
153
  end
154
154
  end
155
155
  end
@@ -19,22 +19,22 @@ class Module
19
19
  include Minitest::Spec::DSL # TODO: NO! remove this!
20
20
  end
21
21
 
22
- module Inspec
23
- class FuncTestRunResult
24
- attr_reader :train_result
25
- attr_reader :payload
26
-
27
- extend Forwardable
28
- def_delegator :train_result, :stdout
29
- def_delegator :train_result, :stderr
30
- def_delegator :train_result, :exit_status
31
-
32
- def initialize(train_result)
33
- @train_result = train_result
34
- @payload = OpenStruct.new
35
- end
36
- end
37
- end
22
+ # module Inspec
23
+ # class FuncTestRunResult
24
+ # attr_reader :train_result
25
+ # attr_reader :payload
26
+ #
27
+ # extend Forwardable
28
+ # def_delegator :train_result, :stdout
29
+ # def_delegator :train_result, :stderr
30
+ # def_delegator :train_result, :exit_status
31
+ #
32
+ # def initialize(train_result)
33
+ # @train_result = train_result
34
+ # @payload = OpenStruct.new
35
+ # end
36
+ # end
37
+ # end
38
38
 
39
39
  module CorePluginBaseHelper
40
40
  libdir = File.expand_path "lib"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.17.17
4
+ version: 4.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chef InSpec Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-02 00:00:00.000000000 Z
11
+ date: 2019-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: train
@@ -154,14 +154,20 @@ dependencies:
154
154
  requirements:
155
155
  - - "~>"
156
156
  - !ruby/object:Gem::Version
157
- version: '3'
157
+ version: '3.0'
158
+ - - "<"
159
+ - !ruby/object:Gem::Version
160
+ version: '3.9'
158
161
  type: :runtime
159
162
  prerelease: false
160
163
  version_requirements: !ruby/object:Gem::Requirement
161
164
  requirements:
162
165
  - - "~>"
163
166
  - !ruby/object:Gem::Version
164
- version: '3'
167
+ version: '3.0'
168
+ - - "<"
169
+ - !ruby/object:Gem::Version
170
+ version: '3.9'
165
171
  - !ruby/object:Gem::Dependency
166
172
  name: rspec-its
167
173
  requirement: !ruby/object:Gem::Requirement
@@ -502,7 +508,6 @@ files:
502
508
  - lib/inspec/plugin/v2/plugin_types/mock.rb
503
509
  - lib/inspec/plugin/v2/registry.rb
504
510
  - lib/inspec/plugin/v2/status.rb
505
- - lib/inspec/polyfill.rb
506
511
  - lib/inspec/profile.rb
507
512
  - lib/inspec/profile_context.rb
508
513
  - lib/inspec/profile_vendor.rb
@@ -1,9 +0,0 @@
1
- # copyright: 2016, Chef Software Inc.
2
-
3
- class Struct
4
- unless instance_methods.include? :to_h
5
- def to_h
6
- Hash[each_pair.to_a]
7
- end
8
- end
9
- end