foreman_scc_manager 1.8.9 → 1.8.10
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 +4 -4
- data/app/controllers/scc_accounts_controller.rb +1 -1
- data/app/models/scc_account.rb +2 -7
- data/db/migrate/20210713092440_add_permissions.rb +19 -0
- data/lib/foreman_scc_manager/version.rb +1 -1
- data/test/controllers/api/v2/scc_accounts_test.rb +46 -1
- data/test/controllers/scc_accounts_controller_test.rb +51 -1
- data/test/fixtures/models/scc_accounts.yml +2 -0
- data/test/unit/access_permissions_test.rb +16 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d9bb11cd54075948f57fe205b39e75e2d2bac3092cdcd3c1f15e9101bfaa0b3c
|
4
|
+
data.tar.gz: 61351f372d614b5de85b9ec6f490f08bea0c7b1848b06b66b89ca78fd6b4ca29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8eb54567950e62fef53342af59aa070cf0f45c31832c8869b181250c20953b5850024ded8792ce2abd7a2c947b6317d86ac99a5038f97ffdb61f67728a2a50b8
|
7
|
+
data.tar.gz: ea314767654f27ab0d26097ccc235fbf83fb426e46ef242284f0da8572cc1dcdfe44d2966b471a177c45bf8fbe99c857105b653f61883e39441b021cf9f67c48
|
@@ -2,7 +2,7 @@ class SccAccountsController < ApplicationController
|
|
2
2
|
helper_method :scc_filtered_products
|
3
3
|
before_action :find_organization
|
4
4
|
before_action :find_resource, only: %i[show edit update destroy sync bulk_subscribe]
|
5
|
-
before_action :find_available_gpg_keys, only: %i[new edit]
|
5
|
+
before_action :find_available_gpg_keys, only: %i[new edit update create]
|
6
6
|
include Foreman::Controller::AutoCompleteSearch
|
7
7
|
|
8
8
|
# GET /scc_accounts
|
data/app/models/scc_account.rb
CHANGED
@@ -45,12 +45,7 @@ class SccAccount < ApplicationRecord
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def sync_date_is_valid_datetime
|
48
|
-
errors.add(:sync_date, 'must be a valid datetime') if interval != NEVER &&
|
49
|
-
sync_date.present? &&
|
50
|
-
!sync_date.respond_to?(:min) &&
|
51
|
-
!sync_date.respond_to?(:hour) &&
|
52
|
-
!sync_date.respond_to?(:wday) &&
|
53
|
-
!sync_date.respond_to?(:day)
|
48
|
+
errors.add(:sync_date, 'must be a valid datetime') if interval != NEVER && sync_date.blank?
|
54
49
|
end
|
55
50
|
|
56
51
|
def to_s
|
@@ -104,7 +99,7 @@ class SccAccount < ApplicationRecord
|
|
104
99
|
end
|
105
100
|
|
106
101
|
def add_recurring_logic(sync_date, interval)
|
107
|
-
sd = sync_date
|
102
|
+
sd = sync_date.presence || Time.now
|
108
103
|
|
109
104
|
raise _('Interval cannot be nil') if interval.nil?
|
110
105
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class AddPermissions < ActiveRecord::Migration[6.0]
|
2
|
+
PERMISSIONS = [
|
3
|
+
{ 'name' => 'view_scc_products', 'resource_type' => 'SccProduct' },
|
4
|
+
{ 'name' => 'subscribe_scc_products', 'resource_type' => 'SccProduct' },
|
5
|
+
{ 'name' => 'test_connection_scc_accounts', 'resource_type' => 'SccAccount' }
|
6
|
+
].freeze
|
7
|
+
|
8
|
+
def up
|
9
|
+
PERMISSIONS.each do |p|
|
10
|
+
Permission.find_or_create_by(:name => p['name'], :resource_type => p['resource_type'])
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def down
|
15
|
+
PERMISSIONS.each do |p|
|
16
|
+
Permission.where(:name => p['name']).destroy_all
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -208,13 +208,52 @@ class Api::V2::SccAccountsControllerTest < ActionController::TestCase
|
|
208
208
|
assert_response :ok
|
209
209
|
end
|
210
210
|
|
211
|
-
test 'should refuse update scc_account' do
|
211
|
+
test 'should refuse update scc_account with invalid interval' do
|
212
212
|
account = scc_accounts(:two)
|
213
213
|
put :update, params: { id: account.id, :scc_account => { :interval => 'yearly' } }
|
214
214
|
assert_equal 'yearly', assigns(:scc_account).interval
|
215
215
|
assert_response :unprocessable_entity
|
216
216
|
end
|
217
217
|
|
218
|
+
test 'should refuse update scc_account with empty date' do
|
219
|
+
account = scc_accounts(:two)
|
220
|
+
put :update, params: { id: account.id, :scc_account => { :interval => 'weekly', :sync_date => '' } }
|
221
|
+
assert_response :unprocessable_entity
|
222
|
+
assert_error_message 'Sync date must be a valid datetime'
|
223
|
+
end
|
224
|
+
|
225
|
+
test 'should fail to update scc_account with interval set and invalid date' do
|
226
|
+
account = scc_accounts(:two)
|
227
|
+
put :update, params: { id: account.id, :scc_account => { :sync_date => 'invalid_date', :interval => 'weekly' } }
|
228
|
+
|
229
|
+
assert_response :unprocessable_entity
|
230
|
+
assert_error_message 'Sync date must be a valid datetime'
|
231
|
+
end
|
232
|
+
|
233
|
+
test 'should fail to update scc_account with empty name' do
|
234
|
+
account = scc_accounts(:two)
|
235
|
+
put :update, params: { id: account.id, :scc_account => { :name => '', :sync_date => Time.now, :interval => 'weekly' } }
|
236
|
+
|
237
|
+
assert_response :unprocessable_entity
|
238
|
+
assert_error_message "Name can't be blank"
|
239
|
+
end
|
240
|
+
|
241
|
+
test 'should fail to update scc_account with empty login' do
|
242
|
+
account = scc_accounts(:two)
|
243
|
+
put :update, params: { id: account.id, :scc_account => { :login => '', :sync_date => Time.now, :interval => 'weekly' } }
|
244
|
+
|
245
|
+
assert_response :unprocessable_entity
|
246
|
+
assert_error_message "Login can't be blank"
|
247
|
+
end
|
248
|
+
|
249
|
+
test 'should fail to update scc_account with empty base_url' do
|
250
|
+
account = scc_accounts(:two)
|
251
|
+
put :update, params: { id: account.id, :scc_account => { :base_url => '', :sync_date => Time.now, :interval => 'weekly' } }
|
252
|
+
|
253
|
+
assert_response :unprocessable_entity
|
254
|
+
assert_error_message "Base url can't be blank"
|
255
|
+
end
|
256
|
+
|
218
257
|
test 'new account SCC server connection-test' do
|
219
258
|
scc_setup
|
220
259
|
account = scc_accounts(:one)
|
@@ -305,4 +344,10 @@ class Api::V2::SccAccountsControllerTest < ActionController::TestCase
|
|
305
344
|
end
|
306
345
|
assert_response :ok
|
307
346
|
end
|
347
|
+
|
348
|
+
private
|
349
|
+
|
350
|
+
def assert_error_message(message)
|
351
|
+
assert_includes JSON.parse(response.body)['error']['full_messages'], message
|
352
|
+
end
|
308
353
|
end
|
@@ -69,8 +69,58 @@ class SccAccountsControllerTest < ActionController::TestCase
|
|
69
69
|
test 'should update scc_account' do
|
70
70
|
account = scc_accounts(:two)
|
71
71
|
put :update, params: { id: account.id, :scc_account => { :sync_date => Time.now, :interval => 'weekly' } }, session: set_session_user
|
72
|
+
assert_redirected_to '/scc_accounts'
|
73
|
+
assert_equal 'weekly', SccAccount.find(account.id).interval
|
74
|
+
end
|
75
|
+
|
76
|
+
test 'should update scc_account with empty date if interval not set' do
|
77
|
+
account = scc_accounts(:two)
|
78
|
+
put :update, params: { id: account.id, :scc_account => { :name => 'new_name', :sync_date => '', :interval => 'never' } }, session: set_session_user
|
79
|
+
|
80
|
+
assert_equal 'new_name', SccAccount.find(account.id).name
|
81
|
+
end
|
82
|
+
|
83
|
+
test 'updates scc_account even if the date is invalid' do
|
84
|
+
# @todo reminder to fix this in the future
|
85
|
+
account = scc_accounts(:two)
|
86
|
+
put :update, params: { id: account.id, :scc_account => { :name => 'new_name', :sync_date => 'invalid_date', :interval => 'never' } }, session: set_session_user
|
87
|
+
|
88
|
+
assert_not_equal account.name, SccAccount.find(account.id).name
|
89
|
+
end
|
90
|
+
|
91
|
+
test 'should fail to update scc_account with interval set and empty date' do
|
92
|
+
account = scc_accounts(:two)
|
93
|
+
put :update, params: { id: account.id, :scc_account => { :sync_date => '', :interval => 'weekly' } }, session: set_session_user
|
94
|
+
|
95
|
+
assert_equal SccAccount.find(account.id).sync_date, account.sync_date
|
96
|
+
end
|
97
|
+
|
98
|
+
test 'should fail to update scc_account with interval set and invalid date' do
|
99
|
+
account = scc_accounts(:two)
|
100
|
+
put :update, params: { id: account.id, :scc_account => { :sync_date => 'invalid_date', :interval => 'weekly' } }, session: set_session_user
|
101
|
+
|
102
|
+
assert_equal SccAccount.find(account.id).sync_date, account.sync_date
|
103
|
+
end
|
104
|
+
|
105
|
+
test 'should fail to update scc_account with empty name' do
|
106
|
+
account = scc_accounts(:two)
|
107
|
+
put :update, params: { id: account.id, :scc_account => { :name => '', :sync_date => Time.now, :interval => 'weekly' } }, session: set_session_user
|
108
|
+
|
109
|
+
assert_equal account.name, SccAccount.find(account.id).name
|
110
|
+
end
|
111
|
+
|
112
|
+
test 'should fail to update scc_account with empty login' do
|
113
|
+
account = scc_accounts(:two)
|
114
|
+
put :update, params: { id: account.id, :scc_account => { :login => '', :sync_date => Time.now, :interval => 'weekly' } }, session: set_session_user
|
115
|
+
|
116
|
+
assert_equal account.login, SccAccount.find(account.id).login
|
117
|
+
end
|
118
|
+
|
119
|
+
test 'should fail to update scc_account with empty base url' do
|
120
|
+
account = scc_accounts(:two)
|
121
|
+
put :update, params: { id: account.id, :scc_account => { :base_url => '', :sync_date => Time.now, :interval => 'weekly' } }, session: set_session_user
|
72
122
|
|
73
|
-
assert_equal
|
123
|
+
assert_equal account.base_url, SccAccount.find(account.id).base_url
|
74
124
|
end
|
75
125
|
|
76
126
|
test 'SCC server sync products' do
|
@@ -6,6 +6,7 @@ one:
|
|
6
6
|
name: onename
|
7
7
|
interval: never
|
8
8
|
organization_id: <%= ActiveRecord::FixtureSet.identify(:empty_organization) %>
|
9
|
+
sync_date: Time.now
|
9
10
|
|
10
11
|
two:
|
11
12
|
login: twouser
|
@@ -14,6 +15,7 @@ two:
|
|
14
15
|
name: twoname
|
15
16
|
interval: never
|
16
17
|
organization_id: <%= ActiveRecord::FixtureSet.identify(:empty_organization) %>
|
18
|
+
sync_date: 2021-07-05T21:33:49
|
17
19
|
|
18
20
|
account_missing_url:
|
19
21
|
login: fakeuser1
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'test_plugin_helper'
|
2
|
+
require 'unit/shared/access_permissions_test_base'
|
3
|
+
|
4
|
+
# Permissions are added in AccessPermissions with lists of controllers and
|
5
|
+
# actions that they enable access to. For non-admin users, we need to test
|
6
|
+
# that there are permissions available that cover every controller action, else
|
7
|
+
# it can't be delegated and this will lead to parts of the application that
|
8
|
+
# aren't functional for non-admin users.
|
9
|
+
#
|
10
|
+
# In particular, it's important that actions for AJAX requests are added to
|
11
|
+
# an appropriate permission so views using those requests function.
|
12
|
+
class AccessPermissionsTest < ActiveSupport::TestCase
|
13
|
+
include AccessPermissionsTestBase
|
14
|
+
|
15
|
+
check_routes(ForemanSccManager::Engine.routes, [])
|
16
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_scc_manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ATIX AG
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rdoc
|
@@ -158,6 +158,7 @@ files:
|
|
158
158
|
- db/migrate/20210205082733_add_subscription_valid_to_scc_products_and_repos.rb
|
159
159
|
- db/migrate/20210210104407_add_root_repository_id_to_scc_repository.rb
|
160
160
|
- db/migrate/20210224095050_connect_katello_root_repository_to_scc_repository.rb
|
161
|
+
- db/migrate/20210713092440_add_permissions.rb
|
161
162
|
- lib/foreman_scc_manager.rb
|
162
163
|
- lib/foreman_scc_manager/engine.rb
|
163
164
|
- lib/foreman_scc_manager/version.rb
|
@@ -194,6 +195,7 @@ files:
|
|
194
195
|
- test/support/fixtures_support.rb
|
195
196
|
- test/test_controller_helper.rb
|
196
197
|
- test/test_plugin_helper.rb
|
198
|
+
- test/unit/access_permissions_test.rb
|
197
199
|
- test/unit/foreman_scc_manager_test.rb
|
198
200
|
homepage: https://www.orcharhino.com/
|
199
201
|
licenses:
|
@@ -219,6 +221,7 @@ signing_key:
|
|
219
221
|
specification_version: 4
|
220
222
|
summary: Suse Customer Center plugin for Foreman
|
221
223
|
test_files:
|
224
|
+
- test/unit/access_permissions_test.rb
|
222
225
|
- test/unit/foreman_scc_manager_test.rb
|
223
226
|
- test/test_controller_helper.rb
|
224
227
|
- test/features/sync_test.rb
|