foreman_puppet 0.0.1
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 +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
|