foreman_salt 16.0.0 → 16.0.2

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: dc167b6e792db0de955ccd75c4b89e1ceefb1556ed883f68577515b7ae648c81
4
- data.tar.gz: 1b5506b277e0afbbde3d87c2ee5ed9f28bb13e683ad4605b22cae635d01f869c
3
+ metadata.gz: 1e0e128301ee5900c260c90bc80750a764b4069a0b9469c4586acca098841333
4
+ data.tar.gz: 42a8c75b129c9ee1b4c2e25e46d5ab24cb0535662f97c689c3e2583361a97414
5
5
  SHA512:
6
- metadata.gz: cf3a626de85a1e15316858c74413dfc0cca3cdc52b3e0745b76ecaa2a9d885e843b16b22661e6c0208ea07e6dd60a918cb270a48d50d2e1b22285cc48132ffb9
7
- data.tar.gz: 15a3b21c30535c061ed09497d2d008ed4af79ce3570fab05322692094aeab243ff93f853ce1a348372332e302da596df47138d5ea4adc12e39ba16c29e3488f8
6
+ metadata.gz: bd9a20bd1372f8a8623fae1b0746238781c646a95b24c2e733e0133092c199c9e2a92b9583fc9a1503a492164ff5e8918b432f8257cc04091f05917c90afec93
7
+ data.tar.gz: a48416f753cd0141f0afd91eb681fed75cfbd865b530c5bb4c8137d3796c98504563af8dc64fce04df2695636c8a2a7baeaed79d236a4660a060fa9deb4dfa78
data/Rakefile CHANGED
@@ -4,6 +4,7 @@ begin
4
4
  rescue LoadError
5
5
  puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
6
  end
7
+
7
8
  begin
8
9
  require 'rdoc/task'
9
10
  rescue LoadError
@@ -20,9 +21,6 @@ RDoc::Task.new(:rdoc) do |rdoc|
20
21
  rdoc.rdoc_files.include('lib/**/*.rb')
21
22
  end
22
23
 
23
- APP_RAKEFILE = File.expand_path('test/dummy/Rakefile', __dir__)
24
- load 'rails/tasks/engine.rake'
25
-
26
24
  Bundler::GemHelper.install_tasks
27
25
 
28
26
  require 'rake/testtask'
@@ -34,4 +32,12 @@ Rake::TestTask.new(:test) do |t|
34
32
  t.verbose = false
35
33
  end
36
34
 
35
+ begin
36
+ require 'rubocop/rake_task'
37
+ rescue LoadError
38
+ # Test group disabled
39
+ else
40
+ RuboCop::RakeTask.new
41
+ end
42
+
37
43
  task default: :test
@@ -63,11 +63,11 @@ module ForemanSalt
63
63
  end
64
64
 
65
65
  def clean_orphans
66
- SaltModule.all.each do |state|
66
+ SaltModule.all.find_each do |state|
67
67
  state.destroy if state.salt_environments.empty?
68
68
  end
69
69
 
70
- SaltEnvironment.all.each do |environment|
70
+ SaltEnvironment.all.find_each do |environment|
71
71
  environment.destroy if environment.salt_modules.empty?
72
72
  end
73
73
  end
@@ -11,7 +11,7 @@ module ForemanSalt
11
11
  has_many :salt_module_environments
12
12
  has_many :salt_modules, through: :salt_module_environments, before_remove: :remove_from_hosts
13
13
 
14
- validates :name, uniqueness: true, presence: true, format: { with: /\A[\w\d.]+\z/, message: N_('is alphanumeric and cannot contain spaces') }
14
+ validates :name, uniqueness: true, presence: true, format: { with: /\A[\w\d\-.]+\z/, message: N_('is alphanumeric and cannot contain spaces') }
15
15
 
16
16
  scoped_search on: :name, complete_value: true
17
17
  scoped_search relation: :hostgroups, on: :name, complete_value: true, rename: :hostgroup
@@ -1,6 +1,6 @@
1
1
  class FixIncorrectReportMetrics < ActiveRecord::Migration[4.2]
2
2
  def up
3
- Report.all.each do |report|
3
+ Report.all.find_each do |report|
4
4
  next unless report.metrics && report.metrics['time']
5
5
 
6
6
  metrics = report.metrics.dup
@@ -6,7 +6,7 @@ class AddEnvironmentsToModules < ActiveRecord::Migration[4.2]
6
6
  end
7
7
 
8
8
  environments = ForemanSalt::SaltEnvironment.all
9
- ForemanSalt::SaltModule.all.each do |state|
9
+ ForemanSalt::SaltModule.all.find_each do |state|
10
10
  state.salt_environments << environments
11
11
  end
12
12
  end
@@ -1,3 +1,3 @@
1
1
  module ForemanSalt
2
- VERSION = '16.0.0'.freeze
2
+ VERSION = '16.0.2'.freeze
3
3
  end
@@ -13,18 +13,21 @@ module ForemanSalt
13
13
 
14
14
  test 'should get index' do
15
15
  get :index, params: { smart_proxy_id: @proxy.id }
16
+
16
17
  assert_response :success
17
18
  end
18
19
 
19
20
  test 'should create autosign' do
20
21
  ProxyAPI::Salt.any_instance.expects(:autosign_create).once.returns(true)
21
22
  post :create, params: { smart_proxy_id: @proxy.id, record: 'unicorn.example.com' }
23
+
22
24
  assert_response :success
23
25
  end
24
26
 
25
27
  test 'should delete autosign' do
26
28
  ProxyAPI::Salt.any_instance.expects(:autosign_remove).once.returns(true)
27
29
  delete :destroy, params: { smart_proxy_id: @proxy.id, record: 'unicorn.example.com' }
30
+
28
31
  assert_response :success
29
32
  end
30
33
  end
@@ -6,6 +6,7 @@ module ForemanSalt
6
6
  class SaltEnvironmentsControllerTest < ActionController::TestCase
7
7
  test 'should get index' do
8
8
  get :index
9
+
9
10
  assert_response :success
10
11
  assert_template 'api/v2/salt_environments/index'
11
12
  end
@@ -13,12 +14,14 @@ module ForemanSalt
13
14
  test 'should show environment' do
14
15
  environment = ForemanSalt::SaltEnvironment.create(name: 'foo')
15
16
  get :show, params: { id: environment.id }
17
+
16
18
  assert_response :success
17
19
  assert_template 'api/v2/salt_environments/show'
18
20
  end
19
21
 
20
22
  test 'should create environment' do
21
23
  post :create, params: { environment: { name: 'unicorn' } }
24
+
22
25
  assert_response :success
23
26
  assert ForemanSalt::SaltEnvironment.find_by(name: 'unicorn')
24
27
  assert_template 'api/v2/salt_environments/create'
@@ -13,18 +13,21 @@ module ForemanSalt
13
13
 
14
14
  test 'should get index' do
15
15
  get :index, params: { smart_proxy_id: @proxy.id }
16
+
16
17
  assert_response :success
17
18
  end
18
19
 
19
20
  test 'should update keys' do
20
21
  ProxyAPI::Salt.any_instance.expects(:key_accept).once.returns(true)
21
22
  put :update, params: { smart_proxy_id: @proxy.id, name: 'saltstack.example.com', state: 'accepted' }
23
+
22
24
  assert_response :success
23
25
  end
24
26
 
25
27
  test 'should delete keys' do
26
28
  ProxyAPI::Salt.any_instance.expects(:key_delete).once.returns(true)
27
29
  delete :destroy, params: { smart_proxy_id: @proxy.id, name: 'saltstack.example.com' }
30
+
28
31
  assert_response :success
29
32
  end
30
33
  end
@@ -6,6 +6,7 @@ module ForemanSalt
6
6
  class SaltStatesControllerTest < ActionController::TestCase
7
7
  test 'should get index' do
8
8
  get :index
9
+
9
10
  assert_response :success
10
11
  assert_template 'api/v2/salt_states/index'
11
12
  end
@@ -13,12 +14,14 @@ module ForemanSalt
13
14
  test 'should show state' do
14
15
  state = ForemanSalt::SaltModule.create(name: 'foo.bar.baz')
15
16
  get :show, params: { id: state.id }
17
+
16
18
  assert_response :success
17
19
  assert_template 'api/v2/salt_states/show'
18
20
  end
19
21
 
20
22
  test 'should create state' do
21
23
  post :create, params: { state: { name: 'unicorn' } }
24
+
22
25
  assert_response :success
23
26
  assert ForemanSalt::SaltModule.find_by(name: 'unicorn')
24
27
  assert_template 'api/v2/salt_states/create'
@@ -48,12 +51,14 @@ module ForemanSalt
48
51
 
49
52
  @states.each do |env, states|
50
53
  environment = ::ForemanSalt::SaltEnvironment.find_by(name: env)
54
+
51
55
  assert_empty environment.salt_modules.map(&:name) - states
52
56
  end
53
57
  end
54
58
 
55
59
  test 'should import only from a given environment' do
56
60
  post :import, params: { smart_proxy_id: @proxy.id, salt_environments: ['env2'] }
61
+
57
62
  assert_response :success
58
63
  assert_not ::ForemanSalt::SaltEnvironment.where(name: 'env1').first
59
64
  assert ::ForemanSalt::SaltEnvironment.where(name: 'env2').first
@@ -64,6 +69,7 @@ module ForemanSalt
64
69
  state = FactoryBot.create :salt_module, salt_environments: [env]
65
70
 
66
71
  post :import, params: { smart_proxy_id: @proxy.id, actions: ['add'] }
72
+
67
73
  assert_response :success
68
74
  assert ::ForemanSalt::SaltModule.where(id: state).first
69
75
  assert ::ForemanSalt::SaltModule.where(name: 'state1').first
@@ -72,6 +78,7 @@ module ForemanSalt
72
78
  test 'should limit actions to remove' do
73
79
  state = FactoryBot.create :salt_module
74
80
  post :import, params: { smart_proxy_id: @proxy.id, actions: ['remove'] }
81
+
75
82
  assert_response :success
76
83
  assert_not ::ForemanSalt::SaltModule.where(id: state).first
77
84
  assert_not ::ForemanSalt::SaltModule.where(name: 'state1').first
@@ -79,6 +86,7 @@ module ForemanSalt
79
86
 
80
87
  test 'dryrun should do nothing' do
81
88
  post :import, params: { smart_proxy_id: @proxy.id, dryrun: true }
89
+
82
90
  assert_response :success
83
91
  assert_not ::ForemanSalt::SaltModule.all.any?
84
92
  assert_not ::ForemanSalt::SaltEnvironment.all.any?
@@ -14,12 +14,14 @@ module ForemanSalt
14
14
  test 'should get index' do
15
15
  get :index, session: set_session_user
16
16
  response = JSON.parse(@response.body)
17
+
17
18
  assert_not_empty response['results']
18
19
  assert_response :success
19
20
  end
20
21
 
21
22
  test 'should destroy' do
22
23
  delete :destroy, params: { id: @variable.id }, session: set_session_user
24
+
23
25
  assert_response :ok
24
26
  assert_not SaltVariable.exists?(@variable.id)
25
27
  end
@@ -27,6 +29,7 @@ module ForemanSalt
27
29
  test 'should create' do
28
30
  params = { key: 'test name', salt_state_id: FactoryBot.create(:salt_module).id }
29
31
  post :create, params: params, session: set_session_user
32
+
30
33
  assert_response :success
31
34
  end
32
35
  end
@@ -21,6 +21,7 @@ module ForemanSalt
21
21
 
22
22
  post :update_multiple_salt_master, params: params,
23
23
  session: set_session_user.merge(user: users(:one).id)
24
+
24
25
  assert_response :forbidden
25
26
  end
26
27
 
@@ -79,6 +80,7 @@ module ForemanSalt
79
80
 
80
81
  post :update_multiple_salt_environment, params: params,
81
82
  session: set_session_user.merge(user: users(:one).id)
83
+
82
84
  assert_response :forbidden
83
85
  end
84
86
 
@@ -18,9 +18,11 @@ module ForemanSalt
18
18
 
19
19
  test 'salt smart proxy should get salt external node' do
20
20
  get :node, params: { id: @host, format: 'yml' }
21
+
21
22
  assert_response :success
22
23
 
23
24
  res = YAML.safe_load(@response.body)
25
+
24
26
  assert_equal('different', res['parameters']['parameter1'])
25
27
  end
26
28
 
@@ -28,9 +30,11 @@ module ForemanSalt
28
30
  Setting['salt_namespace_pillars'] = true
29
31
 
30
32
  get :node, params: { id: @host, format: 'yml' }
33
+
31
34
  assert_response :success
32
35
 
33
36
  res = YAML.safe_load(@response.body)
37
+
34
38
  assert_equal('different', res['parameters']['foreman']['parameter1'])
35
39
  end
36
40
 
@@ -40,9 +44,11 @@ module ForemanSalt
40
44
  @host.salt_modules << var.salt_module
41
45
 
42
46
  get :node, params: { id: @host, format: 'yml' }
47
+
43
48
  assert_response :success
44
49
 
45
50
  res = YAML.safe_load(@response.body)
51
+
46
52
  assert_equal res['parameters'][var.key], var.value
47
53
  end
48
54
 
@@ -52,9 +58,11 @@ module ForemanSalt
52
58
  @host.salt_modules << var.salt_module
53
59
 
54
60
  get :node, params: { id: @host, format: 'yml' }
61
+
55
62
  assert_response :success
56
63
 
57
64
  res = YAML.safe_load(@response.body)
65
+
58
66
  assert_equal res['parameters']['parameter1'], var.value
59
67
  end
60
68
 
@@ -70,9 +78,11 @@ module ForemanSalt
70
78
  @host.salt_modules << var.salt_module
71
79
 
72
80
  get :node, params: { id: @host, format: 'yml' }
81
+
73
82
  assert_response :success
74
83
 
75
84
  res = YAML.safe_load(@response.body)
85
+
76
86
  assert_equal res['parameters']['parameter1'], value2.value
77
87
  end
78
88
 
@@ -87,9 +97,11 @@ module ForemanSalt
87
97
  @host2.salt_modules << var.salt_module
88
98
 
89
99
  get :node, params: { id: @host2, format: 'yml' }
100
+
90
101
  assert_response :success
91
102
 
92
103
  res = YAML.safe_load(@response.body)
104
+
93
105
  assert_equal res['parameters']['parameter1'], value2.value
94
106
  end
95
107
 
@@ -104,9 +116,11 @@ module ForemanSalt
104
116
  var.salt_module.salt_environments << @host2.salt_environment
105
117
  @host2.salt_modules << var.salt_module
106
118
  get :node, params: { id: @host2, format: 'yml' }
119
+
107
120
  assert_response :success
108
121
 
109
122
  res = YAML.safe_load(@response.body)
123
+
110
124
  assert_equal res['parameters']['parameter1'], var.value
111
125
  end
112
126
  end
@@ -29,23 +29,26 @@ module ForemanSalt
29
29
  assert page.has_no_selector?('input.host_select_boxes:not(:checked)')
30
30
 
31
31
  # Dropdown visible?
32
- assert multiple_actions_div.find('.dropdown-toggle').visible?
32
+ assert_predicate multiple_actions_div.find('.dropdown-toggle'), :visible?
33
33
  multiple_actions_div.find('.dropdown-toggle').click
34
- assert multiple_actions_div.find('ul').visible?
34
+
35
+ assert_predicate multiple_actions_div.find('ul'), :visible?
35
36
 
36
37
  # Hosts are added to cookie
37
38
  host_ids_on_cookie = JSON.parse(CGI.unescape(get_me_the_cookie('_ForemanSelectedhosts')&.fetch(:value)))
39
+
38
40
  assert_includes(host_ids_on_cookie, @host.id)
39
41
 
40
42
  within('#submit_multiple') do
41
43
  click_on('Change Salt Master')
42
44
  end
43
45
 
44
- assert index_modal.visible?, 'Modal window was shown'
46
+ assert_predicate index_modal, :visible?, 'Modal window was shown'
45
47
  page.find('#proxy_proxy_id').find("option[value='#{@host.salt_proxy.id}']").select_option
46
48
 
47
49
  # remove hosts cookie on submit
48
50
  index_modal.find('.btn-primary').click
51
+
49
52
  assert_current_path hosts_path
50
53
  assert_empty(get_me_the_cookie('_ForemanSelectedhosts'))
51
54
  end
@@ -58,23 +61,26 @@ module ForemanSalt
58
61
  assert page.has_no_selector?('input.host_select_boxes:not(:checked)')
59
62
 
60
63
  # Dropdown visible?
61
- assert multiple_actions_div.find('.dropdown-toggle').visible?
64
+ assert_predicate multiple_actions_div.find('.dropdown-toggle'), :visible?
62
65
  multiple_actions_div.find('.dropdown-toggle').click
63
- assert multiple_actions_div.find('ul').visible?
66
+
67
+ assert_predicate multiple_actions_div.find('ul'), :visible?
64
68
 
65
69
  # Hosts are added to cookie
66
70
  host_ids_on_cookie = JSON.parse(CGI.unescape(get_me_the_cookie('_ForemanSelectedhosts')&.fetch(:value)))
71
+
67
72
  assert_includes(host_ids_on_cookie, @host.id)
68
73
 
69
74
  within('#submit_multiple') do
70
75
  click_on('Change Salt Environment')
71
76
  end
72
77
 
73
- assert index_modal.visible?, 'Modal window was shown'
78
+ assert_predicate index_modal, :visible?, 'Modal window was shown'
74
79
  page.find('#salt_environment_id').find("option[value='#{@host.salt_environment.id}']").select_option
75
80
 
76
81
  # remove hosts cookie on submit
77
82
  index_modal.find('.btn-primary').click
83
+
78
84
  assert_current_path hosts_path
79
85
  assert_empty(get_me_the_cookie('_ForemanSelectedhosts'))
80
86
  end
@@ -17,19 +17,23 @@ module ForemanSalt
17
17
 
18
18
  test 'smart proxy details has autosign link' do
19
19
  visit smart_proxy_path(@proxy)
20
+
20
21
  assert page.has_link? 'Salt Autosign'
21
22
  click_link 'Salt Autosign'
23
+
22
24
  assert page.has_title?("Autosign entries for #{@proxy.hostname}"), 'Page title does not appear'
23
25
  end
24
26
 
25
27
  test 'index page' do
26
28
  visit smart_proxy_salt_autosign_index_path(smart_proxy_id: @proxy.id)
27
- assert find_link('Keys').visible?, 'Keys is not visible'
29
+
30
+ assert_predicate find_link('Keys'), :visible?, 'Keys is not visible'
28
31
  assert has_title?("Autosign entries for #{@proxy.hostname}"), 'Page title does not appear'
29
32
  end
30
33
 
31
34
  test 'has list of autosign' do
32
35
  visit smart_proxy_salt_autosign_index_path(smart_proxy_id: @proxy.id)
36
+
33
37
  assert has_content?('foo.example.com'), 'Missing autosign entry on index page'
34
38
  end
35
39
  end
@@ -5,12 +5,14 @@ module ForemanSalt
5
5
  class SaltEnvironmentTest < IntegrationTestWithJavascript
6
6
  test 'index page' do
7
7
  FactoryBot.create_list :salt_environment, 5
8
+
8
9
  assert_index_page(salt_environments_path, 'Salt Environment', 'New Salt Environment')
9
10
  end
10
11
 
11
12
  test 'create new page' do
12
13
  assert_new_button(salt_environments_path, 'New Salt Environment', new_salt_environment_path)
13
14
  fill_in 'foreman_salt_salt_environment_name', with: 'common'
15
+
14
16
  assert_submit_button(salt_environments_path)
15
17
  assert page.has_link? 'common'
16
18
  end
@@ -20,6 +22,7 @@ module ForemanSalt
20
22
  visit salt_environments_path
21
23
  click_link salt_environment.name
22
24
  fill_in 'foreman_salt_salt_environment_name', with: 'some_other_name'
25
+
23
26
  assert_submit_button(salt_environments_path)
24
27
  assert page.has_link? 'some_other_name'
25
28
  end
@@ -20,29 +20,35 @@ module ForemanSalt
20
20
 
21
21
  test 'smart proxy details has keys link' do
22
22
  visit smart_proxy_path(@proxy)
23
+
23
24
  assert page.has_link? 'Salt Keys'
24
25
  click_link 'Salt Keys'
26
+
25
27
  assert page.has_title?("Salt Keys on #{@proxy}"), 'Page title does not appear'
26
28
  end
27
29
 
28
30
  test 'index page' do
29
31
  visit smart_proxy_salt_keys_path(smart_proxy_id: @proxy.id)
32
+
30
33
  assert has_title?("Salt Keys on #{@proxy}"), 'Page title does not appear'
31
34
  end
32
35
 
33
36
  test 'has list of keys' do
34
37
  visit smart_proxy_salt_keys_path(smart_proxy_id: @proxy.id)
38
+
35
39
  assert has_content?('saltclient01.example.com'), 'Missing key on index page'
36
40
  assert has_content?('98:c2:63:c1:57:59:bc:bd:f1:ef:5a:38:b2:e9:71:c1'), 'Missing fingerprint on index page'
37
41
  end
38
42
 
39
43
  test 'has accept link' do
40
44
  ProxyAPI::Salt.any_instance.stubs(:key_accept).returns(true)
45
+
41
46
  assert_row_button(smart_proxy_salt_keys_path(smart_proxy_id: @proxy.id), 'saltclient01.example.com', 'Accept', dropdown: true)
42
47
  end
43
48
 
44
49
  test 'has reject link' do
45
50
  ProxyAPI::Salt.any_instance.stubs(:key_reject).returns(true)
51
+
46
52
  assert_row_button(smart_proxy_salt_keys_path(smart_proxy_id: @proxy.id), 'saltclient01.example.com', 'Reject', dropdown: true)
47
53
  end
48
54
  end
@@ -14,12 +14,14 @@ module ForemanSalt
14
14
 
15
15
  test 'index page' do
16
16
  FactoryBot.create_list :salt_module, 5
17
+
17
18
  assert_index_page(salt_modules_path, 'Salt State', 'New Salt State')
18
19
  end
19
20
 
20
21
  test 'create new page' do
21
22
  assert_new_button(salt_modules_path, 'New Salt State', new_salt_module_path)
22
23
  fill_in 'foreman_salt_salt_module_name', with: 'common'
24
+
23
25
  assert_submit_button(salt_modules_path)
24
26
  assert page.has_link? 'common'
25
27
  end
@@ -29,6 +31,7 @@ module ForemanSalt
29
31
  visit salt_modules_path
30
32
  click_link salt_module.name
31
33
  fill_in :foreman_salt_salt_module_name, with: 'some_other_name'
34
+
32
35
  assert_submit_button(salt_modules_path)
33
36
  assert page.has_link? 'some_other_name'
34
37
  end
@@ -50,6 +53,7 @@ module ForemanSalt
50
53
  all('input.state_check').each { |checkbox| check(checkbox[:id]) }
51
54
 
52
55
  click_button 'Update'
56
+
53
57
  assert page.has_link? 'state1'
54
58
  end
55
59
  end
@@ -9,14 +9,17 @@ module ForemanSalt
9
9
 
10
10
  test 'index page' do
11
11
  FactoryBot.create_list :salt_variable, 5
12
+
12
13
  assert_index_page(salt_variables_path, 'Salt Variable', 'New Salt Variable')
13
14
  end
14
15
 
15
16
  test 'create new page' do
16
17
  state = FactoryBot.create :salt_module
18
+
17
19
  assert_new_button(salt_variables_path, 'New Salt Variable', new_salt_variable_path)
18
20
  fill_in 'foreman_salt_salt_variable_key', with: 'mykey'
19
21
  select2(state.name, from: 'foreman_salt_salt_variable_salt_module_id')
22
+
20
23
  assert_submit_button(salt_variables_path)
21
24
  assert page.has_link? 'mykey'
22
25
  end
@@ -28,6 +28,7 @@ module ForemanSalt
28
28
  test 'nested facts have valid parents' do
29
29
  parent = ::FactName.find_by(name: 'cpu_flags')
30
30
  children = @imported_host.fact_values.with_fact_parent_id(parent)
31
+
31
32
  assert_not_empty children
32
33
  assert_empty children.map(&:fact_name).reject { |fact| fact.name =~ /\Acpu_flags#{FactName::SEPARATOR}[0-9]+/ }
33
34
  end
@@ -59,6 +60,7 @@ module ForemanSalt
59
60
 
60
61
  test 'imported host has additional interface' do
61
62
  nic = @imported_host.interfaces.find_by(identifier: 'eth1')
63
+
62
64
  assert_equal('de:ad:be:ef:07:13', nic.mac)
63
65
  assert_equal('1.2.3.4', nic.ip)
64
66
  end
@@ -10,18 +10,21 @@ module ForemanSalt
10
10
  test 'host has a salt smart proxy' do
11
11
  host = FactoryBot.create :host
12
12
  host.salt_proxy = @proxy
13
+
13
14
  assert host.salt_proxy.has_feature? 'Salt'
14
15
  end
15
16
 
16
17
  test 'smart_proxy_ids returns salt smart proxy' do
17
18
  host = FactoryBot.create :host
18
19
  host.salt_proxy = @proxy
20
+
19
21
  assert_includes host.smart_proxy_ids, host.salt_proxy_id
20
22
  end
21
23
 
22
24
  test 'host params includes salt_master' do
23
25
  host = FactoryBot.create :host
24
26
  host.salt_proxy = @proxy
27
+
25
28
  assert host.params.key? 'salt_master'
26
29
  assert_equal host.params['salt_master'], host.salt_master
27
30
  end
@@ -31,6 +34,7 @@ module ForemanSalt
31
34
  hostgroup.salt_proxy = @proxy
32
35
  host = FactoryBot.create :host, hostgroup: hostgroup
33
36
  host.set_hostgroup_defaults
37
+
34
38
  assert_equal host.salt_proxy, hostgroup.salt_proxy
35
39
  end
36
40
 
@@ -51,9 +55,11 @@ module ForemanSalt
51
55
 
52
56
  test '#configuration? considers salt' do
53
57
  host = FactoryBot.build(:host)
58
+
54
59
  assert_not host.configuration?
55
60
  host.salt_proxy = @proxy
56
- assert host.configuration?
61
+
62
+ assert_predicate host, :configuration?
57
63
  end
58
64
 
59
65
  context 'autosign handling' do
@@ -70,8 +76,10 @@ module ForemanSalt
70
76
  autosign_key = 'asdfasdfasfasdf'
71
77
  @host.expects(:generate_provisioning_key).returns(autosign_key)
72
78
  @host.build = true
79
+
73
80
  assert @host.save!
74
81
  @host.clear_host_parameters_cache!
82
+
75
83
  assert_equal autosign_key, @host.salt_autosign_key
76
84
  end
77
85
  end
@@ -84,6 +92,7 @@ module ForemanSalt
84
92
 
85
93
  test 'host returns empty hash when deriving salt grains with default autosign' do
86
94
  expected_hash = {}
95
+
87
96
  assert_equal expected_hash, @host.instance_eval { derive_salt_grains }
88
97
  end
89
98
 
@@ -91,28 +100,33 @@ module ForemanSalt
91
100
  autosign_key = 'asdfasdfasfasdf'
92
101
  expected_hash = { @host.autosign_grain_name => autosign_key }
93
102
  @host.salt_autosign_key = autosign_key
103
+
94
104
  assert_equal expected_hash, @host.instance_eval { derive_salt_grains(use_autosign: true) }
95
105
  end
96
106
 
97
107
  test 'host returns empty hash when deriving salt grains without any given' do
98
108
  expected_hash = {}
109
+
99
110
  assert_equal expected_hash, @host.instance_eval { derive_salt_grains(use_autosign: true) }
100
111
  end
101
112
 
102
113
  test 'host returns empty hash when deriving salt grains without autosign' do
103
114
  expected_hash = {}
115
+
104
116
  assert_equal expected_hash, @host.instance_eval { derive_salt_grains(use_autosign: false) }
105
117
  end
106
118
 
107
119
  test 'host returns host param grains when deriving salt grains' do
108
120
  expected_hash = { "Some key": 'Some value', "Another key": 'An extraordinary value' }
109
121
  @host.host_params[@host.host_params_grains_name] = expected_hash
122
+
110
123
  assert_equal expected_hash, @host.instance_eval { derive_salt_grains(use_autosign: false) }
111
124
  end
112
125
 
113
126
  test 'host returns only host param grains when deriving salt grains' do
114
127
  expected_hash = { "Some key": 'Some value', "Another key": 'An extraordinary value' }
115
128
  @host.host_params[@host.host_params_grains_name] = expected_hash
129
+
116
130
  assert_equal expected_hash, @host.instance_eval { derive_salt_grains(use_autosign: true) }
117
131
  end
118
132
 
@@ -123,6 +137,7 @@ module ForemanSalt
123
137
  expected_hash = host_param_grains.merge(@host.autosign_grain_name => autosign_key)
124
138
  @host.salt_autosign_key = autosign_key
125
139
  @host.host_params[@host.host_params_grains_name] = host_param_grains
140
+
126
141
  assert_equal expected_hash, @host.instance_eval { derive_salt_grains(use_autosign: true) }
127
142
  end
128
143
  end
@@ -10,12 +10,14 @@ module ForemanSalt
10
10
  test 'host group has a salt smart proxy' do
11
11
  hostgroup = FactoryBot.create :hostgroup
12
12
  hostgroup.salt_proxy = @proxy
13
+
13
14
  assert_includes hostgroup.salt_proxy.features.map(&:name), 'Salt'
14
15
  end
15
16
 
16
17
  test 'nested host group inherits salt modules from parent' do
17
18
  parent = FactoryBot.create :hostgroup, :with_salt_modules
18
19
  child = FactoryBot.create :hostgroup, parent: parent
20
+
19
21
  assert_equal [], parent.all_salt_modules - child.all_salt_modules
20
22
  end
21
23
 
@@ -23,6 +25,7 @@ module ForemanSalt
23
25
  parent = FactoryBot.create :hostgroup
24
26
  child_one = FactoryBot.create :hostgroup, parent: parent, salt_proxy: @proxy
25
27
  child_two = FactoryBot.create :hostgroup, parent: child_one
28
+
26
29
  assert_not_nil parent
27
30
  assert_not_nil child_one
28
31
  assert_not_nil child_two
@@ -36,6 +39,7 @@ module ForemanSalt
36
39
  parent = FactoryBot.create :hostgroup
37
40
  child_one = FactoryBot.create :hostgroup, parent: parent, salt_environment: environment
38
41
  child_two = FactoryBot.create :hostgroup, parent: child_one
42
+
39
43
  assert_not_nil parent
40
44
  assert_not_nil child_one
41
45
  assert_not_nil child_two
@@ -50,12 +54,14 @@ module ForemanSalt
50
54
  child = FactoryBot.create :hostgroup, :with_salt_modules, salt_environment: environment, parent: parent
51
55
 
52
56
  total = parent.salt_modules.count + child.salt_modules.count
57
+
53
58
  assert_equal total, child.all_salt_modules.count
54
59
  end
55
60
 
56
61
  test 'child doesnt get modules from outside its environment' do
57
62
  parent = FactoryBot.create :hostgroup, :with_salt_modules
58
63
  child = FactoryBot.create :hostgroup, :with_salt_modules, parent: parent
64
+
59
65
  assert_equal child.salt_modules.count, child.all_salt_modules.count
60
66
  end
61
67
 
@@ -63,6 +69,7 @@ module ForemanSalt
63
69
  parent = FactoryBot.create :hostgroup, :with_salt_modules
64
70
  child_one = FactoryBot.create :hostgroup, parent: parent
65
71
  child_two = FactoryBot.create :hostgroup, parent: child_one
72
+
66
73
  assert_empty parent.all_salt_modules - child_two.all_salt_modules
67
74
  end
68
75
 
@@ -70,7 +77,8 @@ module ForemanSalt
70
77
  parent = FactoryBot.create :hostgroup
71
78
  child_one = FactoryBot.create :hostgroup, parent: parent
72
79
  child_two = FactoryBot.create :hostgroup, :with_salt_modules, parent: child_one
73
- assert child_two.all_salt_modules.any?
80
+
81
+ assert_predicate child_two.all_salt_modules, :any?
74
82
  end
75
83
  end
76
84
  end
@@ -16,18 +16,21 @@ module ForemanSalt
16
16
  test 'importing report creates a host' do
17
17
  assert_not Host.find_by(name: @host)
18
18
  ForemanSalt::ReportImporter.import(@report)
19
+
19
20
  assert Host.find_by(name: @host)
20
21
  end
21
22
 
22
23
  test 'importing report updates host status' do
23
24
  HostStatus::ConfigurationStatus.any_instance.stubs(:relevant?).returns(true)
24
25
  ForemanSalt::ReportImporter.import(@report)
25
- assert Host.find_by(name: @host).get_status(HostStatus::ConfigurationStatus).error?
26
+
27
+ assert_predicate Host.find_by(name: @host).get_status(HostStatus::ConfigurationStatus), :error?
26
28
  end
27
29
 
28
30
  test 'importing report has correct status' do
29
31
  ForemanSalt::ReportImporter.import(@report)
30
32
  status = Host.find_by(name: @host).reports.last.status
33
+
31
34
  assert_equal(9, status['applied'])
32
35
  assert_equal(3, status['failed'])
33
36
  end
@@ -35,6 +38,7 @@ module ForemanSalt
35
38
  test 'report has salt origin and expected content' do
36
39
  ForemanSalt::ReportImporter.import(@report)
37
40
  report = Host.find_by(name: @host).reports.last
41
+
38
42
  assert_equal 'Salt', report.origin
39
43
  assert_equal 'pkg_|-postfix_|-postfix_|-installed', report.logs.first.source.value
40
44
  assert_equal 'Package postfix is already installed.', report.logs.first.message.value
@@ -44,6 +48,7 @@ module ForemanSalt
44
48
  ForemanSalt::ReportImporter.import(@report_pchanges)
45
49
  report = Host.find_by(name: @host).reports.last
46
50
  status = report.status
51
+
47
52
  assert_equal 'Salt', report.origin
48
53
  assert_equal 'file_|-/etc/motd_|-/etc/motd_|-managed', report.logs.first.source.value
49
54
  assert_equal(1, status['pending'])
@@ -51,8 +56,10 @@ module ForemanSalt
51
56
 
52
57
  test 'import returns Array of reports including host and its name' do
53
58
  reports = ForemanSalt::ReportImporter.import(@report)
59
+
54
60
  assert_kind_of Array, reports
55
61
  first = reports.first
62
+
56
63
  assert_equal 'Salt', first.origin
57
64
  assert_equal @host, first.host.name
58
65
  end
@@ -60,7 +67,8 @@ module ForemanSalt
60
67
  test 'importing report with unhandled highstate' do
61
68
  HostStatus::ConfigurationStatus.any_instance.stubs(:relevant?).returns(true)
62
69
  ForemanSalt::ReportImporter.import(@report_unhandled)
63
- assert Host.find_by(name: @host).get_status(HostStatus::ConfigurationStatus).error?
70
+
71
+ assert_predicate Host.find_by(name: @host).get_status(HostStatus::ConfigurationStatus), :error?
64
72
  end
65
73
  end
66
74
  end
@@ -7,11 +7,13 @@ class SaltModulesTest < ActiveSupport::TestCase
7
7
 
8
8
  test 'salt module has a valid name' do
9
9
  salt_module = ForemanSalt::SaltModule.new(name: 'foo.bar.baz')
10
+
10
11
  assert_valid salt_module
11
12
  end
12
13
 
13
14
  test 'salt module has invalid name' do
14
15
  salt_module = ForemanSalt::SaltModule.new(name: '&bad$name')
16
+
15
17
  refute_valid salt_module, :name, /alphanumeric/
16
18
  end
17
19
  end
@@ -8,15 +8,18 @@ class SaltVariablesTest < ActiveSupport::TestCase
8
8
 
9
9
  test 'salt variable has a salt module' do
10
10
  salt_variable = ForemanSalt::SaltVariable.new(key: 'awesome_key', salt_module_id: @state.id)
11
+
11
12
  assert_valid salt_variable
12
- assert salt_variable.salt?
13
+ assert_predicate salt_variable, :salt?
13
14
  assert_equal @state.id, salt_variable.salt_module.id
14
15
  end
15
16
 
16
17
  test 'salt variable is referencing a LookupValue' do
17
18
  salt_variable = ForemanSalt::SaltVariable.new(key: 'awesome_key', salt_module_id: @state.id)
18
- assert salt_variable.lookup_values.count.zero?
19
+
20
+ assert_predicate salt_variable.lookup_values.count, :zero?
19
21
  LookupValue.create(value: '[1.2.3.4,2.3.4.5]', match: 'domain = mydomain.net', lookup_key: salt_variable)
22
+
20
23
  assert_equal(1, salt_variable.lookup_values.count)
21
24
  end
22
25
 
@@ -27,6 +30,7 @@ class SaltVariablesTest < ActiveSupport::TestCase
27
30
  default_value: "{\r\n \"bat\": \"man\"\r\n}\r\n",
28
31
  override: true)
29
32
  salt_variable.save
33
+
30
34
  assert salt_variable.default_value.is_a?(Hash)
31
35
  end
32
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_salt
3
3
  version: !ruby/object:Gem::Version
4
- version: 16.0.0
4
+ version: 16.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen Benjamin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-12-07 00:00:00.000000000 Z
11
+ date: 2024-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: deface
@@ -33,7 +33,7 @@ dependencies:
33
33
  version: '9.0'
34
34
  - - "<"
35
35
  - !ruby/object:Gem::Version
36
- version: '13'
36
+ version: '14'
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '9.0'
44
44
  - - "<"
45
45
  - !ruby/object:Gem::Version
46
- version: '13'
46
+ version: '14'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: foreman-tasks
49
49
  requirement: !ruby/object:Gem::Requirement