foreman_puppet 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +619 -0
- data/README.md +38 -0
- data/Rakefile +31 -0
- data/app/assets/stylesheets/foreman_puppet.scss +117 -0
- data/app/controllers/concerns/foreman_puppet/api/import_puppetclasses_common_controller.rb +139 -0
- data/app/controllers/concerns/foreman_puppet/environments_import.rb +61 -0
- data/app/controllers/concerns/foreman_puppet/extensions/api_hostgroups_controller.rb +40 -0
- data/app/controllers/concerns/foreman_puppet/extensions/api_template_combinations_controller.rb +23 -0
- data/app/controllers/concerns/foreman_puppet/extensions/api_v2_hosts_controller.rb +48 -0
- data/app/controllers/concerns/foreman_puppet/extensions/hostgroups_controller_extensions.rb +58 -0
- data/app/controllers/concerns/foreman_puppet/extensions/hosts_controller_extensions.rb +228 -0
- data/app/controllers/concerns/foreman_puppet/extensions/operatingsystems_controller.rb +11 -0
- data/app/controllers/concerns/foreman_puppet/extensions/parameters_host.rb +75 -0
- data/app/controllers/concerns/foreman_puppet/extensions/parameters_hostgroup.rb +70 -0
- data/app/controllers/concerns/foreman_puppet/extensions/parameters_template_combination.rb +21 -0
- data/app/controllers/concerns/foreman_puppet/parameters/config_group.rb +17 -0
- data/app/controllers/concerns/foreman_puppet/parameters/environment.rb +21 -0
- data/app/controllers/concerns/foreman_puppet/parameters/puppetclass.rb +24 -0
- data/app/controllers/concerns/foreman_puppet/parameters/puppetclass_lookup_key.rb +24 -0
- data/app/controllers/foreman_puppet/api/v2/base_controller.rb +26 -0
- data/app/controllers/foreman_puppet/api/v2/config_groups_controller.rb +57 -0
- data/app/controllers/foreman_puppet/api/v2/environments_controller.rb +91 -0
- data/app/controllers/foreman_puppet/api/v2/host_classes_controller.rb +59 -0
- data/app/controllers/foreman_puppet/api/v2/hostgroup_classes_controller.rb +46 -0
- data/app/controllers/foreman_puppet/api/v2/lookups_common_controller.rb +114 -0
- data/app/controllers/foreman_puppet/api/v2/override_values_controller.rb +99 -0
- data/app/controllers/foreman_puppet/api/v2/puppetclasses_controller.rb +99 -0
- data/app/controllers/foreman_puppet/api/v2/smart_class_parameters_controller.rb +76 -0
- data/app/controllers/foreman_puppet/config_groups_controller.rb +46 -0
- data/app/controllers/foreman_puppet/environments_controller.rb +51 -0
- data/app/controllers/foreman_puppet/puppet_smart_proxies_controller.rb +39 -0
- data/app/controllers/foreman_puppet/puppetclass_lookup_keys_controller.rb +33 -0
- data/app/controllers/foreman_puppet/puppetclasses_controller.rb +113 -0
- data/app/controllers/foreman_puppet/react_controller.rb +19 -0
- data/app/helpers/concerns/foreman_puppet/template_renderer_scope.rb +14 -0
- data/app/helpers/foreman_puppet/environments_helper.rb +17 -0
- data/app/helpers/foreman_puppet/hosts_and_hostgroups_helper.rb +96 -0
- data/app/helpers/foreman_puppet/hosts_helper.rb +32 -0
- data/app/helpers/foreman_puppet/puppet_smart_proxies_helper.rb +8 -0
- data/app/helpers/foreman_puppet/puppetclass_lookup_keys_helper.rb +135 -0
- data/app/helpers/foreman_puppet/puppetclasses_and_environments_helper.rb +55 -0
- data/app/helpers/foreman_puppet/puppetclasses_helper.rb +59 -0
- data/app/helpers/foreman_puppet/template_combinations_helper.rb +33 -0
- data/app/models/concerns/foreman_puppet/extensions/host.rb +88 -0
- data/app/models/concerns/foreman_puppet/extensions/hostgroup.rb +40 -0
- data/app/models/concerns/foreman_puppet/extensions/nic_managed.rb +11 -0
- data/app/models/concerns/foreman_puppet/extensions/operatingsystem.rb +11 -0
- data/app/models/concerns/foreman_puppet/extensions/provisioning_template.rb +64 -0
- data/app/models/concerns/foreman_puppet/extensions/report.rb +11 -0
- data/app/models/concerns/foreman_puppet/extensions/taxonomy.rb +19 -0
- data/app/models/concerns/foreman_puppet/extensions/template_combination.rb +23 -0
- data/app/models/concerns/foreman_puppet/extensions/user.rb +22 -0
- data/app/models/concerns/foreman_puppet/host_common.rb +90 -0
- data/app/models/concerns/foreman_puppet/puppet_lookup_value_extensions.rb +13 -0
- data/app/models/foreman_puppet/config_group.rb +45 -0
- data/app/models/foreman_puppet/config_group_class.rb +19 -0
- data/app/models/foreman_puppet/environment.rb +63 -0
- data/app/models/foreman_puppet/environment_class.rb +40 -0
- data/app/models/foreman_puppet/host_class.rb +23 -0
- data/app/models/foreman_puppet/host_config_group.rb +15 -0
- data/app/models/foreman_puppet/host_puppet_facet.rb +130 -0
- data/app/models/foreman_puppet/hostgroup_class.rb +23 -0
- data/app/models/foreman_puppet/hostgroup_puppet_facet.rb +98 -0
- data/app/models/foreman_puppet/puppetclass.rb +132 -0
- data/app/models/foreman_puppet/puppetclass_lookup_key.rb +58 -0
- data/app/services/foreman_puppet/host_info_providers/config_groups_info.rb +10 -0
- data/app/services/foreman_puppet/host_info_providers/puppet_info.rb +92 -0
- data/app/services/foreman_puppet/input_type/puppet_parameter_input.rb +35 -0
- data/app/services/foreman_puppet/proxy_status/puppet.rb +17 -0
- data/app/services/foreman_puppet/puppet_class_importer.rb +355 -0
- data/app/views/api/v2/template_combinations/base.json.erb +9 -0
- data/app/views/foreman_puppet/api/v2/config_groups/base.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/config_groups/create.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/config_groups/index.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/config_groups/main.json.rabl +8 -0
- data/app/views/foreman_puppet/api/v2/config_groups/show.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/config_groups/update.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/environments/base.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/environments/create.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/environments/index.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/environments/main.json.rabl +5 -0
- data/app/views/foreman_puppet/api/v2/environments/show.json.rabl +15 -0
- data/app/views/foreman_puppet/api/v2/environments/update.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/host_puppet_facets/base.json.rabl +1 -0
- data/app/views/foreman_puppet/api/v2/host_puppet_facets/host_single.json.rabl +17 -0
- data/app/views/foreman_puppet/api/v2/host_puppet_facets/show.json.rabl +11 -0
- data/app/views/foreman_puppet/api/v2/hostgroup_puppet_facets/base.json.rabl +5 -0
- data/app/views/foreman_puppet/api/v2/hostgroup_puppet_facets/hostgroup_single.json.rabl +16 -0
- data/app/views/foreman_puppet/api/v2/hostgroup_puppet_facets/show.json.rabl +11 -0
- data/app/views/foreman_puppet/api/v2/import_puppetclasses/index.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/import_puppetclasses/show.json.rabl +36 -0
- data/app/views/foreman_puppet/api/v2/override_values/create.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/override_values/index.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/override_values/show.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/override_values/update.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/puppetclasses/base.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/puppetclasses/create.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/puppetclasses/index.json.rabl +4 -0
- data/app/views/foreman_puppet/api/v2/puppetclasses/list.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/puppetclasses/main.json.rabl +5 -0
- data/app/views/foreman_puppet/api/v2/puppetclasses/show.json.rabl +15 -0
- data/app/views/foreman_puppet/api/v2/puppetclasses/update.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/smart_class_parameters/base.json.rabl +4 -0
- data/app/views/foreman_puppet/api/v2/smart_class_parameters/create.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/smart_class_parameters/destroy.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/smart_class_parameters/index.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/smart_class_parameters/main.json.rabl +23 -0
- data/app/views/foreman_puppet/api/v2/smart_class_parameters/show.json.rabl +19 -0
- data/app/views/foreman_puppet/api/v2/smart_class_parameters/update.json.rabl +3 -0
- data/app/views/foreman_puppet/config_groups/_config_group.html.erb +34 -0
- data/app/views/foreman_puppet/config_groups/_config_groups_selection.html.erb +36 -0
- data/app/views/foreman_puppet/config_groups/_form.html.erb +9 -0
- data/app/views/foreman_puppet/config_groups/edit.html.erb +3 -0
- data/app/views/foreman_puppet/config_groups/index.html.erb +31 -0
- data/app/views/foreman_puppet/config_groups/new.html.erb +3 -0
- data/app/views/foreman_puppet/config_groups/welcome.html.erb +12 -0
- data/app/views/foreman_puppet/environments/_form.html.erb +20 -0
- data/app/views/foreman_puppet/environments/edit.html.erb +8 -0
- data/app/views/foreman_puppet/environments/index.html.erb +32 -0
- data/app/views/foreman_puppet/environments/new.html.erb +7 -0
- data/app/views/foreman_puppet/environments/welcome.html.erb +16 -0
- data/app/views/foreman_puppet/layouts/application_react.html.erb +15 -0
- data/app/views/foreman_puppet/puppet_smart_proxies/_dashboard.html.erb +9 -0
- data/app/views/foreman_puppet/puppet_smart_proxies/_environments.html.erb +30 -0
- data/app/views/foreman_puppet/puppetclass_lookup_keys/edit.html.erb +3 -0
- data/app/views/foreman_puppet/puppetclass_lookup_keys/index.html.erb +22 -0
- data/app/views/foreman_puppet/puppetclass_lookup_keys/welcome.html.erb +9 -0
- data/app/views/foreman_puppet/puppetclasses/_class_parameters.html.erb +37 -0
- data/app/views/foreman_puppet/puppetclasses/_class_selection.html.erb +70 -0
- data/app/views/foreman_puppet/puppetclasses/_classes.html.erb +22 -0
- data/app/views/foreman_puppet/puppetclasses/_classes_in_groups.html.erb +5 -0
- data/app/views/foreman_puppet/puppetclasses/_classes_parameters.html.erb +16 -0
- data/app/views/foreman_puppet/puppetclasses/_form.html.erb +62 -0
- data/app/views/foreman_puppet/puppetclasses/_selected_classes.html.erb +4 -0
- data/app/views/foreman_puppet/puppetclasses/edit.html.erb +4 -0
- data/app/views/foreman_puppet/puppetclasses/index.html.erb +47 -0
- data/app/views/hosts/_form_puppet_enc_tab.html.erb +24 -0
- data/app/views/hosts/foreman_puppet/_form_main_tab_fields.html.erb +1 -0
- data/app/views/hosts/select_multiple_environment.html.erb +8 -0
- data/app/views/provisioning_templates/_combination.html.erb +5 -0
- data/app/views/provisioning_templates/_combinations.html.erb +6 -0
- data/app/views/smart_proxies/plugins/_puppet.html.erb +24 -0
- data/config/api_routes.rb +81 -0
- data/config/routes.rb +89 -0
- data/db/migrate/20101121140000_add_environment_to_template_combinations.foreman_puppet.rb +9 -0
- data/db/migrate/20200720123005_migrate_puppet_core_types.foreman_puppet.rb +19 -0
- data/db/migrate/20200722171017_create_host_puppet_facet.foreman_puppet.rb +10 -0
- data/db/migrate/20200803113531_create_hostgroup_puppet_facet.foreman_puppet.rb +10 -0
- data/db/migrate/20200803113803_migrate_environment_to_puppet_facet.foreman_puppet.rb +22 -0
- data/db/migrate/20200803113903_migrate_host_type_in_host_config_groups.foreman_puppet.rb +29 -0
- data/db/migrate/20201125113903_migrate_puppetclasses_to_facets.foreman_puppet.rb +47 -0
- data/db/migrate_foreman/20090722141107_create_environments.rb +17 -0
- data/db/migrate_foreman/20120905095532_create_environment_classes.rb +15 -0
- data/db/migrate_foreman/20140407161817_create_config_groups.rb +9 -0
- data/db/migrate_foreman/20140407162007_create_config_group_classes.rb +10 -0
- data/db/migrate_foreman/20140407162059_create_host_config_groups.rb +11 -0
- data/db/migrate_foreman/20161205142618_delete_orphaned_smart_class_parameters.rb +10 -0
- data/db/migrate_foreman/20170109115157_fix_lookup_key_auditable_type.rb +15 -0
- data/db/migrate_foreman/20180816134832_cast_lookup_key_values.rb +35 -0
- data/db/migrate_foreman/20181023112532_add_environment_puppetclass_id.rb +7 -0
- data/db/migrate_foreman/20181224174419_add_index_to_environment_class_by_lookup_key_and_puppetclass.rb +6 -0
- data/db/seeds.d/111_puppet_proxy_feature.rb +8 -0
- data/lib/foreman_puppet.rb +10 -0
- data/lib/foreman_puppet/engine.rb +82 -0
- data/lib/foreman_puppet/register.rb +218 -0
- data/lib/foreman_puppet/version.rb +3 -0
- data/lib/tasks/foreman_puppet_tasks.rake +31 -0
- data/locale/Makefile +60 -0
- data/locale/action_names.rb +5 -0
- data/locale/en/foreman_puppet.edit.po +911 -0
- data/locale/en/foreman_puppet.po +690 -0
- data/locale/en/foreman_puppet.po.time_stamp +0 -0
- data/locale/foreman_puppet.pot +1076 -0
- data/locale/gemspec.rb +2 -0
- data/test/controllers/foreman_puppet/api/v2/config_groups_controller_test.rb +28 -0
- data/test/controllers/foreman_puppet/api/v2/environments_controller_test.rb +346 -0
- data/test/controllers/foreman_puppet/api/v2/host_classes_controller_test.rb +48 -0
- data/test/controllers/foreman_puppet/api/v2/hostgroup_classes_controller_test.rb +41 -0
- data/test/controllers/foreman_puppet/api/v2/hostgroups_controller_test.rb +79 -0
- data/test/controllers/foreman_puppet/api/v2/hosts_controller_test.rb +101 -0
- data/test/controllers/foreman_puppet/api/v2/lookups_common_controller_test.rb +29 -0
- data/test/controllers/foreman_puppet/api/v2/override_values_controller_test.rb +169 -0
- data/test/controllers/foreman_puppet/api/v2/puppetclasses_controller_test.rb +144 -0
- data/test/controllers/foreman_puppet/api/v2/smart_class_parameters_controller_test.rb +557 -0
- data/test/controllers/foreman_puppet/api/v2/template_combinations_controller_test.rb +81 -0
- data/test/controllers/foreman_puppet/config_groups_controller_test.rb +47 -0
- data/test/controllers/foreman_puppet/environments_controller_test.rb +230 -0
- data/test/controllers/foreman_puppet/hostgroups_controller_test.rb +72 -0
- data/test/controllers/foreman_puppet/hosts_controller_test.rb +346 -0
- data/test/controllers/foreman_puppet/puppet_smart_proxies_controller_test.rb +29 -0
- data/test/controllers/foreman_puppet/puppetclass_lookup_keys_controller_test.rb +59 -0
- data/test/controllers/foreman_puppet/puppetclasses_controller_test.rb +235 -0
- data/test/controllers/provisioning_templates_controller_test.rb +70 -0
- data/test/factories/foreman_puppet_factories.rb +134 -0
- data/test/factories/host_puppet_enhancements.rb +61 -0
- data/test/factories/proxy_puppet_enhancements.rb +33 -0
- data/test/helpers/foreman_puppet/hosts_and_hostgroups_helper_test.rb +65 -0
- data/test/helpers/foreman_puppet/puppetclasses_helper_test.rb +33 -0
- data/test/integration/foreman_puppet/environment_js_test.rb +27 -0
- data/test/integration/foreman_puppet/host_js_test.rb +371 -0
- data/test/integration/foreman_puppet/hostgroup_js_test.rb +100 -0
- data/test/integration/foreman_puppet/puppetclass_js_test.rb +37 -0
- data/test/integration/foreman_puppet/smartclass_parameter_js_test.rb +84 -0
- data/test/models/foreman_puppet/config_group_class_test.rb +9 -0
- data/test/models/foreman_puppet/config_group_test.rb +8 -0
- data/test/models/foreman_puppet/environment_test.rb +92 -0
- data/test/models/foreman_puppet/host_config_group_test.rb +39 -0
- data/test/models/foreman_puppet/host_puppet_facet_test.rb +116 -0
- data/test/models/foreman_puppet/host_test.rb +288 -0
- data/test/models/foreman_puppet/hostgroup_puppet_facet_test.rb +200 -0
- data/test/models/foreman_puppet/hostgroup_test.rb +14 -0
- data/test/models/foreman_puppet/lookup_value_test.rb +69 -0
- data/test/models/foreman_puppet/provisioning_template_test.rb +124 -0
- data/test/models/foreman_puppet/puppetclass_lookup_key_test.rb +81 -0
- data/test/models/foreman_puppet/puppetclass_test.rb +144 -0
- data/test/models/foreman_puppet/smart_proxy_test.rb +28 -0
- data/test/qraphql/queries/host_puppet_query_test.rb +36 -0
- data/test/qraphql/queries/hostgroup_puppet_query_test.rb +36 -0
- data/test/services/foreman_puppet/host_info_providers/puppet_info_test.rb +791 -0
- data/test/services/foreman_puppet/input_type/puppet_parameter_input_test.rb +14 -0
- data/test/test_puppet_helper.rb +30 -0
- data/test/unit/foreman_puppet/access_permissions_test.rb +16 -0
- data/test/unit/foreman_puppet/puppet_class_importer_test.rb +247 -0
- data/test/unit/foreman_puppet/template_rendering_test.rb +20 -0
- data/test/unit/foreman_puppet_test.rb +11 -0
- data/webpack/__mocks__/foremanReact/common/I18n.js +7 -0
- data/webpack/__mocks__/foremanReact/components/Layout/LayoutActions.js +2 -0
- data/webpack/__mocks__/foremanReact/readme.md +11 -0
- data/webpack/__mocks__/foremanReact/redux/API/APISelectors.js +10 -0
- data/webpack/__mocks__/foremanReact/redux/API/index.js +10 -0
- data/webpack/__mocks__/foremanReact/redux/actions/toasts.js +8 -0
- data/webpack/__mocks__/foremanReact/redux/index.js +1 -0
- data/webpack/__mocks__/foremanReact/redux/middlewares/IntervalMiddleware.js +5 -0
- data/webpack/fills_index.js +30 -0
- data/webpack/index.js +18 -0
- data/webpack/src/ForemanPuppet.js +11 -0
- data/webpack/src/Router/__snapshots__/routes.test.js.snap +3 -0
- data/webpack/src/Router/index.js +14 -0
- data/webpack/src/Router/routes.js +3 -0
- data/webpack/src/Router/routes.test.js +16 -0
- data/webpack/src/foreman_class_edit.js +224 -0
- data/webpack/src/foreman_puppet_host_form.js +140 -0
- data/webpack/src/foreman_puppet_host_form.test.js +65 -0
- data/webpack/src/index.js +1 -0
- data/webpack/src/reducers.js +7 -0
- metadata +340 -0
@@ -0,0 +1,557 @@
|
|
1
|
+
require 'test_puppet_helper'
|
2
|
+
|
3
|
+
module ForemanPuppet
|
4
|
+
module Api
|
5
|
+
module V2
|
6
|
+
class SmartClassParametersControllerTest < ActionController::TestCase
|
7
|
+
setup do
|
8
|
+
@routes = ForemanPuppet::Engine.routes
|
9
|
+
lookup_key
|
10
|
+
end
|
11
|
+
|
12
|
+
let(:environment) { FactoryBot.create(:environment) }
|
13
|
+
let(:puppetclass) { FactoryBot.create(:puppetclass) }
|
14
|
+
let(:extra_lookup_key_attrs) { {} }
|
15
|
+
let(:lookup_key_attrs) { { environment: environment, puppetclass: puppetclass }.merge(extra_lookup_key_attrs) }
|
16
|
+
let(:lookup_key) { FactoryBot.create(:puppetclass_lookup_key, lookup_key_attrs) }
|
17
|
+
|
18
|
+
test 'should get all smart class parameters' do
|
19
|
+
FactoryBot.create_list(:puppetclass_lookup_key, 3, environment: environment)
|
20
|
+
get :index
|
21
|
+
assert_response :success
|
22
|
+
assert_not_nil assigns(:smart_class_parameters)
|
23
|
+
results = ActiveSupport::JSON.decode(@response.body)
|
24
|
+
assert_not results['results'].empty?
|
25
|
+
assert_equal 4, results['results'].length
|
26
|
+
end
|
27
|
+
|
28
|
+
test 'should get same smart class parameters in multiple environments once' do
|
29
|
+
FactoryBot.create(:environment_class, puppetclass_lookup_key: lookup_key)
|
30
|
+
get :index
|
31
|
+
assert_response :success
|
32
|
+
assert_not_nil assigns(:smart_class_parameters)
|
33
|
+
results = ActiveSupport::JSON.decode(@response.body)
|
34
|
+
assert_not results['results'].empty?
|
35
|
+
assert_equal 1, results['results'].length
|
36
|
+
end
|
37
|
+
|
38
|
+
test 'should get smart class parameters for a specific host' do
|
39
|
+
host = FactoryBot.create(:host, :with_puppet_enc, puppetclasses: [puppetclass], environment: environment)
|
40
|
+
get :index, params: { host_id: host.to_param }
|
41
|
+
assert_response :success
|
42
|
+
assert_not_nil assigns(:smart_class_parameters)
|
43
|
+
results = ActiveSupport::JSON.decode(@response.body)
|
44
|
+
assert_not results['results'].empty?
|
45
|
+
assert_equal 1, results['results'].count
|
46
|
+
assert_equal lookup_key.key, results['results'][0]['parameter']
|
47
|
+
end
|
48
|
+
|
49
|
+
test 'should get :not_found for a non-existing host' do
|
50
|
+
non_existing_id = 100_000
|
51
|
+
get :index, params: { host_id: non_existing_id }
|
52
|
+
assert_response :not_found
|
53
|
+
assert_error_message("Host with id '#{non_existing_id}' was not found")
|
54
|
+
end
|
55
|
+
|
56
|
+
test 'should get smart class parameters for a specific hostgroup' do
|
57
|
+
hostgroup = FactoryBot.create(:hostgroup, :with_puppet_enc, puppetclasses: [puppetclass], environment: environment)
|
58
|
+
get :index, params: { hostgroup_id: hostgroup.to_param }
|
59
|
+
assert_response :success
|
60
|
+
assert_not_nil assigns(:smart_class_parameters)
|
61
|
+
results = ActiveSupport::JSON.decode(@response.body)
|
62
|
+
assert_not results['results'].empty?
|
63
|
+
assert_equal 1, results['results'].count
|
64
|
+
assert_equal lookup_key.key, results['results'][0]['parameter']
|
65
|
+
end
|
66
|
+
|
67
|
+
test 'should get :not_found for a non-existing hostgroup' do
|
68
|
+
non_existing_id = 100_000
|
69
|
+
get :index, params: { hostgroup_id: non_existing_id }
|
70
|
+
assert_response :not_found
|
71
|
+
assert_error_message("Hostgroup with id '#{non_existing_id}' was not found")
|
72
|
+
end
|
73
|
+
|
74
|
+
test_attributes pid: 'c0378f1e-c215-4f85-892c-d21a8b5a7060'
|
75
|
+
test 'should get smart class parameters for a specific puppetclass' do
|
76
|
+
get :index, params: { puppetclass_id: puppetclass.id }
|
77
|
+
assert_response :success
|
78
|
+
assert_not_nil assigns(:smart_class_parameters)
|
79
|
+
results = ActiveSupport::JSON.decode(@response.body)
|
80
|
+
assert_not results['results'].empty?
|
81
|
+
assert_equal 1, results['results'].count
|
82
|
+
assert_equal lookup_key.key, results['results'][0]['parameter']
|
83
|
+
end
|
84
|
+
|
85
|
+
test_attributes pid: 'e8b140c0-5c6a-404f-870c-8ebb128830ef'
|
86
|
+
test 'list parameters as non admin user' do
|
87
|
+
filter1 = FactoryBot.build(:filter)
|
88
|
+
filter1.permissions = Permission.where(name: 'view_puppetclasses')
|
89
|
+
filter2 = FactoryBot.build(:filter)
|
90
|
+
filter2.permissions = Permission.where(name: 'view_external_parameters')
|
91
|
+
role = FactoryBot.build(:role)
|
92
|
+
role.filters = [filter1, filter2]
|
93
|
+
role.save!
|
94
|
+
user = FactoryBot.create(:user)
|
95
|
+
user.update(roles: [role])
|
96
|
+
|
97
|
+
as_user user do
|
98
|
+
get :index, params: { puppetclass_id: puppetclass.id }
|
99
|
+
assert_response :success
|
100
|
+
assert_not_nil assigns(:smart_class_parameters)
|
101
|
+
results = ActiveSupport::JSON.decode(@response.body)
|
102
|
+
assert_not results['results'].empty?
|
103
|
+
assert_equal 1, results['results'].count
|
104
|
+
assert_equal lookup_key.key, results['results'][0]['parameter']
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
test 'should get same smart class parameters in multiple environments once for a specific puppetclass' do
|
109
|
+
FactoryBot.create(:environment_class, puppetclass: puppetclass, puppetclass_lookup_key: lookup_key)
|
110
|
+
get :index, params: { puppetclass_id: puppetclass.id }
|
111
|
+
assert_response :success
|
112
|
+
assert_not_nil assigns(:smart_class_parameters)
|
113
|
+
results = ActiveSupport::JSON.decode(@response.body)
|
114
|
+
assert_not results['results'].empty?
|
115
|
+
assert_equal 1, results['results'].count
|
116
|
+
assert_equal lookup_key.key, results['results'][0]['parameter']
|
117
|
+
end
|
118
|
+
|
119
|
+
test 'should get :not_found for a non-existing puppetclass' do
|
120
|
+
non_existing_id = 100_000
|
121
|
+
get :index, params: { puppetclass_id: non_existing_id }
|
122
|
+
assert_response :not_found
|
123
|
+
assert_error_message("Puppetclass with id '#{non_existing_id}' was not found")
|
124
|
+
end
|
125
|
+
|
126
|
+
test 'should get smart class parameters for a specific environment' do
|
127
|
+
get :index, params: { environment_id: environment.id }
|
128
|
+
assert_response :success
|
129
|
+
assert_not_nil assigns(:smart_class_parameters)
|
130
|
+
results = ActiveSupport::JSON.decode(@response.body)
|
131
|
+
assert_not results['results'].empty?
|
132
|
+
assert_equal 1, results['results'].count
|
133
|
+
assert_equal lookup_key.key, results['results'][0]['parameter']
|
134
|
+
end
|
135
|
+
|
136
|
+
test 'should get :not_found for a non-existing environment' do
|
137
|
+
non_existing_id = 100_000
|
138
|
+
get :index, params: { environment_id: non_existing_id }
|
139
|
+
assert_response :not_found
|
140
|
+
assert_error_message("Environment with id '#{non_existing_id}' was not found")
|
141
|
+
end
|
142
|
+
|
143
|
+
test 'should get smart class parameters for a specific environment and puppetclass combination' do
|
144
|
+
get :index, params: { environment_id: environment.id, puppetclass_id: puppetclass.id }
|
145
|
+
assert_response :success
|
146
|
+
assert_not_nil assigns(:smart_class_parameters)
|
147
|
+
results = ActiveSupport::JSON.decode(@response.body)
|
148
|
+
assert_not results['results'].empty?
|
149
|
+
assert_equal 1, results['results'].count
|
150
|
+
assert_equal lookup_key.key, results['results'][0]['parameter']
|
151
|
+
end
|
152
|
+
|
153
|
+
test 'should show specific smart class parameter by id' do
|
154
|
+
get :show, params: { id: lookup_key.to_param, puppetclass_id: puppetclass.id }
|
155
|
+
assert_response :success
|
156
|
+
show_response = ActiveSupport::JSON.decode(@response.body)
|
157
|
+
assert_not show_response.empty?
|
158
|
+
end
|
159
|
+
|
160
|
+
test 'should show specific smart class parameter by parameter name when it is unique' do
|
161
|
+
get :show, params: { id: lookup_key.key }
|
162
|
+
assert_response :success
|
163
|
+
show_response = ActiveSupport::JSON.decode(@response.body)
|
164
|
+
assert_not show_response.empty?
|
165
|
+
end
|
166
|
+
|
167
|
+
test 'should show specific smart class parameter by parameter name even if it is not unique' do
|
168
|
+
same_key = FactoryBot.create(:puppetclass_lookup_key, key: lookup_key.key, puppetclass: puppetclass)
|
169
|
+
get :show, params: { id: same_key.key, puppetclass_id: puppetclass.id }
|
170
|
+
assert_response :success
|
171
|
+
show_response = ActiveSupport::JSON.decode(@response.body)
|
172
|
+
assert_not show_response.empty?
|
173
|
+
end
|
174
|
+
|
175
|
+
test 'should show puppetclass name and id' do
|
176
|
+
get :show, params: { id: lookup_key.key, puppetclass_id: puppetclass.id }
|
177
|
+
assert_response :success
|
178
|
+
results = ActiveSupport::JSON.decode(@response.body)
|
179
|
+
assert_equal puppetclass.name, results['puppetclass_name']
|
180
|
+
assert_equal puppetclass.id, results['puppetclass_id']
|
181
|
+
end
|
182
|
+
|
183
|
+
test_attributes pid: '1140c3bf-ab3b-4da6-99fb-9c508cefbbd1'
|
184
|
+
test 'should update smart class parameter' do
|
185
|
+
orig_value = lookup_key.default_value
|
186
|
+
orig_parameter_type = lookup_key.parameter_type
|
187
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { parameter_type: 'integer',
|
188
|
+
default_value: 33_333 } }
|
189
|
+
assert_response :success
|
190
|
+
lookup_key.reload
|
191
|
+
assert_not_equal orig_value, lookup_key.default_value
|
192
|
+
assert_not_equal orig_parameter_type, lookup_key.parameter_type
|
193
|
+
end
|
194
|
+
|
195
|
+
context 'without override' do
|
196
|
+
let(:extra_lookup_key_attrs) { { override: false } }
|
197
|
+
|
198
|
+
test_attributes pid: '11d75f6d-7105-4ee8-b147-b8329cae4156'
|
199
|
+
test 'should not set avoid duplicates for non supported types' do
|
200
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { override: true,
|
201
|
+
default_value: RFauxFactory.gen_alpha,
|
202
|
+
avoid_duplicates: true } }
|
203
|
+
assert_response :internal_server_error, 'Can set avoid duplicated for non supported types'
|
204
|
+
assert_error_message('Validation failed: Avoid duplicates can only be set for arrays that have merge_overrides set to true')
|
205
|
+
assert_not(lookup_key.reload.avoid_duplicates)
|
206
|
+
end
|
207
|
+
|
208
|
+
test_attributes pid: 'd7b1c336-bd9f-40a3-a573-939f2a021cdc'
|
209
|
+
test 'should not set merge overrides for non supported types' do
|
210
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { override: true,
|
211
|
+
default_value: RFauxFactory.gen_alpha,
|
212
|
+
merge_overrides: true } }
|
213
|
+
assert_response :internal_server_error, 'Can set merge overrides for non supported types'
|
214
|
+
assert_error_message('Validation failed: Merge overrides can only be set for array or hash')
|
215
|
+
assert_not(lookup_key.reload.merge_overrides)
|
216
|
+
end
|
217
|
+
|
218
|
+
test_attributes pid: 'fc1ab905-b213-4b67-b886-b10c9cc0379f'
|
219
|
+
test 'should not set merge default if merge overrides is not set' do
|
220
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { override: true,
|
221
|
+
default_value: RFauxFactory.gen_alpha,
|
222
|
+
merge_default: true } }
|
223
|
+
assert_response :internal_server_error, 'Can set merge default if merge overrides is not set'
|
224
|
+
assert_error_message('Validation failed: Merge default can only be set when merge overrides is set')
|
225
|
+
assert_not(lookup_key.reload.merge_default)
|
226
|
+
end
|
227
|
+
|
228
|
+
test_attributes pid: 'f4d56d31-ac48-495f-9e56-545f274a060f'
|
229
|
+
test 'should not set default value if override is false' do
|
230
|
+
assert_not(lookup_key.override)
|
231
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { default_value: RFauxFactory.gen_alpha } }
|
232
|
+
assert_response :internal_server_error, 'Can set default value if override is not set'
|
233
|
+
assert_error_message('Validation failed: Override must be true to edit the parameter')
|
234
|
+
end
|
235
|
+
|
236
|
+
test_attributes pid: '7f0ab885-5520-4431-a916-f739c0498a5b'
|
237
|
+
test 'should not update parameter data with invalid values' do
|
238
|
+
default_value = RFauxFactory.gen_alphanumeric
|
239
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { override: true,
|
240
|
+
parameter_type: 'boolean',
|
241
|
+
default_value: default_value } }
|
242
|
+
assert_response :internal_server_error, 'Can set invalid parameter type / default value'
|
243
|
+
assert_error_message('Validation failed: Default value is invalid')
|
244
|
+
assert_not_equal lookup_key.reload.default_value, default_value
|
245
|
+
end
|
246
|
+
|
247
|
+
test_attributes pid: '75b1dc0b-2287-4b99-b8dc-e50b83355819'
|
248
|
+
test 'should not update default value if not in list' do
|
249
|
+
default_value = RFauxFactory.gen_alphanumeric
|
250
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { override: true,
|
251
|
+
default_value: default_value,
|
252
|
+
validator_type: 'list',
|
253
|
+
validator_rule: '5, test' } }
|
254
|
+
assert_response :internal_server_error, 'Can set default value if value not in validator list'
|
255
|
+
assert_error_message("Validation failed: Default value #{default_value} is not one of")
|
256
|
+
assert_not_equal lookup_key.reload.default_value, default_value
|
257
|
+
end
|
258
|
+
|
259
|
+
test_attributes pid: '99628b78-3037-4c20-95f0-7ce5455093ac'
|
260
|
+
test 'should not update default value if not match regexp' do
|
261
|
+
default_value = RFauxFactory.gen_alpha
|
262
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { override: true,
|
263
|
+
default_value: default_value,
|
264
|
+
validator_type: 'regexp',
|
265
|
+
validator_rule: '[0-9]' } }
|
266
|
+
assert_response :internal_server_error, 'Can set default value if value not in validator regexp'
|
267
|
+
assert_error_message('Validation failed: Default value is invalid')
|
268
|
+
assert_not_equal lookup_key.reload.default_value, default_value
|
269
|
+
end
|
270
|
+
|
271
|
+
test_attributes pid: 'eaa11546-79df-452e-9552-5b2507a27b48'
|
272
|
+
test 'should set override' do
|
273
|
+
value = RFauxFactory.gen_alpha
|
274
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { override: true, default_value: value } }
|
275
|
+
assert_response :success
|
276
|
+
assert(JSON.parse(response.body)['override'])
|
277
|
+
assert_equal JSON.parse(response.body)['default_value'], value
|
278
|
+
end
|
279
|
+
end
|
280
|
+
|
281
|
+
test_attributes pid: 'e46a12cb-b3ea-42eb-b1bb-b750655b6a4a'
|
282
|
+
test 'should not update default type with invalid value' do
|
283
|
+
default_value = RFauxFactory.gen_alpha
|
284
|
+
FactoryBot.create(:lookup_value, lookup_key: lookup_key, value: RFauxFactory.gen_alpha, match: 'domain=example.com')
|
285
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { parameter_type: 'boolean',
|
286
|
+
default_value: default_value } }
|
287
|
+
assert_response :internal_server_error, 'Can set default type with invalid value'
|
288
|
+
assert_error_message('Validation failed: Default value is invalid, Lookup values is invalid')
|
289
|
+
lookup_key.reload
|
290
|
+
assert_not_equal lookup_key.default_value, default_value
|
291
|
+
assert_not_equal lookup_key.parameter_type, 'boolean'
|
292
|
+
end
|
293
|
+
|
294
|
+
test_attributes pid: 'a5e89e86-253f-4254-9ebb-eefb3dc2c2ab'
|
295
|
+
test 'should not update matcher with value not in list' do
|
296
|
+
FactoryBot.create(:lookup_value, lookup_key: lookup_key, value: 'myexample', match: 'domain=example.com')
|
297
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { override: true,
|
298
|
+
default_value: 50,
|
299
|
+
validator_type: 'list',
|
300
|
+
validator_rule: '25, example, 50' } }
|
301
|
+
assert_error_message('Validation failed: Lookup values is invalid')
|
302
|
+
end
|
303
|
+
|
304
|
+
test_attributes pid: '08820c89-2b93-40f1-be17-0bd38c519e90'
|
305
|
+
test 'should not update matcher with value not matching regex' do
|
306
|
+
FactoryBot.create(:lookup_value, lookup_key: lookup_key, value: 'myexample', match: 'domain=test.com')
|
307
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { override: true,
|
308
|
+
default_value: RFauxFactory.gen_numeric_string,
|
309
|
+
validator_type: 'regexp',
|
310
|
+
validator_rule: '[0-9]' } }
|
311
|
+
assert_error_message('Validation failed: Lookup values is invalid')
|
312
|
+
end
|
313
|
+
|
314
|
+
test_attributes pid: '80bf52df-e678-4384-a4d5-7a88928620ce'
|
315
|
+
test 'should set avoid duplicates for supported types' do
|
316
|
+
put :update, params: { id: lookup_key.id,
|
317
|
+
smart_class_parameter: {
|
318
|
+
override: true,
|
319
|
+
parameter_type: 'array',
|
320
|
+
default_value: "[#{RFauxFactory.gen_alpha}, #{RFauxFactory.gen_alpha}]",
|
321
|
+
avoid_duplicates: true,
|
322
|
+
merge_overrides: true,
|
323
|
+
} }
|
324
|
+
assert_response :success
|
325
|
+
assert(JSON.parse(response.body)['avoid_duplicates'], "Can't set avoid duplicates")
|
326
|
+
end
|
327
|
+
|
328
|
+
test_attributes pid: 'ae1c8e2d-c15d-4325-9aa6-cc6b091fb95a'
|
329
|
+
test 'should set merge overrides for supported types' do
|
330
|
+
put :update, params: { id: lookup_key.id,
|
331
|
+
smart_class_parameter: {
|
332
|
+
override: true,
|
333
|
+
parameter_type: 'array',
|
334
|
+
default_value: "[#{RFauxFactory.gen_alpha}, #{RFauxFactory.gen_alpha}]",
|
335
|
+
merge_overrides: true,
|
336
|
+
merge_default: true,
|
337
|
+
} }
|
338
|
+
assert_response :success
|
339
|
+
assert(JSON.parse(response.body)['merge_overrides'], "Can't set merge overrides")
|
340
|
+
assert(JSON.parse(response.body)['merge_default'], "Can't set merge default")
|
341
|
+
end
|
342
|
+
|
343
|
+
test_attributes pid: 'b6882658-9201-4e87-978a-0195a99ec07d'
|
344
|
+
test 'should hide empty default value' do
|
345
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { override: true,
|
346
|
+
default_value: '',
|
347
|
+
hidden_value: true } }
|
348
|
+
assert_response :success
|
349
|
+
assert(JSON.parse(response.body)['hidden_value?'])
|
350
|
+
assert_equal('*****', JSON.parse(response.body)['default_value'])
|
351
|
+
get :show, params: { id: lookup_key.id, show_hidden: true }
|
352
|
+
assert_equal('', JSON.parse(response.body)['default_value'])
|
353
|
+
end
|
354
|
+
|
355
|
+
test_attributes pid: '0cb8ab59-7910-4573-9dea-2e489d1578d4'
|
356
|
+
test 'should hide default value' do
|
357
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { override: true,
|
358
|
+
default_value: RFauxFactory.gen_alpha,
|
359
|
+
hidden_value: true } }
|
360
|
+
assert_response :success
|
361
|
+
assert(JSON.parse(response.body)['hidden_value?'])
|
362
|
+
assert_equal('*****', JSON.parse(response.body)['default_value'])
|
363
|
+
end
|
364
|
+
|
365
|
+
test_attributes pid: '7261b409-b482-41ba-934d-4b724e8113ac'
|
366
|
+
test 'should set puppet default' do
|
367
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { override: true, omit: true } }
|
368
|
+
assert_response :success
|
369
|
+
assert(JSON.parse(response.body)['omit'])
|
370
|
+
end
|
371
|
+
|
372
|
+
test_attributes pid: '9018d624-07f2-4fb2-b421-8888c7d324a7'
|
373
|
+
test 'should remove matcher' do
|
374
|
+
lookup_key = FactoryBot.create(:puppetclass_lookup_key, override_value_order: 'is_virtual', puppetclass: puppetclass)
|
375
|
+
lookup_value = FactoryBot.create(:lookup_value, lookup_key: lookup_key, value: RFauxFactory.gen_alpha, match: 'is_virtual=true')
|
376
|
+
get :show, params: { id: lookup_key.id }
|
377
|
+
assert_equal(1, JSON.parse(response.body)['override_values_count'])
|
378
|
+
lookup_value.destroy
|
379
|
+
get :show, params: { id: lookup_key.id }
|
380
|
+
assert_equal(0, JSON.parse(response.body)['override_values_count'])
|
381
|
+
end
|
382
|
+
|
383
|
+
test_attributes pid: '73151830-e902-4b9e-888e-149570869530'
|
384
|
+
test 'should unhide default value' do
|
385
|
+
value = RFauxFactory.gen_alpha
|
386
|
+
lookup_key = FactoryBot.create(:puppetclass_lookup_key, default_value: value, hidden_value: true, puppetclass: puppetclass)
|
387
|
+
get :show, params: { id: lookup_key.id }
|
388
|
+
assert(JSON.parse(response.body)['hidden_value?'])
|
389
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { hidden_value: false } }
|
390
|
+
assert_response :success
|
391
|
+
assert_not(JSON.parse(response.body)['hidden_value?'])
|
392
|
+
end
|
393
|
+
|
394
|
+
test_attributes pid: '6f7ad3c4-7745-45bf-a9f9-697f049556da'
|
395
|
+
test 'update hidden value in parameter' do
|
396
|
+
old_value = RFauxFactory.gen_alpha
|
397
|
+
new_value = RFauxFactory.gen_alpha
|
398
|
+
lookup_key = FactoryBot.create(:puppetclass_lookup_key, default_value: old_value, hidden_value: true, puppetclass: puppetclass)
|
399
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { default_value: new_value } }
|
400
|
+
lookup_key.reload
|
401
|
+
assert(lookup_key.hidden_value?)
|
402
|
+
assert_equal lookup_key.default_value, new_value
|
403
|
+
end
|
404
|
+
|
405
|
+
test_attributes pid: '92977eb0-92c2-4734-84d9-6fda8ff9d2d8'
|
406
|
+
test 'validate default value requires check' do
|
407
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { override: true,
|
408
|
+
required: true,
|
409
|
+
parameter_type: 'boolean',
|
410
|
+
default_value: true } }
|
411
|
+
lookup_key.reload
|
412
|
+
assert(lookup_key.required)
|
413
|
+
assert(lookup_key.default_value)
|
414
|
+
end
|
415
|
+
|
416
|
+
test_attributes pid: 'd5d5f084-fa62-4ec3-90ea-9fcabd7bda4f'
|
417
|
+
test 'validate default value with list' do
|
418
|
+
values_list = [RFauxFactory.gen_alpha, RFauxFactory.gen_alphanumeric, rand(100..1 << 64), [true, false].sample]
|
419
|
+
values_list_str = values_list.join(', ')
|
420
|
+
value = values_list.sample
|
421
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { override: true,
|
422
|
+
default_value: value,
|
423
|
+
validator_type: 'list',
|
424
|
+
validator_rule: values_list_str } }
|
425
|
+
assert_response :success
|
426
|
+
response = JSON.parse(@response.body)
|
427
|
+
assert_equal value.to_s, response['default_value']
|
428
|
+
assert_equal 'list', response['validator_type']
|
429
|
+
assert_equal values_list_str, response['validator_rule']
|
430
|
+
end
|
431
|
+
|
432
|
+
test_attributes pid: 'd5df7804-9633-4ef8-a065-10807351d230'
|
433
|
+
test 'validate default value with regexp' do
|
434
|
+
value = rand(1..1 << 64)
|
435
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { override: true,
|
436
|
+
default_value: value,
|
437
|
+
validator_type: 'regexp',
|
438
|
+
validator_rule: '[0-9]' } }
|
439
|
+
assert_response :success
|
440
|
+
response = JSON.parse(@response.body)
|
441
|
+
assert_equal value.to_s, response['default_value']
|
442
|
+
assert_equal 'regexp', response['validator_type']
|
443
|
+
assert_equal '[0-9]', response['validator_rule']
|
444
|
+
end
|
445
|
+
|
446
|
+
test_attributes pid: 'bf620cef-c7ab-4a32-9050-bd06040dc8d1'
|
447
|
+
test 'should validate matcher required check' do
|
448
|
+
value = RFauxFactory.gen_alpha
|
449
|
+
lookup_key = FactoryBot.create(:puppetclass_lookup_key, puppetclass: puppetclass)
|
450
|
+
FactoryBot.create(:lookup_value, lookup_key: lookup_key, value: value, match: 'domain=example.com')
|
451
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { override: true, required: true } }
|
452
|
+
get :show, params: { id: lookup_key.id }
|
453
|
+
assert(JSON.parse(@response.body)['required'])
|
454
|
+
assert_equal JSON.parse(@response.body)['override_values'][0]['value'], value
|
455
|
+
end
|
456
|
+
|
457
|
+
test_attributes pid: '77b6e90d-e38a-4973-98e3-c698eae5c534'
|
458
|
+
test 'should validate matcher with default type' do
|
459
|
+
lookup_key = FactoryBot.create(:puppetclass_lookup_key, :boolean, puppetclass: puppetclass)
|
460
|
+
FactoryBot.create(:lookup_value, lookup_key: lookup_key, value: false, match: 'domain=example.com')
|
461
|
+
get :show, params: { id: lookup_key.id }
|
462
|
+
assert_equal('domain=example.com', JSON.parse(@response.body)['override_values'][0]['match'])
|
463
|
+
assert_not(JSON.parse(@response.body)['override_values'][0]['value'])
|
464
|
+
end
|
465
|
+
|
466
|
+
test_attributes pid: '05c1a0bb-ba27-4842-bb6a-8420114cffe7'
|
467
|
+
test 'should validate matcher value with list' do
|
468
|
+
lookup_key = FactoryBot.create(:puppetclass_lookup_key, puppetclass: puppetclass)
|
469
|
+
FactoryBot.create(:lookup_value, lookup_key: lookup_key, value: 30, match: 'domain=example.com')
|
470
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { override: true,
|
471
|
+
default_value: 'example',
|
472
|
+
validator_type: 'list',
|
473
|
+
validator_rule: 'test, example, 30' } }
|
474
|
+
assert_equal('example', JSON.parse(@response.body)['default_value'])
|
475
|
+
end
|
476
|
+
|
477
|
+
test_attributes pid: '74164406-885b-4f5b-8ea0-06738314310f'
|
478
|
+
test 'should validate matcher value with regexp' do
|
479
|
+
value = RFauxFactory.gen_numeric_string
|
480
|
+
lookup_key = FactoryBot.create(:puppetclass_lookup_key, puppetclass: puppetclass)
|
481
|
+
FactoryBot.create(:lookup_value, lookup_key: lookup_key, value: RFauxFactory.gen_numeric_string, match: 'domain=test.com')
|
482
|
+
put :update, params: { id: lookup_key.id, smart_class_parameter: { override: true,
|
483
|
+
default_value: value,
|
484
|
+
validator_type: 'regexp',
|
485
|
+
validator_rule: '[0-9]' } }
|
486
|
+
assert_equal JSON.parse(@response.body)['default_value'], value
|
487
|
+
end
|
488
|
+
|
489
|
+
test 'should return error if smart class parameter if it does not belong to specified puppetclass' do
|
490
|
+
get :show, params: { id: lookup_key.id, puppetclass_id: FactoryBot.create(:puppetclass).id }
|
491
|
+
assert_response 404
|
492
|
+
# show_response = ActiveSupport::JSON.decode(@response.body)
|
493
|
+
# assert !show_response.empty?
|
494
|
+
end
|
495
|
+
|
496
|
+
test 'should get smart parameters with non admin user' do
|
497
|
+
setup_user 'view', 'external_parameters'
|
498
|
+
get :show, params: { id: lookup_key.id }, session: set_session_user(:one)
|
499
|
+
assert_response :success
|
500
|
+
end
|
501
|
+
|
502
|
+
context 'hidden' do
|
503
|
+
let(:lookup_key) { FactoryBot.create(:puppetclass_lookup_key, hidden_value: true, default_value: 'hidden', puppetclass: puppetclass) }
|
504
|
+
|
505
|
+
test 'should show a smart class parameter as hidden unless show_hidden is true' do
|
506
|
+
get :show, params: { id: lookup_key.id, puppetclass_id: puppetclass.id }
|
507
|
+
show_response = ActiveSupport::JSON.decode(@response.body)
|
508
|
+
assert_equal lookup_key.hidden_value, show_response['default_value']
|
509
|
+
end
|
510
|
+
|
511
|
+
test 'should show a smart class parameter unhidden when show_hidden is true' do
|
512
|
+
setup_user 'view', 'puppetclasses'
|
513
|
+
setup_user 'view', 'external_parameters'
|
514
|
+
setup_user 'edit', 'external_parameters'
|
515
|
+
get :show, params: { id: lookup_key.id, puppetclass_id: puppetclass.id, show_hidden: 'true' }, session: set_session_user(:one)
|
516
|
+
show_response = ActiveSupport::JSON.decode(@response.body)
|
517
|
+
assert_equal lookup_key.default_value, show_response['default_value']
|
518
|
+
end
|
519
|
+
|
520
|
+
test 'should show a smart class parameter parameter as hidden when show_hidden is true if user is not authorized' do
|
521
|
+
setup_user 'view', 'puppetclasses'
|
522
|
+
setup_user 'view', 'external_parameters'
|
523
|
+
get :show, params: { id: lookup_key.id, puppetclass_id: puppetclass.id, show_hidden: 'true' }, session: set_session_user(:one)
|
524
|
+
show_response = ActiveSupport::JSON.decode(@response.body)
|
525
|
+
assert_equal lookup_key.hidden_value, show_response['default_value']
|
526
|
+
end
|
527
|
+
|
528
|
+
test "should show a smart class parameter's overrides unhidden when show_hidden is true" do
|
529
|
+
lookup_value = FactoryBot.create(:lookup_value, lookup_key: lookup_key, value: 'abc', match: 'os=fake')
|
530
|
+
setup_user 'view', 'puppetclasses'
|
531
|
+
setup_user 'view', 'external_parameters'
|
532
|
+
setup_user 'edit', 'external_parameters'
|
533
|
+
get :show, params: { id: lookup_key.id, puppetclass_id: puppetclass.id, show_hidden: 'true' }, session: set_session_user(:one)
|
534
|
+
show_response = ActiveSupport::JSON.decode(@response.body)
|
535
|
+
assert_equal lookup_value.value, show_response['override_values'][0]['value']
|
536
|
+
end
|
537
|
+
|
538
|
+
test "should show a smart class parameter's overrides hidden when show_hidden is false" do
|
539
|
+
lookup_value = FactoryBot.create(:lookup_value, lookup_key: lookup_key, value: 'abc', match: 'os=fake')
|
540
|
+
setup_user 'view', 'puppetclasses'
|
541
|
+
setup_user 'view', 'external_parameters'
|
542
|
+
setup_user 'edit', 'external_parameters'
|
543
|
+
get :show, params: { id: lookup_key.id, puppetclass_id: puppetclass.id, show_hidden: 'false' }, session: set_session_user(:one)
|
544
|
+
show_response = ActiveSupport::JSON.decode(@response.body)
|
545
|
+
assert_equal lookup_value.hidden_value, show_response['override_values'][0]['value']
|
546
|
+
end
|
547
|
+
end
|
548
|
+
|
549
|
+
private
|
550
|
+
|
551
|
+
def assert_error_message(message)
|
552
|
+
assert_includes JSON.parse(response.body)['error']['message'], message
|
553
|
+
end
|
554
|
+
end
|
555
|
+
end
|
556
|
+
end
|
557
|
+
end
|