Class: PluginManagerCliUpdate

Inherits:
MiniTest::Test
  • Object
show all
Includes:
CorePluginFunctionalHelper, PluginManagerHelpers
Defined in:
lib/plugins/inspec-plugin-manager-cli/test/functional/inspec-plugin_test.rb

Overview

—————————————————————————————–#

inspec plugin update

—————————————————————————————–#

Constant Summary

Constants included from CorePluginFunctionalHelper

CorePluginFunctionalHelper::TRAIN_CONNECTION

Instance Method Summary collapse

Methods included from PluginManagerHelpers

#clear_empty_config_dir, #copy_in_core_config_dir, #copy_in_project_config_dir, #teardown

Methods included from CorePluginFunctionalHelper

#__find_plugin_path_from_caller, #__make_empty_plugin_file_data_structure, #__make_plugin_file_data_structure_with_path, #run_inspec_process, #run_inspec_process_with_this_plugin

Instance Method Details

#test_fail_update_from_nonexistant_gemObject



628
629
630
631
632
633
634
# File 'lib/plugins/inspec-plugin-manager-cli/test/functional/inspec-plugin_test.rb', line 628

def test_fail_update_from_nonexistant_gem
  update_result = run_inspec_process_with_this_plugin('plugin update inspec-test-fixture-nonesuch')

  assert_empty update_result.stderr
  assert_equal 1, update_result.exit_status, 'Exit status should be 1'
  assert_match(/No such plugin installed: .+ - update failed/, update_result.stdout)
end

#test_fail_update_pathObject



636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
# File 'lib/plugins/inspec-plugin-manager-cli/test/functional/inspec-plugin_test.rb', line 636

def test_fail_update_path
  pre_block = Proc.new do |plugin_statefile_data, tmp_dir|
    plugin_statefile_data.clear # Signal not to write a file, we'll provide one.
    copy_in_core_config_dir('meaning_by_path', tmp_dir)
  end

  update_result = run_inspec_process_with_this_plugin('plugin update inspec-meaning-of-life', pre_run: pre_block)
  assert_empty update_result.stderr
  assert_equal 2, update_result.exit_status, 'Exit status should be 2'

  refusal_message = update_result.stdout.split("\n").grep(/refusing/).last
  refute_nil refusal_message, 'Should find a failure message at the end'
  assert_includes refusal_message, 'inspec-meaning-of-life'
  assert_includes refusal_message, 'inspec plugin uninstall'
  assert_includes refusal_message, 'Cannot update path-based install'
end

#test_refuse_update_when_already_currentObject



611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
# File 'lib/plugins/inspec-plugin-manager-cli/test/functional/inspec-plugin_test.rb', line 611

def test_refuse_update_when_already_current
  pre_block = Proc.new do |plugin_statefile_data, tmp_dir|
    plugin_statefile_data.clear # Signal not to write a file, we'll provide one.
    copy_in_core_config_dir('test-fixture-2-float', tmp_dir)
  end

  update_result = run_inspec_process_with_this_plugin('plugin update inspec-test-fixture', pre_run: pre_block)
  assert_empty update_result.stderr
  assert_equal 2, update_result.exit_status, 'Exit status should be 2'

  refusal_message = update_result.stdout.split("\n").grep(/refusing/).last
  refute_nil refusal_message, 'Should find a failure message at the end'
  assert_includes refusal_message, 'inspec-test-fixture'
  assert_includes refusal_message, '0.2.0'
  assert_includes refusal_message, 'Already installed at latest version'
end

#test_when_a_plugin_can_be_updatedObject



588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
# File 'lib/plugins/inspec-plugin-manager-cli/test/functional/inspec-plugin_test.rb', line 588

def test_when_a_plugin_can_be_updated
  pre_block = Proc.new do |plugin_statefile_data, tmp_dir|
    plugin_statefile_data.clear # Signal not to write a file, we'll provide one.
    copy_in_core_config_dir('test-fixture-1-float', tmp_dir)
  end

  update_result = run_inspec_process_with_this_plugin('plugin update inspec-test-fixture', pre_run: pre_block, post_run: list_after_run)
  assert_empty update_result.stderr
  assert_equal 0, update_result.exit_status, 'Exit status should be 0'

  success_message = update_result.stdout.split("\n").grep(/updated/).last
  refute_nil success_message, 'Should find a success message at the end'
  assert_includes success_message, 'inspec-test-fixture'
  assert_includes success_message, '0.1.0'
  assert_includes success_message, '0.2.0'
  assert_includes success_message, 'updated from rubygems.org'

  list_result = update_result.payload.list_result
  itf_line = list_result.stdout.split("\n").grep(/inspec-test-fixture/).first
  refute_nil itf_line, 'inspec-test-fixture should appear in the output of inspec list'
  assert_match(/\s*inspec-test-fixture\s+0.2.0\s+gem\s+/, itf_line, 'list output should show that it is a gem installation with version 0.2.0')
end