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,79 @@
|
|
|
1
|
+
require 'test_puppet_helper'
|
|
2
|
+
|
|
3
|
+
module ForemanPuppet
|
|
4
|
+
module Api
|
|
5
|
+
module V2
|
|
6
|
+
class HostgroupsControllerTest < ActionController::TestCase
|
|
7
|
+
tests ::Api::V2::HostgroupsController
|
|
8
|
+
|
|
9
|
+
let(:hostgroup) { FactoryBot.create(:hostgroup, :with_puppet_enc, :with_puppetclass, :with_config_group) }
|
|
10
|
+
let(:non_puppet) { FactoryBot.create(:hostgroup, ptable: templates(:autopart)) }
|
|
11
|
+
let(:inherited) { FactoryBot.create(:hostgroup, :with_puppet_enc, parent: non_puppet) }
|
|
12
|
+
|
|
13
|
+
describe '#show' do
|
|
14
|
+
test 'includes puppetclasses under puppet node' do
|
|
15
|
+
get :show, params: { id: hostgroup.to_param }
|
|
16
|
+
assert_response :success
|
|
17
|
+
json_response = ActiveSupport::JSON.decode(response.body)
|
|
18
|
+
assert json_response['puppet']['puppetclasses'].is_a? Array
|
|
19
|
+
response_pg_ids = json_response['puppet']['puppetclasses'].map { |pg| pg['id'] }
|
|
20
|
+
assert_equal hostgroup.puppet.puppetclasses.pluck(:id), response_pg_ids
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
test 'include config_groups under puppet node' do
|
|
24
|
+
get :show, params: { id: hostgroup.to_param }
|
|
25
|
+
assert_response :success
|
|
26
|
+
json_response = ActiveSupport::JSON.decode(response.body)
|
|
27
|
+
assert json_response['puppet']['config_groups'].is_a? Array
|
|
28
|
+
response_cg_ids = json_response['puppet']['config_groups'].map { |cg| cg['id'] }
|
|
29
|
+
assert_equal hostgroup.puppet.config_groups.pluck(:id), response_cg_ids
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
test 'include all_puppet clases for individual record under puppet node' do
|
|
33
|
+
get :show, params: { id: hostgroup.id }
|
|
34
|
+
assert_response :success
|
|
35
|
+
show_response = ActiveSupport::JSON.decode(response.body)
|
|
36
|
+
assert_not show_response.empty?
|
|
37
|
+
assert_not_equal 0, show_response['puppet']['all_puppetclasses'].length
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
test 'includes puppetclasses for backward compatibility' do
|
|
41
|
+
get :show, params: { id: hostgroup.to_param }
|
|
42
|
+
assert_response :success
|
|
43
|
+
json_response = ActiveSupport::JSON.decode(response.body)
|
|
44
|
+
assert json_response['puppetclasses'].is_a? Array
|
|
45
|
+
response_pg_ids = json_response['puppetclasses'].map { |pg| pg['id'] }
|
|
46
|
+
assert_equal hostgroup.puppet.puppetclasses.pluck(:id), response_pg_ids
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
test 'include config_groups for backward compatibility' do
|
|
50
|
+
get :show, params: { id: hostgroup.to_param }
|
|
51
|
+
assert_response :success
|
|
52
|
+
json_response = ActiveSupport::JSON.decode(response.body)
|
|
53
|
+
assert json_response['config_groups'].is_a? Array
|
|
54
|
+
response_cg_ids = json_response['config_groups'].map { |cg| cg['id'] }
|
|
55
|
+
assert_equal hostgroup.puppet.config_groups.pluck(:id), response_cg_ids
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
test 'include all_puppet clases for individual record' do
|
|
59
|
+
get :show, params: { id: hostgroup.id }
|
|
60
|
+
assert_response :success
|
|
61
|
+
show_response = ActiveSupport::JSON.decode(response.body)
|
|
62
|
+
assert_not show_response.empty?
|
|
63
|
+
assert_not_equal 0, show_response['all_puppetclasses'].length
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
test 'should show inherited parameters' do
|
|
67
|
+
get :show, params: { id: inherited.to_param }
|
|
68
|
+
assert_response :success
|
|
69
|
+
show_response = ActiveSupport::JSON.decode(@response.body)
|
|
70
|
+
assert_equal inherited.puppet.environment_id, show_response['environment_id']
|
|
71
|
+
assert_nil show_response['inherited_environment_id']
|
|
72
|
+
assert_nil show_response['ptable_id']
|
|
73
|
+
assert_equal templates(:autopart).id, show_response['inherited_ptable_id']
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
require 'test_puppet_helper'
|
|
2
|
+
|
|
3
|
+
module ForemanPuppet
|
|
4
|
+
module Api
|
|
5
|
+
module V2
|
|
6
|
+
class HostsControllerTest < ActionController::TestCase
|
|
7
|
+
tests ::Api::V2::HostsController
|
|
8
|
+
|
|
9
|
+
let(:host) { FactoryBot.create(:host, :with_puppet_enc) }
|
|
10
|
+
let(:environment) do
|
|
11
|
+
FactoryBot.create(:environment, :with_puppetclass, organizations: [host.organization], locations: [host.location])
|
|
12
|
+
end
|
|
13
|
+
let(:puppet_proxy) { FactoryBot.create(:puppet_smart_proxy) }
|
|
14
|
+
|
|
15
|
+
describe '#show' do
|
|
16
|
+
test 'includes config_groups under puppet node' do
|
|
17
|
+
get :show, params: { id: host.to_param }
|
|
18
|
+
assert_response :success
|
|
19
|
+
json_response = ActiveSupport::JSON.decode(response.body)
|
|
20
|
+
assert json_response['puppet']['config_groups'].is_a? Array
|
|
21
|
+
response_cg_ids = json_response['puppet']['config_groups'].map { |cg| cg['id'] }
|
|
22
|
+
assert_equal host.puppet.config_groups.pluck(:id), response_cg_ids
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
test 'includes puppetclasses under puppet node' do
|
|
26
|
+
get :show, params: { id: host.to_param }
|
|
27
|
+
assert_response :success
|
|
28
|
+
json_response = ActiveSupport::JSON.decode(response.body)
|
|
29
|
+
assert json_response['puppet']['puppetclasses'].is_a? Array
|
|
30
|
+
response_pg_ids = json_response['puppet']['puppetclasses'].map { |pg| pg['id'] }
|
|
31
|
+
assert_equal host.puppet.puppetclasses.pluck(:id), response_pg_ids
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
test 'includes config_groups for backward compatibility' do
|
|
35
|
+
get :show, params: { id: host.to_param }
|
|
36
|
+
assert_response :success
|
|
37
|
+
json_response = ActiveSupport::JSON.decode(response.body)
|
|
38
|
+
assert json_response['config_groups'].is_a? Array
|
|
39
|
+
response_cg_ids = json_response['config_groups'].map { |cg| cg['id'] }
|
|
40
|
+
assert_equal host.puppet.config_groups.pluck(:id), response_cg_ids
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
test 'includes puppetclasses for backward compatibility' do
|
|
44
|
+
get :show, params: { id: host.to_param }
|
|
45
|
+
assert_response :success
|
|
46
|
+
json_response = ActiveSupport::JSON.decode(response.body)
|
|
47
|
+
assert json_response['puppetclasses'].is_a? Array
|
|
48
|
+
response_pg_ids = json_response['puppetclasses'].map { |pg| pg['id'] }
|
|
49
|
+
assert_equal host.puppet.puppetclasses.pluck(:id), response_pg_ids
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
test 'should show host puppet_proxy_name' do
|
|
53
|
+
# cover issue #16525
|
|
54
|
+
host.update(puppet_proxy: puppet_proxy)
|
|
55
|
+
get :show, params: { id: host.to_param }
|
|
56
|
+
assert_response :success
|
|
57
|
+
json = ActiveSupport::JSON.decode(response.body)
|
|
58
|
+
assert json.key?('puppet_proxy_name')
|
|
59
|
+
assert_equal puppet_proxy.name, json['puppet_proxy_name']
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
describe '#create' do
|
|
64
|
+
test 'should create with puppet proxy' do
|
|
65
|
+
host_params = FactoryBot.attributes_for(:host, managed: false).merge(environment_id: environment.id, puppet_proxy_id: puppet_proxy.to_param)
|
|
66
|
+
post :create, params: { host: host_params }
|
|
67
|
+
assert_response :created
|
|
68
|
+
assert_equal puppet_proxy.name, JSON.parse(@response.body)['puppet_proxy']['name'], "Can't create host with puppet proxy #{puppet_proxy}"
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
describe '#update' do
|
|
73
|
+
test 'should update with puppet proxy' do
|
|
74
|
+
put :update, params: { id: host.id, host: host.attributes.merge(puppet_proxy_id: puppet_proxy.id) }
|
|
75
|
+
assert_response :success
|
|
76
|
+
assert_equal puppet_proxy['name'], JSON.parse(@response.body)['puppet_proxy']['name'], "Can't update host with puppet proxy #{puppet_proxy}"
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
test 'should update with puppet class' do
|
|
80
|
+
puppetclass = environment.puppetclasses.first
|
|
81
|
+
put :update, params: { id: host.id, host: { environment_id: environment.id, puppetclass_ids: [puppetclass.id] } }
|
|
82
|
+
assert_response :success
|
|
83
|
+
response = JSON.parse(@response.body)
|
|
84
|
+
assert_equal environment.id, response['environment_id'], "Can't update host with environment #{environment}"
|
|
85
|
+
assert_equal puppetclass.id, response['puppetclasses'][0]['id'], "Can't update host with puppetclass #{puppetclass}"
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
describe '#enc' do
|
|
90
|
+
test 'should get ENC values of host' do
|
|
91
|
+
get :enc, params: { id: host.to_param }
|
|
92
|
+
assert_response :success
|
|
93
|
+
response = ActiveSupport::JSON.decode(@response.body)
|
|
94
|
+
puppet_class = response['data']['classes'].keys
|
|
95
|
+
assert_equal host.puppetclasses.map(&:name), puppet_class
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'test_puppet_helper'
|
|
2
|
+
|
|
3
|
+
module ForemanPuppet
|
|
4
|
+
module Api
|
|
5
|
+
module V2
|
|
6
|
+
class DummyLookupController < ForemanPuppet::Api::V2::LookupsCommonController
|
|
7
|
+
attr_accessor :params
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
class LookupsCommonControllerTest < ActiveSupport::TestCase
|
|
11
|
+
setup do
|
|
12
|
+
@dummy = DummyLookupController.new
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
test 'should cast default_value from smart class parameter' do
|
|
16
|
+
@dummy.params = { smart_class_parameter: { default_value: %w[a b] } }
|
|
17
|
+
@dummy.cast_value(:smart_class_parameter, :default_value)
|
|
18
|
+
assert_equal %w[a b].to_s, @dummy.params[:smart_class_parameter][:default_value]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
test 'should cast value from override value' do
|
|
22
|
+
@dummy.params = { override_value: { value: 123 } }
|
|
23
|
+
@dummy.cast_value
|
|
24
|
+
assert_equal '123', @dummy.params[:override_value][:value]
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
require 'test_puppet_helper'
|
|
2
|
+
|
|
3
|
+
module ForemanPuppet
|
|
4
|
+
module Api
|
|
5
|
+
module V2
|
|
6
|
+
class OverrideValuesControllerTest < ActionController::TestCase
|
|
7
|
+
setup do
|
|
8
|
+
@routes = ForemanPuppet::Engine.routes
|
|
9
|
+
lookup_key
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
let(:lookup_key) { FactoryBot.create(:puppetclass_lookup_key, path: %w[hostgroup comment os].join("\n")) }
|
|
13
|
+
let(:lookup_value) { FactoryBot.create(:lookup_value, lookup_key: lookup_key, match: 'os=default') }
|
|
14
|
+
|
|
15
|
+
test 'should get override values for specific smart class parameter' do
|
|
16
|
+
lookup_value
|
|
17
|
+
FactoryBot.create(:lookup_value, lookup_key: lookup_key, match: 'comment=override')
|
|
18
|
+
get :index, params: { smart_class_parameter_id: lookup_key.to_param }
|
|
19
|
+
assert_response :success
|
|
20
|
+
override_values = ActiveSupport::JSON.decode(@response.body)
|
|
21
|
+
assert_not_empty override_values
|
|
22
|
+
assert_equal 2, override_values['results'].length
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
test 'should create override values for specific smart class parameter' do
|
|
26
|
+
assert_difference('LookupValue.count') do
|
|
27
|
+
post :create, params: { smart_class_parameter_id: lookup_key.to_param, override_value: { match: 'os=abc', value: 'liftoff' } }
|
|
28
|
+
end
|
|
29
|
+
assert_response :created
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
test 'should show specific override values for specific smart class parameter' do
|
|
33
|
+
get :show, params: { smart_class_parameter_id: lookup_key.to_param, id: lookup_value.id }
|
|
34
|
+
results = ActiveSupport::JSON.decode(@response.body)
|
|
35
|
+
assert_not_empty results
|
|
36
|
+
assert_equal 'os=default', results['match']
|
|
37
|
+
assert_response :success
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
test 'should show specific override values using match' do
|
|
41
|
+
get :show, params: { smart_class_parameter_id: lookup_key.to_param, id: lookup_value.match }
|
|
42
|
+
results = ActiveSupport::JSON.decode(@response.body)
|
|
43
|
+
assert_not_empty results
|
|
44
|
+
assert_equal 'os=default', results['match']
|
|
45
|
+
assert_response :success
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
test 'should update specific override value' do
|
|
49
|
+
put :update, params: { smart_class_parameter_id: lookup_key.to_param, id: lookup_value.id, override_value: { match: 'os=abc' } }
|
|
50
|
+
assert_response :success
|
|
51
|
+
end
|
|
52
|
+
test 'should update specific override value using match' do
|
|
53
|
+
put :update, params: { smart_class_parameter_id: lookup_key.to_param, id: lookup_value.match, override_value: { match: 'os=abc' } }
|
|
54
|
+
assert_response :success
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
test 'should destroy specific override value' do
|
|
58
|
+
lookup_value
|
|
59
|
+
assert_difference('LookupValue.count', -1) do
|
|
60
|
+
delete :destroy, params: { smart_class_parameter_id: lookup_key.to_param, id: lookup_value.id }
|
|
61
|
+
end
|
|
62
|
+
assert_response :success
|
|
63
|
+
end
|
|
64
|
+
test 'should destroy specific override value using match' do
|
|
65
|
+
lookup_value
|
|
66
|
+
assert_difference('LookupValue.count', -1) do
|
|
67
|
+
delete :destroy, params: { smart_class_parameter_id: lookup_key.to_param, id: lookup_value.match }
|
|
68
|
+
end
|
|
69
|
+
assert_response :success
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
[{ value: 'xyz=10' }, { match: 'os=string' }].each do |override_value|
|
|
73
|
+
test "should not create override value without #{override_value.keys.first}" do
|
|
74
|
+
assert_difference('LookupValue.count', 0) do
|
|
75
|
+
post :create, params: { smart_class_parameter_id: lookup_key.id, override_value: override_value }
|
|
76
|
+
end
|
|
77
|
+
response = ActiveSupport::JSON.decode(@response.body)
|
|
78
|
+
param_not_posted = (override_value.keys.first.to_s == 'match') ? 'Value' : 'Match' # The opposite of override_value is missing
|
|
79
|
+
assert_match(/Validation failed: #{param_not_posted} can't be blank/, response['error']['message'])
|
|
80
|
+
assert_response :error
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
test_attributes pid: '2b205e9c-e50c-48cd-8ebb-3b6bea09be77'
|
|
85
|
+
test 'should create override value without when omit is true' do
|
|
86
|
+
value = RFauxFactory.gen_alpha
|
|
87
|
+
assert_difference('LookupValue.count', 1) do
|
|
88
|
+
post :create, params: { smart_class_parameter_id: lookup_key.id, override_value: { match: 'os=string', value: value, omit: true } }
|
|
89
|
+
end
|
|
90
|
+
assert_response :success
|
|
91
|
+
lookup_key.reload
|
|
92
|
+
assert_equal('os=string', lookup_key.override_values.first.match)
|
|
93
|
+
assert_equal lookup_key.override_values.first.value, value
|
|
94
|
+
assert(lookup_key.override_values.first.omit)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
test 'should not create override value without when omit is false' do
|
|
98
|
+
assert_difference('LookupValue.count', 0) do
|
|
99
|
+
post :create, params: { smart_class_parameter_id: lookup_key.id, override_value: { match: 'os=string', omit: false } }
|
|
100
|
+
end
|
|
101
|
+
assert_response :error
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
test_attributes pid: 'bef0e457-16be-4ca6-bc56-fa32dff55a01'
|
|
105
|
+
test 'should not create invalid matcher for non existing attribute' do
|
|
106
|
+
assert_difference('LookupValue.count', 0) do
|
|
107
|
+
post :create, params: { smart_class_parameter_id: lookup_key.id, override_value: { match: 'hostgroup=nonexistingHG', value: RFauxFactory.gen_alpha } }
|
|
108
|
+
end
|
|
109
|
+
assert_includes JSON.parse(response.body)['error']['message'], 'Validation failed: Match hostgroup=nonexistingHG does not match an existing host group'
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
test_attributes pid: '49de2c9b-40f1-4837-8ebb-dfa40d8fcb89'
|
|
113
|
+
test 'should not create matcher with blank matcher value' do
|
|
114
|
+
lookup_key.update(required: true)
|
|
115
|
+
assert_difference('LookupValue.count', 0) do
|
|
116
|
+
post :create, params: { smart_class_parameter_id: lookup_key.id, override_value: { match: 'os=string', value: '' } }
|
|
117
|
+
end
|
|
118
|
+
assert_includes JSON.parse(response.body)['error']['message'], "Validation failed: Value can't be blank"
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
test_attributes pid: '21668ef4-1a7a-41cb-98e3-dc4c664db351'
|
|
122
|
+
test 'should not create matcher with value that does not matches default type' do
|
|
123
|
+
lookup_key = FactoryBot.create(:puppetclass_lookup_key, :boolean)
|
|
124
|
+
assert_difference('LookupValue.count', 0) do
|
|
125
|
+
post :create, params: { smart_class_parameter_id: lookup_key.id, override_value: { match: 'os=string', value: RFauxFactory.gen_alpha } }
|
|
126
|
+
end
|
|
127
|
+
assert_includes JSON.parse(response.body)['error']['message'], 'Validation failed: Value is invalid'
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
test_attributes pid: '19d319e6-9b12-485e-a680-c84d18742c40'
|
|
131
|
+
test 'should create matcher for attribute in parameter' do
|
|
132
|
+
value = RFauxFactory.gen_alpha
|
|
133
|
+
lookup_key = FactoryBot.create(:puppetclass_lookup_key, override_value_order: 'is_virtual')
|
|
134
|
+
assert_difference('LookupValue.count') do
|
|
135
|
+
post :create, params: { smart_class_parameter_id: lookup_key.id, override_value: { match: 'is_virtual=true', value: value } }
|
|
136
|
+
end
|
|
137
|
+
lookup_key.reload
|
|
138
|
+
assert_equal('is_virtual=true', lookup_key.override_values.first.match)
|
|
139
|
+
assert_equal lookup_key.override_values.first.value, value
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
context 'hidden' do
|
|
143
|
+
let(:lookup_key) { FactoryBot.create(:puppetclass_lookup_key, hidden_value: true, default_value: 'hidden') }
|
|
144
|
+
|
|
145
|
+
test 'should show a override value as hidden unless show_hidden is true' do
|
|
146
|
+
get :show, params: { smart_class_parameter_id: lookup_key.to_param, id: lookup_value.to_param }
|
|
147
|
+
show_response = ActiveSupport::JSON.decode(@response.body)
|
|
148
|
+
assert_equal lookup_value.hidden_value, show_response['value']
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
test 'should show override value unhidden when show_hidden is true' do
|
|
152
|
+
get :show, params: { smart_class_parameter_id: lookup_key.to_param, id: lookup_value.to_param, show_hidden: 'true' }
|
|
153
|
+
show_response = ActiveSupport::JSON.decode(@response.body)
|
|
154
|
+
assert_equal lookup_value.value, show_response['value']
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
test 'should show a override value parameter as hidden when user in unauthorized for smart class variable' do
|
|
158
|
+
setup_user 'view', 'puppetclasses'
|
|
159
|
+
setup_user 'view', 'external_parameters'
|
|
160
|
+
setup_user 'edit', 'external_variables'
|
|
161
|
+
get :show, params: { smart_class_parameter_id: lookup_key.to_param, id: lookup_value.to_param, show_hidden: 'true' }
|
|
162
|
+
show_response = ActiveSupport::JSON.decode(@response.body)
|
|
163
|
+
assert_equal lookup_value.hidden_value, show_response['value']
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
end
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
require 'test_puppet_helper'
|
|
2
|
+
|
|
3
|
+
module ForemanPuppet
|
|
4
|
+
module Api
|
|
5
|
+
module V2
|
|
6
|
+
class PuppetclassesControllerTest < ActionController::TestCase
|
|
7
|
+
let(:valid_attrs) { { name: 'PuppetClassValidName' } }
|
|
8
|
+
|
|
9
|
+
let(:default_organization) { Organization.first }
|
|
10
|
+
let(:default_location) { Location.first }
|
|
11
|
+
let(:environment) do
|
|
12
|
+
FactoryBot.create(:environment, locations: [default_location], organizations: [default_organization])
|
|
13
|
+
end
|
|
14
|
+
let(:puppetclass) { FactoryBot.create(:puppetclass, environments: [environment]) }
|
|
15
|
+
let(:eager_load) { puppetclass }
|
|
16
|
+
|
|
17
|
+
setup do
|
|
18
|
+
@routes = ForemanPuppet::Engine.routes
|
|
19
|
+
eager_load
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
test 'should get index' do
|
|
23
|
+
get :index
|
|
24
|
+
assert_response :success
|
|
25
|
+
assert_not json_response.empty?
|
|
26
|
+
assert json_response['results'].is_a?(Hash)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
test 'should get index with style=list' do
|
|
30
|
+
get :index, params: { style: 'list' }
|
|
31
|
+
assert_response :success
|
|
32
|
+
assert_not json_response.empty?
|
|
33
|
+
assert json_response['results'].is_a?(Array)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
context 'with taxonomy given' do
|
|
37
|
+
test 'index should return puppetclasses only in Organization' do
|
|
38
|
+
get :index, params: { organization_id: default_organization.id }
|
|
39
|
+
assert_include json_response['results'].map { |_, v| v[0]['id'] }, puppetclass.id
|
|
40
|
+
assert_response :success
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
test 'index should return puppetclasses only in Organization' do
|
|
44
|
+
get :index, params: { location_id: default_location.id }
|
|
45
|
+
assert_include json_response['results'].map { |_, v| v[0]['id'] }, puppetclass.id
|
|
46
|
+
assert_response :success
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
test 'index should return puppetclasses only in Organization' do
|
|
50
|
+
get :index, params: { location_id: default_location.id, organization_id: default_organization.id }
|
|
51
|
+
assert_include json_response['results'].map { |_, v| v[0]['id'] }, puppetclass.id
|
|
52
|
+
assert_response :success
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
test 'should create puppetclass' do
|
|
57
|
+
assert_difference(-> { ForemanPuppet::Puppetclass.count }) do
|
|
58
|
+
post :create, params: { puppetclass: valid_attrs }
|
|
59
|
+
end
|
|
60
|
+
assert_response :created
|
|
61
|
+
assert Puppetclass.exists?(name: valid_attrs[:name])
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
test 'should update puppetclass' do
|
|
65
|
+
put :update, params: { id: puppetclass.to_param, puppetclass: valid_attrs }
|
|
66
|
+
assert_response :success
|
|
67
|
+
assert_equal valid_attrs[:name], puppetclass.reload.name
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
test 'should destroy puppetclasss' do
|
|
71
|
+
assert_difference(-> { ForemanPuppet::Puppetclass.count }, -1) do
|
|
72
|
+
delete :destroy, params: { id: puppetclass.to_param }
|
|
73
|
+
end
|
|
74
|
+
assert_response :success
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
test 'should get puppetclasses for given host only' do
|
|
78
|
+
host1 = FactoryBot.create(:host, :with_puppet_enc, :with_puppetclass)
|
|
79
|
+
FactoryBot.create(:host, :with_puppet_enc, :with_puppetclass)
|
|
80
|
+
get :index, params: { host_id: host1.to_param }
|
|
81
|
+
assert_response :success
|
|
82
|
+
assert_equal host1.puppet.puppetclasses.map(&:name).sort, json_response['results'].keys.sort
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
test 'should not get puppetclasses for nonexistent host' do
|
|
86
|
+
get :index, params: { 'search' => 'host = imaginaryhost.nodomain.what' }
|
|
87
|
+
assert_response :success
|
|
88
|
+
assert_empty json_response['results']
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
test 'should get puppetclasses for hostgroup' do
|
|
92
|
+
hostgroup = FactoryBot.create(:hostgroup, :with_puppet_enc, :with_puppetclass)
|
|
93
|
+
get :index, params: { hostgroup_id: hostgroup.to_param }
|
|
94
|
+
assert_response :success
|
|
95
|
+
assert_not json_response['results'].empty?
|
|
96
|
+
assert_equal hostgroup.puppet.puppetclasses.map(&:name).sort, json_response['results'].keys.sort
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
test 'should get puppetclasses for environment' do
|
|
100
|
+
environment = FactoryBot.create(:environment, :with_puppetclass)
|
|
101
|
+
get :index, params: { environment_id: environment.to_param }
|
|
102
|
+
assert_response :success
|
|
103
|
+
assert_not json_response['results'].empty?
|
|
104
|
+
assert_equal environment.puppetclasses.map(&:name).sort, json_response['results'].keys.sort
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
test 'should show error if optional nested environment does not exist' do
|
|
108
|
+
get :index, params: { environment_id: 'nonexistent' }
|
|
109
|
+
assert_response 404
|
|
110
|
+
assert_equal "Environment not found by id 'nonexistent'", json_response['message']
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
test 'should show puppetclass for host' do
|
|
114
|
+
host = FactoryBot.create(:host, :with_puppet_enc, :with_puppetclass)
|
|
115
|
+
get :show, params: { host_id: host.to_param, id: host.puppet.puppetclasses.first.id }
|
|
116
|
+
assert_response :success
|
|
117
|
+
assert_not_empty json_response
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
test 'should show puppetclass for hostgroup' do
|
|
121
|
+
hostgroup = FactoryBot.create(:hostgroup, :with_puppet_enc, :with_puppetclass)
|
|
122
|
+
get :show, params: { hostgroup_id: hostgroup.to_param, id: hostgroup.puppet.puppetclasses.first.id }
|
|
123
|
+
assert_response :success
|
|
124
|
+
assert_not_empty json_response
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
test 'should show puppetclass for environment' do
|
|
128
|
+
environment = FactoryBot.create(:environment, :with_puppetclass)
|
|
129
|
+
get :show, params: { environment_id: environment, id: environment.puppetclasses.first.id }
|
|
130
|
+
assert_response :success
|
|
131
|
+
assert_not_empty json_response
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
test 'should not remove puppetclass params' do
|
|
135
|
+
FactoryBot.create(:puppetclass_lookup_key, puppetclass: puppetclass)
|
|
136
|
+
assert_equal 1, puppetclass.class_params.length
|
|
137
|
+
put :update, params: { id: puppetclass.id, smart_class_parameter_ids: [] }
|
|
138
|
+
puppetclass.reload
|
|
139
|
+
assert_equal 1, puppetclass.class_params.length
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
end
|