foreman_expire_hosts 6.0.0 → 7.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +78 -0
- data/.rubocop.yml +18 -13
- data/.rubocop_todo.yml +11 -31
- data/Gemfile +2 -0
- data/README.md +1 -0
- data/app/controllers/concerns/foreman_expire_hosts/api/v2/hosts_controller_extensions.rb +2 -0
- data/app/controllers/concerns/foreman_expire_hosts/host_controller_extensions.rb +20 -15
- data/app/helpers/concerns/foreman_expire_hosts/audits_helper_extensions.rb +4 -0
- data/app/helpers/concerns/foreman_expire_hosts/hosts_helper_extensions.rb +5 -22
- data/app/helpers/expire_hosts_mailer_helper.rb +3 -0
- data/app/helpers/foreman_expire_hosts/hosts_helper.rb +16 -0
- data/app/mailers/expire_hosts_mailer.rb +3 -0
- data/app/models/concerns/foreman_expire_hosts/host_ext.rb +9 -1
- data/app/models/host_status/expiration_status.rb +3 -0
- data/app/models/setting/expire_hosts.rb +2 -0
- data/app/overrides/add_expired_on_field_to_host_form.rb +4 -2
- data/app/overrides/add_expired_on_field_to_host_show.rb +5 -3
- data/app/overrides/deleted_expired_host_comment_in_audits.rb +8 -6
- data/app/services/foreman_expire_hosts/action/base.rb +9 -2
- data/app/services/foreman_expire_hosts/action/delete_expired_hosts.rb +3 -0
- data/app/services/foreman_expire_hosts/action/stop_expired_hosts.rb +6 -2
- data/app/services/foreman_expire_hosts/expiry_edit_authorizer.rb +2 -0
- data/app/services/foreman_expire_hosts/notification/base.rb +12 -3
- data/app/services/foreman_expire_hosts/notification/deleted_hosts.rb +2 -0
- data/app/services/foreman_expire_hosts/notification/expiry_warning.rb +2 -0
- data/app/services/foreman_expire_hosts/notification/failed_deleted_hosts.rb +2 -0
- data/app/services/foreman_expire_hosts/notification/failed_stopped_hosts.rb +2 -0
- data/app/services/foreman_expire_hosts/notification/stopped_hosts.rb +2 -0
- data/app/services/foreman_expire_hosts/safe_destroy.rb +7 -5
- data/app/services/foreman_expire_hosts/ui_notifications/hosts/base.rb +4 -1
- data/app/services/foreman_expire_hosts/ui_notifications/hosts/expiry_warning.rb +2 -0
- data/app/services/foreman_expire_hosts/ui_notifications/hosts/stopped_host.rb +2 -0
- data/app/views/api/v2/hosts/expiration.json.rabl +2 -0
- data/app/views/hosts/_expired_on_field.html.erb +11 -20
- data/app/views/hosts/select_multiple_expiration.html.erb +10 -15
- data/config/routes.rb +2 -0
- data/db/migrate/20150427101516_add_expiry_on_to_hosts.rb +2 -0
- data/db/seeds.d/80_expire_hosts_ui_notification.rb +2 -0
- data/extra/foreman_expire_hosts.cron +8 -0
- data/foreman_expire_hosts.gemspec +10 -3
- data/lib/expire_hosts_notifications.rb +3 -0
- data/lib/foreman_expire_hosts.rb +2 -0
- data/lib/foreman_expire_hosts/engine.rb +22 -10
- data/lib/foreman_expire_hosts/version.rb +3 -1
- data/lib/tasks/expired_hosts.rake +3 -1
- data/test/factories/foreman_expire_hosts_factories.rb +7 -5
- data/test/functional/api/v2/hosts_controller_test.rb +3 -1
- data/test/functional/concerns/hosts_controller_extensions_test.rb +3 -1
- data/test/helpers/hosts_helper_test.rb +5 -0
- data/test/lib/expire_hosts_notifications_test.rb +91 -45
- data/test/test_plugin_helper.rb +2 -0
- data/test/unit/concerns/host_extensions_test.rb +21 -19
- data/test/unit/expire_hosts_mailer_test.rb +6 -0
- data/test/unit/expiry_edit_authorizer_test.rb +2 -0
- data/test/unit/host_status/expiration_status_test.rb +3 -1
- data/test/unit/safe_destroy_test.rb +3 -1
- metadata +53 -26
- data/app/assets/javascripts/foreman_expire_hosts/application.js +0 -3
- data/app/assets/javascripts/foreman_expire_hosts/datepicker_for_host_expired_on_field.js +0 -27
- data/app/assets/stylesheets/foreman_expire_hosts/application.scss +0 -4
- data/app/overrides/add_js_to_host_index.rb +0 -6
@@ -1,5 +1,6 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'deface'
|
2
|
-
require 'bootstrap-datepicker-rails'
|
3
4
|
|
4
5
|
module ForemanExpireHosts
|
5
6
|
class Engine < ::Rails::Engine
|
@@ -24,7 +25,7 @@ module ForemanExpireHosts
|
|
24
25
|
|
25
26
|
initializer 'foreman_expire_hosts.register_plugin', :before => :finisher_hook do |_app|
|
26
27
|
Foreman::Plugin.register :foreman_expire_hosts do
|
27
|
-
requires_foreman '>= 1.
|
28
|
+
requires_foreman '>= 1.24'
|
28
29
|
register_custom_status HostStatus::ExpirationStatus
|
29
30
|
|
30
31
|
# strong parameters
|
@@ -34,22 +35,29 @@ module ForemanExpireHosts
|
|
34
35
|
permission :edit_host_expiry,
|
35
36
|
{},
|
36
37
|
:resource_type => 'Host'
|
37
|
-
permission :edit_hosts,
|
38
|
-
{ :hosts => [:select_multiple_expiration, :update_multiple_expiration] },
|
39
|
-
:resource_type => 'Host'
|
40
38
|
end
|
41
39
|
|
40
|
+
# Extend built in permissions
|
41
|
+
Foreman::AccessControl.permission(:edit_hosts).actions.concat [
|
42
|
+
'hosts/select_multiple_expiration',
|
43
|
+
'hosts/update_multiple_expiration'
|
44
|
+
]
|
45
|
+
|
42
46
|
extend_rabl_template 'api/v2/hosts/main', 'api/v2/hosts/expiration'
|
47
|
+
|
48
|
+
describe_host do
|
49
|
+
multiple_actions_provider :expire_hosts_host_multiple_actions
|
50
|
+
end
|
43
51
|
end
|
44
52
|
end
|
45
53
|
|
46
54
|
config.to_prepare do
|
47
55
|
begin
|
48
|
-
Host::Managed.
|
49
|
-
HostsHelper.
|
50
|
-
HostsController.
|
51
|
-
AuditsHelper.
|
52
|
-
::Api::V2::HostsController.
|
56
|
+
::Host::Managed.include ForemanExpireHosts::HostExt
|
57
|
+
::HostsHelper.include ForemanExpireHosts::HostsHelperExtensions
|
58
|
+
::HostsController.prepend ForemanExpireHosts::HostControllerExtensions
|
59
|
+
::AuditsHelper.include ForemanExpireHosts::AuditsHelperExtensions
|
60
|
+
::Api::V2::HostsController.include ForemanExpireHosts::Api::V2::HostsControllerExtensions
|
53
61
|
rescue StandardError => e
|
54
62
|
Rails.logger.warn "ForemanExpireHosts: skipping engine hook (#{e})"
|
55
63
|
end
|
@@ -61,4 +69,8 @@ module ForemanExpireHosts
|
|
61
69
|
end
|
62
70
|
end
|
63
71
|
end
|
72
|
+
|
73
|
+
def self.logger
|
74
|
+
Foreman::Logging.logger('foreman_expire_hosts')
|
75
|
+
end
|
64
76
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Tasks
|
2
4
|
namespace :expired_hosts do
|
3
5
|
desc 'Delete all expired hosts, send notification email about expiring hosts'
|
@@ -24,7 +26,7 @@ namespace :test do
|
|
24
26
|
end
|
25
27
|
|
26
28
|
namespace :foreman_expire_hosts do
|
27
|
-
task :rubocop do
|
29
|
+
task :rubocop => :environment do
|
28
30
|
begin
|
29
31
|
require 'rubocop/rake_task'
|
30
32
|
RuboCop::RakeTask.new(:rubocop_foreman_expire_hosts) do |task|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
FactoryBot.modify do
|
2
4
|
factory :host do
|
3
5
|
trait :without_validation do
|
@@ -6,26 +8,26 @@ FactoryBot.modify do
|
|
6
8
|
end
|
7
9
|
|
8
10
|
trait :expires_in_a_year do
|
9
|
-
expired_on Date.today + 365
|
11
|
+
expired_on { Date.today + 365 }
|
10
12
|
end
|
11
13
|
|
12
14
|
trait :expires_in_a_week do
|
13
|
-
expired_on Date.today + 7
|
15
|
+
expired_on { Date.today + 7 }
|
14
16
|
end
|
15
17
|
|
16
18
|
trait :expires_today do
|
17
19
|
without_validation
|
18
|
-
expired_on Date.today
|
20
|
+
expired_on { Date.today }
|
19
21
|
end
|
20
22
|
|
21
23
|
trait :expired_grace do
|
22
24
|
without_validation
|
23
|
-
expired_on Date.today - 1
|
25
|
+
expired_on { Date.today - 1 }
|
24
26
|
end
|
25
27
|
|
26
28
|
trait :expired do
|
27
29
|
without_validation
|
28
|
-
expired_on Date.today - 356
|
30
|
+
expired_on { Date.today - 356 }
|
29
31
|
end
|
30
32
|
end
|
31
33
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'test_plugin_helper'
|
2
4
|
|
3
5
|
class Api::V2::HostsControllerTest < ActionController::TestCase
|
@@ -11,7 +13,7 @@ class Api::V2::HostsControllerTest < ActionController::TestCase
|
|
11
13
|
get :show, params: { :id => host.to_param }
|
12
14
|
assert_response :success
|
13
15
|
show_response = ActiveSupport::JSON.decode(@response.body)
|
14
|
-
|
16
|
+
assert_not_empty show_response
|
15
17
|
assert_equal host.expired_on, show_response['expired_on'].to_date
|
16
18
|
end
|
17
19
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'test_plugin_helper'
|
2
4
|
|
3
5
|
class HostsControllerTest < ActionController::TestCase
|
@@ -68,7 +70,7 @@ class HostsControllerTest < ActionController::TestCase
|
|
68
70
|
test 'should set expiration date' do
|
69
71
|
expiration_date = Date.today + 14
|
70
72
|
params = { :host_ids => @hosts.map(&:id),
|
71
|
-
:host => {
|
73
|
+
:host => { 'expired_on(1i)' => expiration_date.day.to_s, 'expired_on(2i)' => expiration_date.month.to_s, 'expired_on(3i)' => expiration_date.year.to_s } }
|
72
74
|
|
73
75
|
post :update_multiple_expiration, params: params, session: set_session_user.merge(:user => users(:admin).id)
|
74
76
|
|
@@ -1,7 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'test_plugin_helper'
|
2
4
|
|
3
5
|
class HostsHelperTest < ActionView::TestCase
|
4
6
|
include HostsHelper
|
7
|
+
include HostDescriptionHelper
|
8
|
+
include PuppetRelatedHelper
|
9
|
+
include ForemanExpireHosts::HostsHelper
|
5
10
|
include ApplicationHelper
|
6
11
|
|
7
12
|
describe '#multiple_actions' do
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'test_plugin_helper'
|
2
4
|
require 'notifications_test_helper'
|
3
5
|
|
@@ -61,17 +63,22 @@ class ExpireHostsNotificationsTest < ActiveSupport::TestCase
|
|
61
63
|
context 'with additional recipients' do
|
62
64
|
setup do
|
63
65
|
Setting[:host_expiry_email_recipients] = 'test@example.com, test2.example.com'
|
64
|
-
FactoryBot.create_list(:host, 2, :expired, :owner => user)
|
65
66
|
end
|
66
67
|
|
67
68
|
test 'should deliver notification to additional recipients' do
|
69
|
+
FactoryBot.create_list(:host, 2, :expired, :owner => user)
|
68
70
|
ExpireHostsNotifications.delete_expired_hosts
|
69
|
-
assert_equal
|
71
|
+
assert_equal 2, ActionMailer::Base.deliveries.count
|
70
72
|
assert_includes ActionMailer::Base.deliveries.first.subject, 'Deleted expired hosts'
|
71
73
|
assert_includes ActionMailer::Base.deliveries.flat_map(&:to), user.mail
|
72
74
|
assert_includes ActionMailer::Base.deliveries.flat_map(&:to), 'test@example.com'
|
73
75
|
assert_includes ActionMailer::Base.deliveries.flat_map(&:to), 'test2.example.com'
|
74
76
|
end
|
77
|
+
|
78
|
+
test 'should not deliver a mail notification for empty host list' do
|
79
|
+
ExpireHostsNotifications.delete_expired_hosts
|
80
|
+
assert_equal 0, ActionMailer::Base.deliveries.count
|
81
|
+
end
|
75
82
|
end
|
76
83
|
end
|
77
84
|
|
@@ -100,12 +107,35 @@ class ExpireHostsNotificationsTest < ActiveSupport::TestCase
|
|
100
107
|
end
|
101
108
|
end
|
102
109
|
|
110
|
+
test 'should send no message if host is already be stopped' do
|
111
|
+
power_mock.stubs(:ready?).returns(false)
|
112
|
+
ExpireHostsNotifications.stop_expired_hosts
|
113
|
+
assert_equal 0, ActionMailer::Base.deliveries.count
|
114
|
+
end
|
115
|
+
|
103
116
|
test 'should send failure message if host cannot be stopped' do
|
104
117
|
power_mock.expects(:stop).returns(false)
|
105
118
|
ExpireHostsNotifications.stop_expired_hosts
|
106
119
|
assert_equal 1, ActionMailer::Base.deliveries.count
|
107
120
|
assert_includes ActionMailer::Base.deliveries.first.subject, 'Failed to stop expired hosts'
|
108
121
|
end
|
122
|
+
|
123
|
+
context 'with a host expiring today' do
|
124
|
+
let(:host) { FactoryBot.create(:host, :expires_today, :on_compute_resource, :owner => user) }
|
125
|
+
let(:delete_date) { Date.today + Setting[:days_to_delete_after_host_expiration].to_i }
|
126
|
+
|
127
|
+
it 'should stop the host and show the correct delete date' do
|
128
|
+
power_mock.expects(:stop).returns(true)
|
129
|
+
ExpireHostsNotifications.stop_expired_hosts
|
130
|
+
assert_equal 1, ActionMailer::Base.deliveries.count
|
131
|
+
assert_includes ActionMailer::Base.deliveries.first.subject, 'Stopped expired hosts'
|
132
|
+
assert_includes ActionMailer::Base.deliveries.first.body, "These hosts will be destroyed on #{delete_date}."
|
133
|
+
|
134
|
+
travel_to delete_date do
|
135
|
+
assert_includes Host.expired_past_grace_period, host
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
109
139
|
end
|
110
140
|
|
111
141
|
context '#deliver_expiry_warning_notification' do
|
@@ -114,59 +144,75 @@ class ExpireHostsNotificationsTest < ActiveSupport::TestCase
|
|
114
144
|
|
115
145
|
setup do
|
116
146
|
Setting['notify1_days_before_host_expiry'] = 7
|
117
|
-
hosts
|
118
147
|
end
|
119
148
|
|
120
|
-
|
121
|
-
|
149
|
+
context 'with expired hosts' do
|
150
|
+
setup do
|
151
|
+
hosts
|
152
|
+
end
|
153
|
+
|
154
|
+
test 'should send a ui notification per host' do
|
155
|
+
assert_difference('blueprint.notifications.count', 2) do
|
156
|
+
ExpireHostsNotifications.deliver_expiry_warning_notification
|
157
|
+
end
|
158
|
+
hosts.each do |host|
|
159
|
+
notification = Notification.find_by(
|
160
|
+
notification_blueprint_id: blueprint.id,
|
161
|
+
subject_id: host.id,
|
162
|
+
subject_type: 'Host::Base'
|
163
|
+
)
|
164
|
+
assert_equal 1, notification.notification_recipients.where(user_id: user.id).count
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
test 'should redisplay read ui notification' do
|
169
|
+
ExpireHostsNotifications.deliver_expiry_warning_notification
|
170
|
+
notification = Notification.find_by(notification_blueprint_id: blueprint.id, subject_id: hosts.first.id)
|
171
|
+
assert_not_nil notification
|
172
|
+
assert_equal 1, NotificationRecipient.where(notification_id: notification.id).update_all(seen: true)
|
122
173
|
ExpireHostsNotifications.deliver_expiry_warning_notification
|
174
|
+
assert_equal 1, NotificationRecipient.where(notification_id: notification.id, seen: false).count
|
123
175
|
end
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
)
|
130
|
-
assert_equal 1, notification.notification_recipients.where(user_id: user.id).count
|
176
|
+
|
177
|
+
test 'should send a single notification' do
|
178
|
+
ExpireHostsNotifications.deliver_expiry_warning_notification
|
179
|
+
assert_equal 1, ActionMailer::Base.deliveries.count
|
180
|
+
assert_includes ActionMailer::Base.deliveries.first.subject, 'Expiring hosts in foreman'
|
131
181
|
end
|
132
|
-
end
|
133
182
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
183
|
+
test 'should send two notifications for two users' do
|
184
|
+
owner2 = FactoryBot.create(:user, :with_mail)
|
185
|
+
FactoryBot.create(:host, :expires_in_a_week, :owner => owner2)
|
186
|
+
ExpireHostsNotifications.deliver_expiry_warning_notification
|
187
|
+
assert_equal 2, ActionMailer::Base.deliveries.count
|
188
|
+
assert_includes ActionMailer::Base.deliveries.first.subject, 'Expiring hosts in foreman'
|
189
|
+
assert_includes ActionMailer::Base.deliveries.last.subject, 'Expiring hosts in foreman'
|
190
|
+
end
|
142
191
|
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
192
|
+
test 'should send three notifications for three users' do
|
193
|
+
user2 = FactoryBot.create(:user, :with_mail)
|
194
|
+
user3 = FactoryBot.create(:user, :with_mail, :usergroups => [usergroup])
|
195
|
+
FactoryBot.create(:host, :expires_in_a_week, :owner => user2)
|
196
|
+
FactoryBot.create(:host, :expires_in_a_week, :owner => usergroup)
|
197
|
+
ExpireHostsNotifications.deliver_expiry_warning_notification
|
198
|
+
assert_equal 3, ActionMailer::Base.deliveries.count
|
199
|
+
assert_includes ActionMailer::Base.deliveries.first.subject, 'Expiring hosts in foreman'
|
200
|
+
assert_includes ActionMailer::Base.deliveries.flat_map(&:to), user.mail
|
201
|
+
assert_includes ActionMailer::Base.deliveries.flat_map(&:to), user2.mail
|
202
|
+
assert_includes ActionMailer::Base.deliveries.flat_map(&:to), user3.mail
|
203
|
+
assert_equal 1, ActionMailer::Base.deliveries.flat_map(&:subject).uniq.count
|
204
|
+
end
|
147
205
|
end
|
148
206
|
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
assert_equal 2, ActionMailer::Base.deliveries.count
|
154
|
-
assert_includes ActionMailer::Base.deliveries.first.subject, 'Expiring hosts in foreman'
|
155
|
-
assert_includes ActionMailer::Base.deliveries.last.subject, 'Expiring hosts in foreman'
|
156
|
-
end
|
207
|
+
context 'with additional recipients' do
|
208
|
+
setup do
|
209
|
+
Setting[:host_expiry_email_recipients] = 'test@example.com, test2.example.com'
|
210
|
+
end
|
157
211
|
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
FactoryBot.create(:host, :expires_in_a_week, :owner => usergroup)
|
163
|
-
ExpireHostsNotifications.deliver_expiry_warning_notification
|
164
|
-
assert_equal 3, ActionMailer::Base.deliveries.count
|
165
|
-
assert_includes ActionMailer::Base.deliveries.first.subject, 'Expiring hosts in foreman'
|
166
|
-
assert_includes ActionMailer::Base.deliveries.flat_map(&:to), user.mail
|
167
|
-
assert_includes ActionMailer::Base.deliveries.flat_map(&:to), user2.mail
|
168
|
-
assert_includes ActionMailer::Base.deliveries.flat_map(&:to), user3.mail
|
169
|
-
assert_equal 1, ActionMailer::Base.deliveries.flat_map(&:subject).uniq.count
|
212
|
+
test 'should not send empty reminders' do
|
213
|
+
ExpireHostsNotifications.deliver_expiry_warning_notification
|
214
|
+
assert_equal 0, ActionMailer::Base.deliveries.count
|
215
|
+
end
|
170
216
|
end
|
171
217
|
end
|
172
218
|
end
|
data/test/test_plugin_helper.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'test_plugin_helper'
|
2
4
|
|
3
5
|
class ForemanExpireHostsHostExtTest < ActiveSupport::TestCase
|
@@ -26,7 +28,7 @@ class ForemanExpireHostsHostExtTest < ActiveSupport::TestCase
|
|
26
28
|
|
27
29
|
test 'should require expired on' do
|
28
30
|
host = FactoryBot.build(:host)
|
29
|
-
|
31
|
+
assert_not host.valid?, "Can not be valid without expiration date: #{host.errors.messages}"
|
30
32
|
assert_includes host.errors.messages.keys, :expired_on
|
31
33
|
end
|
32
34
|
end
|
@@ -99,23 +101,23 @@ class ForemanExpireHostsHostExtTest < ActiveSupport::TestCase
|
|
99
101
|
end
|
100
102
|
|
101
103
|
test 'should not expire' do
|
102
|
-
|
104
|
+
assert_not @host.expires?
|
103
105
|
end
|
104
106
|
|
105
107
|
test 'should not expire today' do
|
106
|
-
|
108
|
+
assert_not @host.expires_today?
|
107
109
|
end
|
108
110
|
|
109
111
|
test 'should not be expired' do
|
110
|
-
|
112
|
+
assert_not @host.expired?
|
111
113
|
end
|
112
114
|
|
113
115
|
test 'should not be expired past grace period' do
|
114
|
-
|
116
|
+
assert_not @host.expired_past_grace_period?
|
115
117
|
end
|
116
118
|
|
117
119
|
test 'should not be pending expiration' do
|
118
|
-
|
120
|
+
assert_not @host.pending_expiration?
|
119
121
|
end
|
120
122
|
|
121
123
|
test 'should not be in any expiration scopes' do
|
@@ -133,7 +135,7 @@ class ForemanExpireHostsHostExtTest < ActiveSupport::TestCase
|
|
133
135
|
end
|
134
136
|
|
135
137
|
test 'should not expire today' do
|
136
|
-
|
138
|
+
assert_not @host.expires_today?
|
137
139
|
end
|
138
140
|
|
139
141
|
test 'should be expired' do
|
@@ -145,7 +147,7 @@ class ForemanExpireHostsHostExtTest < ActiveSupport::TestCase
|
|
145
147
|
end
|
146
148
|
|
147
149
|
test 'should not be pending expiration' do
|
148
|
-
|
150
|
+
assert_not @host.pending_expiration?
|
149
151
|
end
|
150
152
|
|
151
153
|
test 'should only exist in correct scopes' do
|
@@ -168,11 +170,11 @@ class ForemanExpireHostsHostExtTest < ActiveSupport::TestCase
|
|
168
170
|
end
|
169
171
|
|
170
172
|
test 'should not be expired' do
|
171
|
-
|
173
|
+
assert_not @host.expired?
|
172
174
|
end
|
173
175
|
|
174
176
|
test 'should not be expired past grace period' do
|
175
|
-
|
177
|
+
assert_not @host.expired_past_grace_period?
|
176
178
|
end
|
177
179
|
|
178
180
|
test 'should be pending expiration' do
|
@@ -180,7 +182,7 @@ class ForemanExpireHostsHostExtTest < ActiveSupport::TestCase
|
|
180
182
|
end
|
181
183
|
|
182
184
|
test 'should only exist in correct scopes' do
|
183
|
-
exists_only_in_scopes(@host, ['expiring', 'expiring_today'])
|
185
|
+
exists_only_in_scopes(@host, ['expiring', 'expired', 'expiring_today'])
|
184
186
|
end
|
185
187
|
end
|
186
188
|
|
@@ -195,19 +197,19 @@ class ForemanExpireHostsHostExtTest < ActiveSupport::TestCase
|
|
195
197
|
end
|
196
198
|
|
197
199
|
test 'should not expire today' do
|
198
|
-
|
200
|
+
assert_not @host.expires_today?
|
199
201
|
end
|
200
202
|
|
201
203
|
test 'should not be expired' do
|
202
|
-
|
204
|
+
assert_not @host.expired?
|
203
205
|
end
|
204
206
|
|
205
207
|
test 'should not be expired past grace period' do
|
206
|
-
|
208
|
+
assert_not @host.expired_past_grace_period?
|
207
209
|
end
|
208
210
|
|
209
211
|
test 'should not be pending expiration' do
|
210
|
-
|
212
|
+
assert_not @host.pending_expiration?
|
211
213
|
end
|
212
214
|
|
213
215
|
test 'should only exist in correct scopes' do
|
@@ -225,7 +227,7 @@ class ForemanExpireHostsHostExtTest < ActiveSupport::TestCase
|
|
225
227
|
end
|
226
228
|
|
227
229
|
test 'should not expire today' do
|
228
|
-
|
230
|
+
assert_not @host.expires_today?
|
229
231
|
end
|
230
232
|
|
231
233
|
test 'should be expired' do
|
@@ -233,11 +235,11 @@ class ForemanExpireHostsHostExtTest < ActiveSupport::TestCase
|
|
233
235
|
end
|
234
236
|
|
235
237
|
test 'should not be expired past grace period' do
|
236
|
-
|
238
|
+
assert_not @host.expired_past_grace_period?
|
237
239
|
end
|
238
240
|
|
239
241
|
test 'should not be pending expiration' do
|
240
|
-
|
242
|
+
assert_not @host.pending_expiration?
|
241
243
|
end
|
242
244
|
|
243
245
|
test 'should only exist in correct scopes' do
|
@@ -250,7 +252,7 @@ class ForemanExpireHostsHostExtTest < ActiveSupport::TestCase
|
|
250
252
|
def exists_only_in_scopes(host, valid_scopes)
|
251
253
|
host.save(validate: false)
|
252
254
|
(EXPIRATION_SCOPES - valid_scopes).each do |scope|
|
253
|
-
|
255
|
+
assert_not Host::Managed.send(scope).exists?(host.id), "Host should not exist in #{scope} scope"
|
254
256
|
end
|
255
257
|
valid_scopes.each do |scope|
|
256
258
|
assert Host::Managed.send(scope).exists?(host.id), "Host should exist in #{scope} scope"
|