inspec-core 3.7.11 → 3.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -0
  3. data/lib/inspec/reporters/automate.rb +0 -4
  4. data/lib/inspec/reporters/json_automate.rb +7 -1
  5. data/lib/inspec/version.rb +1 -1
  6. metadata +2 -39
  7. data/lib/plugins/inspec-artifact/test/functional/inspec_artifact_test.rb +0 -46
  8. data/lib/plugins/inspec-compliance/test/functional/inspec_compliance_test.rb +0 -43
  9. data/lib/plugins/inspec-compliance/test/integration/default/cli.rb +0 -93
  10. data/lib/plugins/inspec-compliance/test/unit/api/login_test.rb +0 -190
  11. data/lib/plugins/inspec-compliance/test/unit/api_test.rb +0 -385
  12. data/lib/plugins/inspec-compliance/test/unit/target_test.rb +0 -155
  13. data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/Berksfile +0 -2
  14. data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/README.md +0 -3
  15. data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/files/hab_setup.exp +0 -28
  16. data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/metadata.rb +0 -9
  17. data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/recipes/default.rb +0 -61
  18. data/lib/plugins/inspec-habitat/test/functional/inspec_habitat_test.rb +0 -38
  19. data/lib/plugins/inspec-habitat/test/integration/default/inspec_habitat/README.md +0 -3
  20. data/lib/plugins/inspec-habitat/test/integration/default/inspec_habitat/controls/inspec_habitat.rb +0 -40
  21. data/lib/plugins/inspec-habitat/test/integration/default/inspec_habitat/inspec.yml +0 -10
  22. data/lib/plugins/inspec-habitat/test/support/example_profile/README.md +0 -3
  23. data/lib/plugins/inspec-habitat/test/support/example_profile/controls/example.rb +0 -7
  24. data/lib/plugins/inspec-habitat/test/support/example_profile/inspec.yml +0 -10
  25. data/lib/plugins/inspec-habitat/test/unit/profile_test.rb +0 -240
  26. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/fixtures/README.md +0 -24
  27. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/functional/README.md +0 -12
  28. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/functional/inspec_plugin_template_test.rb +0 -110
  29. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/helper.rb +0 -26
  30. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/README.md +0 -17
  31. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/cli_args_test.rb +0 -67
  32. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/plugin_def_test.rb +0 -51
  33. data/lib/plugins/inspec-init/test/functional/inspec_init_plugin_test.rb +0 -173
  34. data/lib/plugins/inspec-init/test/functional/inspec_init_profile_test.rb +0 -100
  35. data/lib/plugins/inspec-plugin-manager-cli/test/fixtures/config_dirs/empty/.gitkeep +0 -0
  36. data/lib/plugins/inspec-plugin-manager-cli/test/fixtures/plugins/inspec-egg-white-omelette/lib/inspec-egg-white-omelette.rb +0 -2
  37. data/lib/plugins/inspec-plugin-manager-cli/test/fixtures/plugins/inspec-egg-white-omelette/lib/inspec-egg-white-omelette/.gitkeep +0 -0
  38. data/lib/plugins/inspec-plugin-manager-cli/test/fixtures/plugins/inspec-wrong-structure/.gitkeep +0 -0
  39. data/lib/plugins/inspec-plugin-manager-cli/test/fixtures/plugins/wrong-name/lib/wrong-name.rb +0 -1
  40. data/lib/plugins/inspec-plugin-manager-cli/test/fixtures/plugins/wrong-name/lib/wrong-name/.gitkeep +0 -0
  41. data/lib/plugins/inspec-plugin-manager-cli/test/functional/inspec-plugin_test.rb +0 -713
  42. data/lib/plugins/inspec-plugin-manager-cli/test/unit/cli_args_test.rb +0 -75
  43. data/lib/plugins/inspec-plugin-manager-cli/test/unit/plugin_def_test.rb +0 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc2e24a1d0645cf7af9be7f62ba7552950180e2691f40202035a9829d4281f0d
4
- data.tar.gz: 97c73d5944fc426dc72ba45db473dbd4bf0688b8da2119f64aced481a4b64989
3
+ metadata.gz: 6060db98285f1a0cdb5d521ad533a502a0481c57ad613baf2c0469d520966f23
4
+ data.tar.gz: 0ccdf80c41296d07328c5fd7bb172e75aca2e9c40acbef9813d7aa442be95c89
5
5
  SHA512:
6
- metadata.gz: 4ac5832d0b35aead187e3c262a4febfcf4133d32296ac0ebf4a2532e816415410530d4d9ec146e516b66332708f926c035a530b4fbeec4b3bbfffaecb6b4c263
7
- data.tar.gz: e6db3be4591461e56cc43f0c1258e43bf7fd625d2e7c24497b22c89c4b7be02272d327aa04ea143252ba5046911da3f12a8e04b71a9c0eb3c6c850bff7489530
6
+ metadata.gz: 5199f204d872c74e1091021828b28f210ba2eb81d164af3365edcddb9ffe6bdb45b261fddb3109c27bd77ac5345cf009145e7c0606754a27530c594e2e511d63
7
+ data.tar.gz: e2c1e9ac924684a2dfb26665a88ee31fc66c6813c7aeb04bf6e312875c5efd69aea924da4e1bf43b27483adaaa1516c35711d8b69aa12c40b0853ac70c234e9a
data/README.md CHANGED
@@ -454,3 +454,4 @@ distributed under the License is distributed on an "AS IS" BASIS,
454
454
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
455
455
  See the License for the specific language governing permissions and
456
456
  limitations under the License.
457
+
@@ -28,10 +28,6 @@ module Inspec::Reporters
28
28
 
29
29
  final_report[:report_uuid] = @config['report_uuid'] || uuid_from_string(final_report[:end_time] + final_report[:node_uuid])
30
30
 
31
- # optional json-config passthrough options
32
- %w{node_name environment roles recipies job_uuid}.each do |option|
33
- final_report[option.to_sym] = @config[option] unless @config[option].nil?
34
- end
35
31
  final_report
36
32
  end
37
33
 
@@ -17,7 +17,7 @@ module Inspec::Reporters
17
17
  # grab profiles from the json parent class
18
18
  @profiles = profiles
19
19
 
20
- {
20
+ output = {
21
21
  platform: platform,
22
22
  profiles: merge_profiles,
23
23
  statistics: {
@@ -25,6 +25,12 @@ module Inspec::Reporters
25
25
  },
26
26
  version: run_data[:version],
27
27
  }
28
+
29
+ # optional json-config passthrough options
30
+ %w{node_name environment roles job_uuid passthrough}.each do |option|
31
+ output[option.to_sym] = @config[option] unless @config[option].nil?
32
+ end
33
+ output
28
34
  end
29
35
 
30
36
  private
@@ -4,5 +4,5 @@
4
4
  # author: Christoph Hartmann
5
5
 
6
6
  module Inspec
7
- VERSION = '3.7.11'
7
+ VERSION = '3.9.0'
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inspec-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.11
4
+ version: 3.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dominik Richter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-22 00:00:00.000000000 Z
11
+ date: 2019-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: train-core
@@ -474,7 +474,6 @@ files:
474
474
  - lib/plugins/inspec-artifact/lib/inspec-artifact.rb
475
475
  - lib/plugins/inspec-artifact/lib/inspec-artifact/base.rb
476
476
  - lib/plugins/inspec-artifact/lib/inspec-artifact/cli.rb
477
- - lib/plugins/inspec-artifact/test/functional/inspec_artifact_test.rb
478
477
  - lib/plugins/inspec-compliance/README.md
479
478
  - lib/plugins/inspec-compliance/lib/inspec-compliance.rb
480
479
  - lib/plugins/inspec-compliance/lib/inspec-compliance/api.rb
@@ -485,11 +484,6 @@ files:
485
484
  - lib/plugins/inspec-compliance/lib/inspec-compliance/images/cc-token.png
486
485
  - lib/plugins/inspec-compliance/lib/inspec-compliance/support.rb
487
486
  - lib/plugins/inspec-compliance/lib/inspec-compliance/target.rb
488
- - lib/plugins/inspec-compliance/test/functional/inspec_compliance_test.rb
489
- - lib/plugins/inspec-compliance/test/integration/default/cli.rb
490
- - lib/plugins/inspec-compliance/test/unit/api/login_test.rb
491
- - lib/plugins/inspec-compliance/test/unit/api_test.rb
492
- - lib/plugins/inspec-compliance/test/unit/target_test.rb
493
487
  - lib/plugins/inspec-habitat/Berksfile
494
488
  - lib/plugins/inspec-habitat/README.md
495
489
  - lib/plugins/inspec-habitat/kitchen.yml
@@ -500,19 +494,6 @@ files:
500
494
  - lib/plugins/inspec-habitat/templates/habitat/default.toml.erb
501
495
  - lib/plugins/inspec-habitat/templates/habitat/hooks/run.erb
502
496
  - lib/plugins/inspec-habitat/templates/habitat/plan.sh.erb
503
- - lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/Berksfile
504
- - lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/README.md
505
- - lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/files/hab_setup.exp
506
- - lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/metadata.rb
507
- - lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/recipes/default.rb
508
- - lib/plugins/inspec-habitat/test/functional/inspec_habitat_test.rb
509
- - lib/plugins/inspec-habitat/test/integration/default/inspec_habitat/README.md
510
- - lib/plugins/inspec-habitat/test/integration/default/inspec_habitat/controls/inspec_habitat.rb
511
- - lib/plugins/inspec-habitat/test/integration/default/inspec_habitat/inspec.yml
512
- - lib/plugins/inspec-habitat/test/support/example_profile/README.md
513
- - lib/plugins/inspec-habitat/test/support/example_profile/controls/example.rb
514
- - lib/plugins/inspec-habitat/test/support/example_profile/inspec.yml
515
- - lib/plugins/inspec-habitat/test/unit/profile_test.rb
516
497
  - lib/plugins/inspec-init/README.md
517
498
  - lib/plugins/inspec-init/lib/inspec-init.rb
518
499
  - lib/plugins/inspec-init/lib/inspec-init/cli.rb
@@ -528,32 +509,14 @@ files:
528
509
  - lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/cli_command.rb
529
510
  - lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/plugin.rb
530
511
  - lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/version.rb
531
- - lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/fixtures/README.md
532
- - lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/functional/README.md
533
- - lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/functional/inspec_plugin_template_test.rb
534
- - lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/helper.rb
535
- - lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/README.md
536
- - lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/cli_args_test.rb
537
- - lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/plugin_def_test.rb
538
512
  - lib/plugins/inspec-init/templates/profiles/os/README.md
539
513
  - lib/plugins/inspec-init/templates/profiles/os/controls/example.rb
540
514
  - lib/plugins/inspec-init/templates/profiles/os/inspec.yml
541
515
  - lib/plugins/inspec-init/templates/profiles/os/libraries/.gitkeep
542
- - lib/plugins/inspec-init/test/functional/inspec_init_plugin_test.rb
543
- - lib/plugins/inspec-init/test/functional/inspec_init_profile_test.rb
544
516
  - lib/plugins/inspec-plugin-manager-cli/README.md
545
517
  - lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli.rb
546
518
  - lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/cli_command.rb
547
519
  - lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/plugin.rb
548
- - lib/plugins/inspec-plugin-manager-cli/test/fixtures/config_dirs/empty/.gitkeep
549
- - lib/plugins/inspec-plugin-manager-cli/test/fixtures/plugins/inspec-egg-white-omelette/lib/inspec-egg-white-omelette.rb
550
- - lib/plugins/inspec-plugin-manager-cli/test/fixtures/plugins/inspec-egg-white-omelette/lib/inspec-egg-white-omelette/.gitkeep
551
- - lib/plugins/inspec-plugin-manager-cli/test/fixtures/plugins/inspec-wrong-structure/.gitkeep
552
- - lib/plugins/inspec-plugin-manager-cli/test/fixtures/plugins/wrong-name/lib/wrong-name.rb
553
- - lib/plugins/inspec-plugin-manager-cli/test/fixtures/plugins/wrong-name/lib/wrong-name/.gitkeep
554
- - lib/plugins/inspec-plugin-manager-cli/test/functional/inspec-plugin_test.rb
555
- - lib/plugins/inspec-plugin-manager-cli/test/unit/cli_args_test.rb
556
- - lib/plugins/inspec-plugin-manager-cli/test/unit/plugin_def_test.rb
557
520
  - lib/plugins/shared/core_plugin_test_helper.rb
558
521
  - lib/plugins/things-for-train-integration.rb
559
522
  - lib/resources/aide_conf.rb
@@ -1,46 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require_relative '../../../shared/core_plugin_test_helper.rb'
4
- require 'fileutils'
5
- require 'securerandom'
6
-
7
- class ArtifactCli < MiniTest::Test
8
- include CorePluginFunctionalHelper
9
-
10
- def test_generating_archive_keys
11
- Dir.mktmpdir do |dir|
12
- unique_key_name = SecureRandom.uuid()
13
- out = run_inspec_process("artifact generate --keyname #{unique_key_name}", prefix: "cd #{dir} &&")
14
- assert_equal 0, out.exit_status
15
-
16
- stdout = out.stdout.force_encoding(Encoding::UTF_8)
17
- assert_includes stdout, 'Generating private key'
18
- assert_includes stdout, 'Generating public key'
19
- end
20
- end
21
-
22
- def test_verify_and_install_signed_profile
23
- Dir.mktmpdir do |dir|
24
- unique_key_name = SecureRandom.uuid()
25
- install_dir = File.join(dir, SecureRandom.uuid())
26
- profile = File.join(dir, 'profile')
27
- FileUtils.mkdir(install_dir)
28
-
29
- # create profile
30
- profile = File.join(dir, 'artifact-profile')
31
- run_inspec_process("init profile artifact-profile", prefix: "cd #{dir} &&")
32
-
33
- out = run_inspec_process("artifact generate --keyname #{unique_key_name}", prefix: "cd #{dir} &&")
34
- assert_equal 0, out.exit_status
35
-
36
- out = run_inspec_process("artifact sign-profile --profile #{profile} --keyname #{unique_key_name}", prefix: "cd #{dir} &&")
37
- assert_equal 0, out.exit_status
38
-
39
- out = run_inspec_process("artifact install-profile --infile artifact-profile-0.1.0.iaf --destdir #{install_dir}", prefix: "cd #{dir} &&")
40
- assert_equal 0, out.exit_status
41
-
42
- assert_includes out.stdout.force_encoding(Encoding::UTF_8), "Installing to #{install_dir}"
43
- assert_includes Dir.entries(install_dir).join, 'inspec.yml'
44
- end
45
- end
46
- end
@@ -1,43 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require_relative '../../../shared/core_plugin_test_helper.rb'
4
-
5
- class ComplianceCli < MiniTest::Test
6
- include CorePluginFunctionalHelper
7
-
8
- def test_help_output
9
- out = run_inspec_process('compliance help')
10
- assert_equal out.exit_status, 0
11
- assert_includes out.stdout, 'inspec compliance exec PROFILE'
12
- end
13
-
14
- def test_logout_command
15
- out = run_inspec_process('compliance logout')
16
- assert_equal out.exit_status, 0
17
- assert_includes out.stdout, ''
18
- end
19
-
20
- def test_error_login_with_invalid_url
21
- out = run_inspec_process('compliance login')
22
- assert_equal out.exit_status, 1
23
- assert_includes out.stderr, 'ERROR: "inspec compliance login" was called with no arguments'
24
- end
25
-
26
- def test_profile_list_without_auth
27
- out = run_inspec_process('compliance profiles')
28
- assert_equal out.exit_status, 0 # TODO: make this error
29
- assert_includes out.stdout, 'You need to login first with `inspec compliance login`'
30
- end
31
-
32
- def test_error_upload_without_args
33
- out = run_inspec_process('compliance upload')
34
- assert_equal out.exit_status, 1
35
- assert_includes out.stderr, 'ERROR: "inspec compliance upload" was called with no arguments'
36
- end
37
-
38
- def test_error_upload_with_fake_path
39
- out = run_inspec_process('compliance upload /path/to/dir')
40
- assert_equal out.exit_status, 0 # TODO: make this error
41
- assert_includes out.stdout, 'You need to login first with `inspec compliance login`'
42
- end
43
- end
@@ -1,93 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # options
4
- inspec_bin = 'BUNDLE_GEMFILE=/inspec/Gemfile bundle exec inspec'
5
- api_url = 'https://0.0.0.0'
6
- profile = '/inspec/examples/profile'
7
-
8
- user = command('whoami').stdout.strip
9
- pwd = command('pwd').stdout.strip
10
- puts "Run test as #{user} in path #{pwd}"
11
-
12
- # TODO: determine tokens automatically, define in kitchen yml
13
- access_token = ENV['COMPLIANCE_ACCESSTOKEN']
14
- refresh_token = ENV['COMPLIANCE_REFRESHTOKEN']
15
-
16
- %w{refresh_token access_token}.each do |type| # rubocop:disable Metrics/BlockLength
17
- case type
18
- when 'access_token'
19
- token_options = "--token '#{access_token}'"
20
- when 'refresh_token'
21
- token_options = "--refresh_token '#{refresh_token}'"
22
- end
23
-
24
- # verifies that the help command works
25
- describe command("#{inspec_bin} compliance help") do
26
- its('stdout') { should include 'inspec compliance help [COMMAND]' }
27
- its('stderr') { should eq '' }
28
- its('exit_status') { should eq 0 }
29
- end
30
-
31
- # version command fails gracefully when server not configured
32
- describe command("#{inspec_bin} compliance version") do
33
- its('stdout') { should include 'Server configuration information is missing' }
34
- its('stderr') { should eq '' }
35
- its('exit_status') { should eq 1 }
36
- end
37
-
38
- # submitting a wrong token should have an exit of 0
39
- describe command("#{inspec_bin} compliance login #{api_url} --insecure --user 'admin' --token 'wrong-token'") do
40
- its('stdout') { should include 'token stored' }
41
- end
42
-
43
- # compliance login --help should give an accurate message for login
44
- describe command("#{inspec_bin} compliance login --help") do
45
- its('stdout') { should include "inspec compliance login SERVER --insecure --user='USER' --token='TOKEN'" }
46
- its('exit_status') { should eq 0 }
47
- end
48
-
49
- # profiles command fails gracefully when token/server info is incorrect
50
- describe command("#{inspec_bin} compliance profiles") do
51
- its('stdout') { should include '401 Unauthorized. Please check your token' }
52
- its('stderr') { should eq '' }
53
- its('exit_status') { should eq 1 }
54
- end
55
-
56
- # login via access token token
57
- describe command("#{inspec_bin} compliance login #{api_url} --insecure --user 'admin' #{token_options}") do
58
- its('stdout') { should include 'token', 'stored' }
59
- its('stdout') { should_not include 'Your server supports --user and --password only' }
60
- its('stderr') { should eq '' }
61
- its('exit_status') { should eq 0 }
62
- end
63
-
64
- # see available resources
65
- describe command("#{inspec_bin} compliance profiles") do
66
- its('stdout') { should include 'base/ssh' }
67
- its('stderr') { should eq '' }
68
- its('exit_status') { should eq 0 }
69
- end
70
-
71
- # upload a compliance profile
72
- describe command("#{inspec_bin} compliance upload #{profile} --overwrite") do
73
- its('stdout') { should include 'Profile is valid' }
74
- its('stdout') { should include 'Successfully uploaded profile' }
75
- its('stdout') { should_not include 'error(s)' }
76
- its('stderr') { should eq '' }
77
- its('exit_status') { should eq 0 }
78
- end
79
-
80
- # returns the version of the server
81
- describe command("#{inspec_bin} compliance version") do
82
- its('stdout') { should include 'Chef Compliance version:' }
83
- its('stderr') { should eq '' }
84
- its('exit_status') { should eq 0 }
85
- end
86
-
87
- # logout
88
- describe command("#{inspec_bin} compliance logout") do
89
- its('stdout') { should include 'Successfully logged out' }
90
- its('stderr') { should eq '' }
91
- its('exit_status') { should eq 0 }
92
- end
93
- end
@@ -1,190 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'mocha/setup'
3
- require 'webmock/minitest'
4
- require_relative '../../../lib/inspec-compliance/api.rb'
5
-
6
- describe InspecPlugins::Compliance::API do
7
- let(:automate_options) do
8
- {
9
- 'server' => 'https://automate.example.com',
10
- 'ent' => 'automate',
11
- 'user' => 'someone',
12
- 'token' => 'token',
13
- }
14
- end
15
-
16
- let(:compliance_options) do
17
- {
18
- 'server' => 'https://compliance.example.com',
19
- 'user' => 'someone',
20
- 'password' => 'password',
21
- 'token' => 'token',
22
- 'refresh_token' => 'refresh_token',
23
- }
24
- end
25
-
26
- let(:fake_config) do
27
- class FakeConfig
28
- def initialize
29
- @config = {}
30
- end
31
-
32
- def [](key)
33
- @config[key]
34
- end
35
-
36
- def []=(key, value)
37
- @config[key] = value
38
- end
39
-
40
- def clean
41
- @config = {}
42
- end
43
-
44
- def store
45
- nil
46
- end
47
- end
48
-
49
- FakeConfig.new
50
- end
51
-
52
- describe '.login' do
53
- describe 'when target is a Chef Automate2 server' do
54
- before do
55
- InspecPlugins::Compliance::API.expects(:determine_server_type).returns(:automate2)
56
- end
57
-
58
- it 'raises an error if `--user` is missing' do
59
- options = automate_options
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)
64
- end
65
-
66
- it 'raises an error if `--token` and `--dctoken` are missing' do
67
- options = automate_options
68
- options.delete('token')
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)
73
- end
74
-
75
- it 'stores an access token' do
76
- stub_request(:get, automate_options['server'] + '/compliance/version')
77
- .to_return(status: 200, body: '', headers: {})
78
- options = automate_options
79
- InspecPlugins::Compliance::Configuration.expects(:new).returns(fake_config)
80
-
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')
88
- end
89
- end
90
-
91
- describe 'when target is a Chef Automate server' do
92
- before do
93
- InspecPlugins::Compliance::API.expects(:determine_server_type).returns(:automate)
94
- end
95
-
96
- it 'raises an error if `--user` is missing' do
97
- options = automate_options
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)
102
- end
103
-
104
- it 'raises an error if `--ent` is missing' do
105
- options = automate_options
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)
110
- end
111
-
112
- it 'raises an error if `--token` and `--dctoken` are missing' do
113
- options = automate_options
114
- options.delete('token')
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)
119
- end
120
-
121
- it 'stores an access token' do
122
- stub_request(:get, automate_options['server'] + '/compliance/version')
123
- .to_return(status: 200, body: '', headers: {})
124
- options = automate_options
125
- InspecPlugins::Compliance::Configuration.expects(:new).returns(fake_config)
126
-
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')
134
- end
135
- end
136
-
137
- describe 'when target is a Chef Compliance server' do
138
- before do
139
- InspecPlugins::Compliance::API.expects(:determine_server_type).returns(:compliance)
140
- end
141
-
142
- it 'raises an error if `--user` and `--refresh-token` are missing' do
143
- options = automate_options
144
- options.delete('user')
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)
149
- end
150
-
151
- it 'raises an error if `--user` is present but authentication method missing' do
152
- options = automate_options
153
- options.delete('password')
154
- options.delete('token')
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)
159
- end
160
-
161
- it 'stores an access token' do
162
- stub_request(:get, compliance_options['server'] + '/api/version')
163
- .to_return(status: 200, body: '', headers: {})
164
- options = compliance_options
165
- InspecPlugins::Compliance::Configuration.expects(:new).returns(fake_config)
166
-
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')
172
- end
173
- end
174
-
175
- describe 'when target is neither a Chef Compliance nor Chef Automate server' do
176
- it 'raises an error if `https://SERVER` is missing' do
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)
181
- end
182
-
183
- it 'rasies a `CannotDetermineServerType` error' do
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/)
187
- end
188
- end
189
- end
190
- end