foreman_salt 16.0.0 → 16.0.2

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.
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