inspec 0.12.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +39 -2
  3. data/bin/inspec +11 -9
  4. data/docs/matchers.rst +129 -0
  5. data/docs/resources.rst +64 -37
  6. data/inspec.gemspec +1 -1
  7. data/lib/bundles/inspec-compliance/cli.rb +1 -1
  8. data/lib/bundles/inspec-compliance/configuration.rb +1 -0
  9. data/lib/bundles/inspec-compliance/target.rb +16 -32
  10. data/lib/bundles/inspec-init/cli.rb +2 -0
  11. data/lib/bundles/inspec-supermarket.rb +13 -0
  12. data/lib/bundles/inspec-supermarket/api.rb +2 -0
  13. data/lib/bundles/inspec-supermarket/cli.rb +2 -2
  14. data/lib/bundles/inspec-supermarket/target.rb +11 -15
  15. data/lib/fetchers/local.rb +31 -0
  16. data/lib/fetchers/tar.rb +48 -0
  17. data/lib/fetchers/url.rb +100 -0
  18. data/lib/fetchers/zip.rb +47 -0
  19. data/lib/inspec.rb +2 -3
  20. data/lib/inspec/fetcher.rb +22 -0
  21. data/lib/inspec/metadata.rb +4 -2
  22. data/lib/inspec/plugins.rb +2 -0
  23. data/lib/inspec/plugins/fetcher.rb +97 -0
  24. data/lib/inspec/plugins/source_reader.rb +36 -0
  25. data/lib/inspec/profile.rb +92 -81
  26. data/lib/inspec/resource.rb +1 -0
  27. data/lib/inspec/runner.rb +15 -35
  28. data/lib/inspec/source_reader.rb +32 -0
  29. data/lib/inspec/version.rb +1 -1
  30. data/lib/matchers/matchers.rb +5 -6
  31. data/lib/resources/file.rb +8 -2
  32. data/lib/resources/passwd.rb +71 -45
  33. data/lib/resources/service.rb +13 -9
  34. data/lib/resources/shadow.rb +135 -0
  35. data/lib/source_readers/flat.rb +38 -0
  36. data/lib/source_readers/inspec.rb +78 -0
  37. data/lib/utils/base_cli.rb +2 -2
  38. data/lib/utils/parser.rb +1 -1
  39. data/lib/utils/plugin_registry.rb +93 -0
  40. data/test/docker_test.rb +1 -1
  41. data/test/helper.rb +62 -2
  42. data/test/integration/cookbooks/os_prepare/recipes/service.rb +4 -2
  43. data/test/integration/test/integration/default/compare_matcher_spec.rb +11 -0
  44. data/test/integration/test/integration/default/service_spec.rb +16 -1
  45. data/test/unit/fetchers.rb +61 -0
  46. data/test/unit/fetchers/local_test.rb +67 -0
  47. data/test/unit/fetchers/tar_test.rb +36 -0
  48. data/test/unit/fetchers/url_test.rb +152 -0
  49. data/test/unit/fetchers/zip_test.rb +36 -0
  50. data/test/unit/mock/files/passwd +1 -1
  51. data/test/unit/mock/files/shadow +2 -0
  52. data/test/unit/mock/profiles/complete-profile/libraries/testlib.rb +1 -0
  53. data/test/unit/plugin_test.rb +0 -1
  54. data/test/unit/profile_test.rb +32 -53
  55. data/test/unit/resources/passwd_test.rb +69 -14
  56. data/test/unit/resources/shadow_test.rb +67 -0
  57. data/test/unit/source_reader_test.rb +17 -0
  58. data/test/unit/source_readers/flat_test.rb +61 -0
  59. data/test/unit/source_readers/inspec_test.rb +38 -0
  60. data/test/unit/utils/passwd_parser_test.rb +1 -1
  61. metadata +40 -21
  62. data/lib/inspec/targets.rb +0 -10
  63. data/lib/inspec/targets/archive.rb +0 -33
  64. data/lib/inspec/targets/core.rb +0 -56
  65. data/lib/inspec/targets/dir.rb +0 -144
  66. data/lib/inspec/targets/file.rb +0 -33
  67. data/lib/inspec/targets/folder.rb +0 -38
  68. data/lib/inspec/targets/tar.rb +0 -61
  69. data/lib/inspec/targets/url.rb +0 -78
  70. data/lib/inspec/targets/zip.rb +0 -55
  71. data/test/unit/targets.rb +0 -132
@@ -0,0 +1,67 @@
1
+ # encoding: utf-8
2
+ # author: Dominik Richter
3
+ # author: Christoph Hartmann
4
+
5
+ require 'helper'
6
+
7
+ describe Fetchers::Local do
8
+ let(:fetcher) { Fetchers::Local }
9
+
10
+ it 'registers with the fetchers registry' do
11
+ reg = Inspec::Fetcher.registry
12
+ _(reg['local']).must_equal fetcher
13
+ end
14
+
15
+ describe 'applied to this file' do
16
+ let(:res) { fetcher.resolve(__FILE__) }
17
+
18
+ it 'must be resolved' do
19
+ _(res).must_be_kind_of fetcher
20
+ end
21
+
22
+ it 'must only contain this file' do
23
+ _(res.files).must_equal [__FILE__]
24
+ end
25
+
26
+ it 'must not read if the file doesnt exist' do
27
+ _(res.read('file-does-not-exist')).must_be_nil
28
+ end
29
+
30
+ it 'must not read files not covered' do
31
+ not_covered = File.expand_path('../tar_test.rb', __FILE__)
32
+ _(File.file?(not_covered)).must_equal true
33
+ _(res.read(not_covered)).must_be_nil
34
+ end
35
+
36
+ it 'must read the contents of the file' do
37
+ _(res.read(__FILE__)).must_equal File.read(__FILE__)
38
+ end
39
+ end
40
+
41
+ describe 'applied to this folder' do
42
+ let(:path) { File.dirname(__FILE__) }
43
+ let(:res) { fetcher.resolve(path) }
44
+
45
+ it 'must be resolved' do
46
+ _(res).must_be_kind_of fetcher
47
+ end
48
+
49
+ it 'must contain all files' do
50
+ _(res.files).must_include __FILE__
51
+ end
52
+
53
+ it 'must not read if the file doesnt exist' do
54
+ _(res.read('file-not-in-folder')).must_be_nil
55
+ end
56
+
57
+ it 'must not read files not covered' do
58
+ not_covered = File.expand_path('../../../helper.rb', __FILE__)
59
+ _(File.file?(not_covered)).must_equal true
60
+ _(res.read(not_covered)).must_be_nil
61
+ end
62
+
63
+ it 'must read the contents of the file' do
64
+ _(res.read(__FILE__)).must_equal File.read(__FILE__)
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,36 @@
1
+ # encoding: utf-8
2
+ # author: Dominik Richter
3
+ # author: Christoph Hartmann
4
+
5
+ require 'helper'
6
+
7
+ describe Fetchers::Tar do
8
+ let(:fetcher) { Fetchers::Tar }
9
+
10
+ it 'registers with the fetchers registry' do
11
+ reg = Inspec::Fetcher.registry
12
+ _(reg['tar']).must_equal fetcher
13
+ end
14
+
15
+ describe 'applied to a zipped archive' do
16
+ let(:target) { MockLoader.profile_tgz('complete-profile') }
17
+ let(:res) { fetcher.resolve(target) }
18
+
19
+ it 'must be resolved' do
20
+ _(res).must_be_kind_of fetcher
21
+ end
22
+
23
+ it 'must contain all files' do
24
+ _(res.files.sort).must_equal %w{inspec.yml libraries libraries/testlib.rb
25
+ controls controls/filesystem_spec.rb}.sort
26
+ end
27
+
28
+ it 'must not read if the file isnt included' do
29
+ _(res.read('file-not-in-archive')).must_be_nil
30
+ end
31
+
32
+ it 'must read the contents of the file' do
33
+ _(res.read('inspec.yml')).must_match /^name: complete$/
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,152 @@
1
+ # encoding: utf-8
2
+ # author: Dominik Richter
3
+ # author: Christoph Hartmann
4
+
5
+ require 'helper'
6
+
7
+ describe Fetchers::Url do
8
+ let(:fetcher) { Fetchers::Url }
9
+
10
+ it 'registers with the fetchers registry' do
11
+ reg = Inspec::Fetcher.registry
12
+ _(reg['url']).must_equal fetcher
13
+ end
14
+
15
+ describe 'testing different urls' do
16
+ let(:mock_file) { MockLoader.profile_path('complete-metadata') }
17
+ let(:fetcher) {
18
+ Class.new(Fetchers::Url) do
19
+ attr_reader :target, :archive
20
+ def initialize(target, opts)
21
+ @target = target
22
+ @archive = File.new(__FILE__)
23
+ end
24
+ end
25
+ }
26
+
27
+ it 'handles a http url' do
28
+ url = 'http://chef.io/some.tar.gz'
29
+ res = fetcher.resolve(url)
30
+ _(res).must_be_kind_of Fetchers::Local
31
+ _(res.parent).must_be_kind_of Fetchers::Url
32
+ _(res.parent.target).must_equal 'http://chef.io/some.tar.gz'
33
+ end
34
+
35
+ it 'handles a https url' do
36
+ url = 'https://chef.io/some.tar.gz'
37
+ res = fetcher.resolve(url)
38
+ _(res).must_be_kind_of Fetchers::Local
39
+ _(res.parent).must_be_kind_of Fetchers::Url
40
+ _(res.parent.target).must_equal 'https://chef.io/some.tar.gz'
41
+ end
42
+
43
+ it 'doesnt handle other schemas' do
44
+ fetcher.resolve('gopher://chef.io/some.tar.gz').must_be_nil
45
+ end
46
+
47
+ it 'only handles URLs' do
48
+ fetcher.resolve(__FILE__).must_be_nil
49
+ end
50
+
51
+ %w{https://github.com/chef/inspec
52
+ https://github.com/chef/inspec.git
53
+ https://www.github.com/chef/inspec.git
54
+ http://github.com/chef/inspec
55
+ http://github.com/chef/inspec.git
56
+ http://www.github.com/chef/inspec.git}.each do |github|
57
+ it "resolves a github url #{github}" do
58
+ res = fetcher.resolve(github)
59
+ _(res).wont_be_nil
60
+ _(res.parent.target).must_equal 'https://github.com/chef/inspec/archive/master.tar.gz'
61
+ end
62
+ end
63
+
64
+ it "resolves a github branch url" do
65
+ github = 'https://github.com/hardening-io/tests-os-hardening/tree/2.0'
66
+ res = fetcher.resolve(github)
67
+ _(res).wont_be_nil
68
+ _(res.parent.target).must_equal 'https://github.com/hardening-io/tests-os-hardening/archive/2.0.tar.gz'
69
+ end
70
+
71
+ it "resolves a github commit url" do
72
+ github = 'https://github.com/hardening-io/tests-os-hardening/tree/48bd4388ddffde68badd83aefa654e7af3231876'
73
+ res = fetcher.resolve(github)
74
+ _(res).wont_be_nil
75
+ _(res.parent.target).must_equal 'https://github.com/hardening-io/tests-os-hardening/archive/48bd4388ddffde68badd83aefa654e7af3231876.tar.gz'
76
+ end
77
+ end
78
+
79
+ describe 'applied to a valid url (mocked tar.gz)' do
80
+ let(:mock_file) { MockLoader.profile_tgz('complete-profile') }
81
+ let(:target) { 'http://myurl/file.tar.gz' }
82
+ let(:res) {
83
+ mock_open = Minitest::Mock.new
84
+ mock_open.expect :meta, {'content-type' => 'application/gzip'}
85
+ mock_open.expect :read, File.read(mock_file)
86
+ fetcher.expects(:open).returns(mock_open)
87
+ fetcher.resolve(target)
88
+ }
89
+
90
+ it 'must be resolved to the final format' do
91
+ _(res).must_be_kind_of Fetchers::Tar
92
+ end
93
+
94
+ it 'must be resolved to the final format' do
95
+ _(res.parent).must_be_kind_of fetcher
96
+ end
97
+
98
+ it 'must contain all files' do
99
+ _(res.files.sort).must_equal %w{inspec.yml libraries libraries/testlib.rb
100
+ controls controls/filesystem_spec.rb}.sort
101
+ end
102
+
103
+ it 'must not read if the file isnt included' do
104
+ _(res.read('file-not-in-archive')).must_be_nil
105
+ end
106
+
107
+ it 'must read the contents of the file' do
108
+ _(res.read('inspec.yml')).must_match /^name: complete$/
109
+ end
110
+ end
111
+
112
+ describe 'applied to a valid url (mocked zip)' do
113
+ let(:mock_file) { MockLoader.profile_zip('complete-profile') }
114
+ let(:target) { 'http://myurl/file.tar.gz' }
115
+ let(:res) {
116
+ mock_open = Minitest::Mock.new
117
+ mock_open.expect :meta, {'content-type' => 'application/zip'}
118
+ mock_open.expect :read, File.read(mock_file)
119
+ fetcher.expects(:open).returns(mock_open)
120
+ fetcher.resolve(target)
121
+ }
122
+
123
+ it 'must be resolved to the final format' do
124
+ _(res).must_be_kind_of Fetchers::Zip
125
+ end
126
+
127
+ it 'must contain all files' do
128
+ _(res.files.sort).must_equal %w{inspec.yml libraries libraries/testlib.rb
129
+ controls controls/filesystem_spec.rb}.sort
130
+ end
131
+
132
+ it 'must not read if the file isnt included' do
133
+ _(res.read('file-not-in-archive')).must_be_nil
134
+ end
135
+
136
+ it 'must read the contents of the file' do
137
+ _(res.read('inspec.yml')).must_match /^name: complete$/
138
+ end
139
+ end
140
+
141
+ describe 'applied to a valid url with wrong content-type' do
142
+ let(:mock_file) { MockLoader.profile_zip('complete-profile') }
143
+ let(:target) { 'http://myurl/file.tar.gz' }
144
+
145
+ it 'must be resolved to the final format' do
146
+ mock_open = Minitest::Mock.new
147
+ mock_open.expect :meta, {'content-type' => 'wrong'}
148
+ fetcher.expects(:open).returns(mock_open)
149
+ proc { fetcher.resolve(target) }.must_throw RuntimeError
150
+ end
151
+ end
152
+ end
@@ -0,0 +1,36 @@
1
+ # encoding: utf-8
2
+ # author: Dominik Richter
3
+ # author: Christoph Hartmann
4
+
5
+ require 'helper'
6
+
7
+ describe Fetchers::Zip do
8
+ let(:fetcher) { Fetchers::Zip }
9
+
10
+ it 'registers with the fetchers registry' do
11
+ reg = Inspec::Fetcher.registry
12
+ _(reg['zip']).must_equal fetcher
13
+ end
14
+
15
+ describe 'applied to a zipped archive' do
16
+ let(:target) { MockLoader.profile_zip('complete-profile') }
17
+ let(:res) { fetcher.resolve(target) }
18
+
19
+ it 'must be resolved' do
20
+ _(res).must_be_kind_of fetcher
21
+ end
22
+
23
+ it 'must contain all files' do
24
+ _(res.files.sort).must_equal %w{inspec.yml libraries libraries/testlib.rb
25
+ controls controls/filesystem_spec.rb}.sort
26
+ end
27
+
28
+ it 'must not read if the file isnt included' do
29
+ _(res.read('file-not-in-archive')).must_be_nil
30
+ end
31
+
32
+ it 'must read the contents of the file' do
33
+ _(res.read('inspec.yml')).must_match /^name: complete$/
34
+ end
35
+ end
36
+ end
@@ -1,2 +1,2 @@
1
1
  root:x:0:0:root:/root:/bin/bash
2
- www-data:x:33:33:www-data:/var/www:/bin/sh
2
+ www-data:x:33:133:www-data:/var/www:/bin/sh
@@ -0,0 +1,2 @@
1
+ root:x:1:2:3::::
2
+ www-data:!!:10:20:30:40:50:60:
@@ -0,0 +1 @@
1
+ # Library resource
@@ -7,7 +7,6 @@ require 'minitest/autorun'
7
7
  require 'minitest/spec'
8
8
  require 'mocha/setup'
9
9
 
10
- require 'inspec/targets'
11
10
  require 'inspec/plugins/cli'
12
11
  require 'thor'
13
12
 
@@ -4,35 +4,13 @@
4
4
 
5
5
  require 'helper'
6
6
  require 'inspec/profile_context'
7
- require 'inspec/runner'
8
- require 'inspec/runner_mock'
9
- require 'fileutils'
10
7
 
11
8
  describe Inspec::Profile do
12
9
  let(:logger) { Minitest::Mock.new }
13
- let(:home) { File.dirname(__FILE__) }
14
-
15
- def load_profile(name, opts = {})
16
- opts[:test_collector] = Inspec::RunnerMock.new
17
- Inspec::Profile.from_path("#{home}/mock/profiles/#{name}", opts)
18
- end
19
-
20
- def load_profile_tgz(name, opts = {})
21
- path = "#{home}/mock/profiles/#{name}"
22
- `tar zcvf #{path}.tgz #{path}`
23
- load_profile("#{name}.tgz", opts)
24
- FileUtils.rm("#{path}.tgz")
25
- end
26
-
27
- def load_profile_zip(name, opts = {})
28
- path = "#{home}/mock/profiles/#{name}"
29
- `zip #{path}.zip #{path}`
30
- load_profile("#{name}.zip", opts)
31
- FileUtils.rm("#{path}.zip")
32
- end
10
+ let(:home) { MockLoader.home }
33
11
 
34
12
  describe 'with an empty profile' do
35
- let(:profile) { load_profile('empty-metadata') }
13
+ let(:profile) { MockLoader.load_profile('empty-metadata') }
36
14
 
37
15
  it 'has no metadata' do
38
16
  profile.params[:name].must_be_nil
@@ -44,7 +22,7 @@ describe Inspec::Profile do
44
22
  end
45
23
 
46
24
  describe 'with an empty profile (legacy mode)' do
47
- let(:profile) { load_profile('legacy-empty-metadata') }
25
+ let(:profile) { MockLoader.load_profile('legacy-empty-metadata') }
48
26
 
49
27
  it 'has no metadata' do
50
28
  profile.params[:name].must_be_nil
@@ -57,7 +35,7 @@ describe Inspec::Profile do
57
35
 
58
36
  describe 'with simple metadata in profile' do
59
37
  let(:profile_id) { 'simple-metadata' }
60
- let(:profile) { load_profile(profile_id) }
38
+ let(:profile) { MockLoader.load_profile(profile_id) }
61
39
 
62
40
  it 'has metadata' do
63
41
  profile.params[:name].must_equal 'yumyum profile'
@@ -69,13 +47,13 @@ describe Inspec::Profile do
69
47
 
70
48
  it 'can overwrite the profile ID' do
71
49
  testID = rand.to_s
72
- res = load_profile(profile_id, id: testID)
50
+ res = MockLoader.load_profile(profile_id, id: testID)
73
51
  res.params[:name].must_equal testID
74
52
  end
75
53
  end
76
54
 
77
55
  describe 'with simple metadata in profile (legacy mode)' do
78
- let(:profile) { load_profile('legacy-simple-metadata') }
56
+ let(:profile) { MockLoader.load_profile('legacy-simple-metadata') }
79
57
 
80
58
  it 'has metadata' do
81
59
  profile.params[:name].must_equal 'metadata profile'
@@ -91,17 +69,16 @@ describe Inspec::Profile do
91
69
  let(:profile_id) { 'empty-metadata' }
92
70
 
93
71
  it 'prints loads of warnings' do
94
- inspec_yml = "#{home}/mock/profiles/#{profile_id}/inspec.yml"
95
72
  logger.expect :info, nil, ["Checking profile in #{home}/mock/profiles/#{profile_id}"]
96
- logger.expect :error, nil, ["Missing profile name in #{inspec_yml}"]
97
- logger.expect :error, nil, ["Missing profile version in #{inspec_yml}"]
98
- logger.expect :warn, nil, ["Missing profile title in #{inspec_yml}"]
99
- logger.expect :warn, nil, ["Missing profile summary in #{inspec_yml}"]
100
- logger.expect :warn, nil, ["Missing profile maintainer in #{inspec_yml}"]
101
- logger.expect :warn, nil, ["Missing profile copyright in #{inspec_yml}"]
73
+ logger.expect :error, nil, ["Missing profile name in inspec.yml"]
74
+ logger.expect :error, nil, ["Missing profile version in inspec.yml"]
75
+ logger.expect :warn, nil, ["Missing profile title in inspec.yml"]
76
+ logger.expect :warn, nil, ["Missing profile summary in inspec.yml"]
77
+ logger.expect :warn, nil, ["Missing profile maintainer in inspec.yml"]
78
+ logger.expect :warn, nil, ["Missing profile copyright in inspec.yml"]
102
79
  logger.expect :warn, nil, ['No controls or tests were defined.']
103
80
 
104
- result = load_profile(profile_id, {logger: logger}).check
81
+ result = MockLoader.load_profile(profile_id, {logger: logger}).check
105
82
  # verify logger output
106
83
  logger.verify
107
84
 
@@ -121,16 +98,16 @@ describe Inspec::Profile do
121
98
  it 'prints loads of warnings' do
122
99
  metadata_rb = "#{home}/mock/profiles/#{profile_id}/metadata.rb"
123
100
  logger.expect :info, nil, ["Checking profile in #{home}/mock/profiles/#{profile_id}"]
124
- logger.expect :error, nil, ["Missing profile name in #{metadata_rb}"]
101
+ logger.expect :error, nil, ["Missing profile name in metadata.rb"]
125
102
  logger.expect :warn, nil, ['The use of `metadata.rb` is deprecated. Use `inspec.yml`.']
126
- logger.expect :error, nil, ["Missing profile version in #{metadata_rb}"]
127
- logger.expect :warn, nil, ["Missing profile title in #{metadata_rb}"]
128
- logger.expect :warn, nil, ["Missing profile summary in #{metadata_rb}"]
129
- logger.expect :warn, nil, ["Missing profile maintainer in #{metadata_rb}"]
130
- logger.expect :warn, nil, ["Missing profile copyright in #{metadata_rb}"]
103
+ logger.expect :error, nil, ["Missing profile version in metadata.rb"]
104
+ logger.expect :warn, nil, ["Missing profile title in metadata.rb"]
105
+ logger.expect :warn, nil, ["Missing profile summary in metadata.rb"]
106
+ logger.expect :warn, nil, ["Missing profile maintainer in metadata.rb"]
107
+ logger.expect :warn, nil, ["Missing profile copyright in metadata.rb"]
131
108
  logger.expect :warn, nil, ['No controls or tests were defined.']
132
109
 
133
- result = load_profile(profile_id, {logger: logger}).check
110
+ result = MockLoader.load_profile(profile_id, {logger: logger}).check
134
111
  # verify logger output
135
112
  logger.verify
136
113
 
@@ -146,7 +123,7 @@ describe Inspec::Profile do
146
123
 
147
124
  describe 'a complete metadata profile' do
148
125
  let(:profile_id) { 'complete-metadata' }
149
- let(:profile) { load_profile(profile_id, {logger: logger}) }
126
+ let(:profile) { MockLoader.load_profile(profile_id, {logger: logger}) }
150
127
 
151
128
  it 'prints ok messages' do
152
129
  logger.expect :info, nil, ["Checking profile in #{home}/mock/profiles/#{profile_id}"]
@@ -170,7 +147,7 @@ describe Inspec::Profile do
170
147
 
171
148
  describe 'a complete metadata profile (legacy mode)' do
172
149
  let(:profile_id) { 'legacy-complete-metadata' }
173
- let(:profile) { load_profile(profile_id, {logger: logger}) }
150
+ let(:profile) { MockLoader.load_profile(profile_id, {logger: logger}) }
174
151
 
175
152
  it 'prints ok messages' do
176
153
  logger.expect :info, nil, ["Checking profile in #{home}/mock/profiles/#{profile_id}"]
@@ -206,10 +183,10 @@ describe Inspec::Profile do
206
183
  logger.expect :info, nil, ["Checking profile in #{home}/mock/profiles/#{profile_id}"]
207
184
  logger.expect :info, nil, ['Metadata OK.']
208
185
  logger.expect :info, nil, ['Found 1 controls.']
209
- logger.expect :info, nil, ["Verify all controls in #{home}/mock/profiles/#{profile_id}/controls/filesystem_spec.rb"]
186
+ logger.expect :info, nil, ["Verify all controls in controls/filesystem_spec.rb"]
210
187
  logger.expect :info, nil, ['Control definitions OK.']
211
188
 
212
- result = load_profile(profile_id, {logger: logger}).check
189
+ result = MockLoader.load_profile(profile_id, {logger: logger}).check
213
190
  # verify logger output
214
191
  logger.verify
215
192
 
@@ -225,16 +202,17 @@ describe Inspec::Profile do
225
202
 
226
203
  describe 'a complete metadata profile with controls in a tarball' do
227
204
  let(:profile_id) { 'complete-profile' }
228
- let(:profile) { load_profile_tgz(profile_id, {logger: logger}) }
205
+ let(:profile_path) { MockLoader.profile_tgz(profile_id) }
206
+ let(:profile) { MockLoader.load_profile(profile_path, {logger: logger}) }
229
207
 
230
208
  it 'prints ok messages and counts the rules' do
231
209
  logger.expect :info, nil, ["Checking profile in #{home}/mock/profiles/#{profile_id}"]
232
210
  logger.expect :info, nil, ['Metadata OK.']
233
211
  logger.expect :info, nil, ['Found 1 controls.']
234
- logger.expect :info, nil, ["Verify all controls in #{home}/mock/profiles/#{profile_id}/controls/filesystem_spec.rb"]
212
+ logger.expect :info, nil, ["Verify all controls in controls/filesystem_spec.rb"]
235
213
  logger.expect :info, nil, ['Control definitions OK.']
236
214
 
237
- result = load_profile(profile_id, {logger: logger}).check
215
+ result = MockLoader.load_profile(profile_id, {logger: logger}).check
238
216
  # verify logger output
239
217
  logger.verify
240
218
 
@@ -250,16 +228,17 @@ describe Inspec::Profile do
250
228
 
251
229
  describe 'a complete metadata profile with controls in zipfile' do
252
230
  let(:profile_id) { 'complete-profile' }
253
- let(:profile) { load_profile_zip(profile_id, {logger: logger}) }
231
+ let(:profile_path) { MockLoader.profile_zip(profile_id) }
232
+ let(:profile) { MockLoader.load_profile(profile_path, {logger: logger}) }
254
233
 
255
234
  it 'prints ok messages and counts the rules' do
256
235
  logger.expect :info, nil, ["Checking profile in #{home}/mock/profiles/#{profile_id}"]
257
236
  logger.expect :info, nil, ['Metadata OK.']
258
237
  logger.expect :info, nil, ['Found 1 controls.']
259
- logger.expect :info, nil, ["Verify all controls in #{home}/mock/profiles/#{profile_id}/controls/filesystem_spec.rb"]
238
+ logger.expect :info, nil, ["Verify all controls in controls/filesystem_spec.rb"]
260
239
  logger.expect :info, nil, ['Control definitions OK.']
261
240
 
262
- result = load_profile(profile_id, {logger: logger}).check
241
+ result = MockLoader.load_profile(profile_id, {logger: logger}).check
263
242
  # verify logger output
264
243
  logger.verify
265
244