katello 4.7.4 → 4.8.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of katello might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/controllers/katello/api/registry/registry_proxies_controller.rb +6 -4
- data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +15 -12
- data/app/controllers/katello/api/v2/capsule_content_controller.rb +0 -4
- data/app/controllers/katello/api/v2/content_export_incrementals_controller.rb +22 -81
- data/app/controllers/katello/api/v2/content_exports_controller.rb +11 -80
- data/app/controllers/katello/api/v2/content_imports_controller.rb +1 -0
- data/app/controllers/katello/api/v2/exports_controller.rb +130 -0
- data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +7 -8
- data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +8 -4
- data/app/controllers/katello/api/v2/organizations_controller.rb +3 -0
- data/app/controllers/katello/api/v2/package_groups_controller.rb +0 -52
- data/app/controllers/katello/concerns/api/v2/bulk_hosts_extensions.rb +4 -6
- data/app/controllers/katello/concerns/api/v2/registration_controller_extensions.rb +1 -2
- data/app/controllers/katello/concerns/authorization/api/v2/content_views_controller.rb +4 -1
- data/app/controllers/katello/concerns/content_facet_hosts_controller_extensions.rb +24 -0
- data/app/controllers/katello/concerns/hosts_controller_extensions.rb +3 -3
- data/app/helpers/katello/hosts_and_hostgroups_helper.rb +55 -24
- data/app/helpers/katello/katello_urls_helper.rb +0 -15
- data/app/helpers/katello/sync_management_helper.rb +0 -4
- data/app/lib/actions/candlepin/owner/destroy_imports.rb +1 -1
- data/app/lib/actions/katello/capsule_content/sync.rb +0 -4
- data/app/lib/actions/katello/capsule_content/sync_capsule.rb +1 -2
- data/app/lib/actions/katello/content_view/publish.rb +6 -2
- data/app/lib/actions/katello/content_view/remove.rb +8 -2
- data/app/lib/actions/katello/content_view_version/destroy.rb +1 -1
- data/app/lib/actions/katello/environment/destroy.rb +8 -2
- data/app/lib/actions/katello/host/reassign.rb +4 -2
- data/app/lib/actions/katello/orphan_cleanup/remove_orphans.rb +0 -1
- data/app/lib/actions/katello/product/destroy.rb +2 -1
- data/app/lib/actions/katello/repository/filtered_index_content.rb +2 -10
- data/app/lib/actions/katello/repository/import_upload.rb +0 -1
- data/app/lib/actions/katello/repository/sync.rb +0 -1
- data/app/lib/actions/katello/repository/update.rb +5 -3
- data/app/lib/actions/katello/repository/upload_files.rb +0 -1
- data/app/lib/actions/pulp3/abstract.rb +0 -6
- data/app/lib/actions/pulp3/content_view/delete_repository_references.rb +1 -2
- data/app/lib/actions/pulp3/content_view_version/create_syncable_export_history.rb +4 -0
- data/app/lib/actions/pulp3/orchestration/content_view_version/export.rb +1 -0
- data/app/lib/actions/pulp3/orchestration/content_view_version/export_repository.rb +7 -2
- data/app/lib/actions/pulp3/orchestration/content_view_version/syncable_export.rb +7 -2
- data/app/lib/actions/pulp3/repository/refresh_distribution.rb +1 -2
- data/app/lib/actions/pulp3/repository/save_distribution_references.rb +2 -2
- data/app/lib/katello/concerns/renderer_extensions.rb +1 -1
- data/app/lib/katello/event_daemon/runner.rb +12 -9
- data/app/lib/katello/resources/candlepin/consumer.rb +6 -6
- data/app/lib/katello/resources/candlepin/owner.rb +1 -1
- data/app/lib/katello/resources/candlepin/upstream_consumer.rb +3 -4
- data/app/lib/katello/resources/candlepin.rb +4 -4
- data/app/lib/katello/util/errata.rb +12 -10
- data/app/lib/katello/util/search.rb +0 -1
- data/app/lib/katello/validators/content_view_environment_org_validator.rb +5 -2
- data/app/lib/katello/validators/content_view_environment_validator.rb +1 -2
- data/app/lib/katello/validators/generated_content_view_validator.rb +16 -0
- data/app/mailers/katello/errata_mailer.rb +4 -2
- data/app/models/katello/alternate_content_source.rb +5 -1
- data/app/models/katello/concerns/content_facet_host_extensions.rb +25 -14
- data/app/models/katello/concerns/host_managed_extensions.rb +17 -8
- data/app/models/katello/concerns/redhat_extensions.rb +16 -6
- data/app/models/katello/concerns/smart_proxy_extensions.rb +0 -12
- data/app/models/katello/concerns/subscription_facet_host_extensions.rb +1 -0
- data/app/models/katello/content_view.rb +22 -5
- data/app/models/katello/content_view_environment.rb +11 -2
- data/app/models/katello/content_view_environment_content_facet.rb +9 -0
- data/app/models/katello/content_view_version.rb +10 -5
- data/app/models/katello/erratum.rb +6 -1
- data/app/models/katello/glue/candlepin/pool.rb +6 -0
- data/app/models/katello/glue/candlepin/product.rb +7 -1
- data/app/models/katello/glue/candlepin/subscription.rb +5 -0
- data/app/models/katello/glue/provider.rb +26 -26
- data/app/models/katello/host/content_facet.rb +106 -18
- data/app/models/katello/host/info_provider.rb +25 -21
- data/app/models/katello/host/subscription_facet.rb +18 -14
- data/app/models/katello/kt_environment.rb +12 -7
- data/app/models/katello/package_group.rb +0 -12
- data/app/models/katello/pool.rb +4 -1
- data/app/models/katello/product.rb +11 -1
- data/app/models/katello/repository.rb +11 -11
- data/app/models/katello/root_repository.rb +5 -4
- data/app/models/katello/task_status.rb +0 -18
- data/app/services/katello/candlepin/consumer.rb +2 -2
- data/app/services/katello/host/package_profile_uploader.rb +1 -1
- data/app/services/katello/product_content_finder.rb +11 -8
- data/app/services/katello/pulp3/content_view_version/export.rb +8 -65
- data/app/services/katello/pulp3/content_view_version/export_validation_error.rb +7 -0
- data/app/services/katello/pulp3/content_view_version/export_validator.rb +105 -0
- data/app/services/katello/pulp3/content_view_version/importable_products.rb +1 -1
- data/app/services/katello/pulp3/content_view_version/syncable_format_export.rb +7 -1
- data/app/services/katello/pulp3/erratum.rb +1 -0
- data/app/services/katello/pulp3/module_stream.rb +26 -11
- data/app/services/katello/pulp3/repository/yum.rb +2 -1
- data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +2 -1
- data/app/services/katello/registration_manager.rb +46 -26
- data/app/services/katello/repository_type.rb +3 -9
- data/app/services/katello/simple_package.rb +22 -0
- data/app/views/foreman/smart_proxies/_content_sync.html.erb +1 -0
- data/app/views/foreman/smart_proxies/_reclaim_space.html.erb +1 -0
- data/app/views/katello/api/v2/content_facet/base.json.rabl +23 -2
- data/app/views/katello/api/v2/content_facet/show.json.rabl +11 -8
- data/app/views/katello/api/v2/content_views/base.json.rabl +1 -1
- data/app/views/katello/api/v2/hosts/base.json.rabl +22 -2
- data/app/views/overrides/activation_keys/_host_environment_select.html.erb +2 -2
- data/config/initializers/monkeys.rb +0 -2
- data/config/routes/api/registry.rb +8 -7
- data/config/routes/api/v2.rb +0 -2
- data/config/routes.rb +3 -0
- data/db/migrate/20200429153103_installed_package_bad_nvrea.rb +1 -1
- data/db/migrate/20220228173251_remove_drpm_from_ignorable_content.rb +7 -3
- data/db/migrate/20220419193414_content_settings_to_dsl_category.rb +1 -1
- data/db/migrate/20220929204746_add_content_view_environment_content_facet.rb +52 -0
- data/db/migrate/20221123212341_remove_pulp_docker_registry_port_setting.rb +5 -0
- data/db/migrate/20230119003859_ensure_repo_username_password_nil_not_blank.rb +1 -1
- data/db/seeds.d/111-upgrade_tasks.rb +2 -1
- data/engines/bastion/app/assets/stylesheets/bastion/bastion.scss +4 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-details.controller.js +2 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-errata-modal.controller.js +0 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +2 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +2 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/apply-errata.controller.js +11 -3
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/details/views/host-collection-hosts-list.html +1 -1
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +8 -4
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +5485 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +5397 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +5658 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +5284 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ka.po +5231 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +5275 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +5389 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +5212 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +5145 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +9 -0
- data/engines/bastion_katello/app/assets/javascripts/bastion_katello/subscriptions/views/content-access-mode-banner.html +2 -2
- data/lib/katello/engine.rb +2 -1
- data/lib/katello/permission_creator.rb +2 -4
- data/lib/katello/permissions/registry_permissions.rb +5 -5
- data/lib/katello/plugin.rb +22 -14
- data/lib/katello/repository_types/README.md +136 -19
- data/lib/katello/repository_types/deb.rb +0 -1
- data/lib/katello/repository_types/docker.rb +0 -1
- data/lib/katello/repository_types/file.rb +0 -1
- data/lib/katello/repository_types/yum.rb +0 -4
- data/lib/katello/tasks/clean_candlepin_orphaned_products.rake +38 -0
- data/lib/katello/tasks/clean_orphaned_facets.rb +20 -0
- data/lib/katello/tasks/reimport.rake +1 -2
- data/lib/katello/tasks/repository.rake +1 -22
- data/lib/katello/tasks/reset.rake +1 -0
- data/lib/katello/tasks/upgrades/4.8/fix_incorrect_providers.rake +29 -0
- data/lib/katello/version.rb +1 -1
- data/lib/katello.rb +0 -5
- data/locale/bn/katello.po +69 -27
- data/locale/cs/katello.po +69 -27
- data/locale/de/katello.po +78 -36
- data/locale/en/katello.po +69 -27
- data/locale/es/katello.po +70 -28
- data/locale/fr/katello.po +73 -31
- data/locale/gu/katello.po +69 -27
- data/locale/hi/katello.po +69 -27
- data/locale/it/katello.po +69 -27
- data/locale/ja/katello.po +73 -31
- data/locale/ka/katello.po +73 -31
- data/locale/katello.pot +335 -262
- data/locale/kn/katello.po +69 -27
- data/locale/ko/katello.po +69 -27
- data/locale/mr/katello.po +69 -27
- data/locale/or/katello.po +69 -27
- data/locale/pa/katello.po +69 -27
- data/locale/pt/katello.po +69 -27
- data/locale/pt_BR/katello.po +70 -28
- data/locale/ru/katello.po +70 -28
- data/locale/ta/katello.po +69 -27
- data/locale/te/katello.po +69 -27
- data/locale/zh_CN/katello.po +73 -31
- data/locale/zh_TW/katello.po +70 -28
- data/webpack/components/Content/ContentPage.js +51 -35
- data/webpack/components/Content/__tests__/ContentPage.test.js +2 -4
- data/webpack/components/Content/__tests__/__snapshots__/ContentPage.test.js.snap +22 -3
- data/webpack/components/Table/EmptyStateMessage.js +14 -11
- data/webpack/components/Table/MainTable.js +36 -15
- data/webpack/components/Table/TableWrapper.js +25 -25
- data/webpack/components/Table/__test__/emptyStateMessage.test.js +51 -0
- data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +5 -4
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +1 -1
- data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/hostCollectionsModal.test.js +1 -17
- data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +18 -9
- data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +1 -2
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +1 -2
- data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +1 -2
- data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +47 -27
- data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js +1 -2
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +2 -21
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/moduleStreamsTab.test.js +1 -28
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/packageInstallModal.test.js +1 -10
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +1 -18
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/repositorySetsTab.test.js +1 -17
- data/webpack/components/extensions/HostDetails/Tabs/__tests__/tracesTab.test.js +1 -15
- data/webpack/global_test_setup.js +1 -1
- data/webpack/scenes/AlternateContentSources/Create/ACSCreateWizard.js +12 -10
- data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCredentials.js +6 -0
- data/webpack/scenes/AlternateContentSources/Create/Steps/ACSSmartProxies.js +1 -0
- data/webpack/scenes/AlternateContentSources/Create/Steps/AcsUrlPaths.js +3 -10
- data/webpack/scenes/AlternateContentSources/Create/Steps/NameACS.js +1 -0
- data/webpack/scenes/AlternateContentSources/Create/__tests__/acsCreate.test.js +3 -3
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditDetails.js +1 -0
- data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditURLPaths.js +12 -4
- data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +7 -4
- data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsTable.test.js +4 -8
- data/webpack/scenes/AlternateContentSources/helpers.js +1 -1
- data/webpack/scenes/Content/Details/ContentRepositories.js +5 -4
- data/webpack/scenes/Content/Details/__tests__/contentDetail.test.js +1 -12
- data/webpack/scenes/Content/Table/ContentTable.js +2 -1
- data/webpack/scenes/Content/__tests__/contentTable.test.js +1 -14
- data/webpack/scenes/ContentViews/Delete/__tests__/contentViewDelete.test.js +1 -25
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +2 -1
- data/webpack/scenes/ContentViews/Details/ComponentContentViews/__tests__/contentViewComponents.test.js +44 -31
- data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +2 -0
- data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositoryTable.js +6 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +2 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +2 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +3 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +3 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +3 -1
- data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +2 -1
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +2 -0
- data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +2 -1
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVDebMatchContentModal.js +1 -1
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVRpmMatchContentModal.js +1 -1
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +35 -33
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +48 -45
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +58 -24
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/ContentViewPackageGroupFilter.test.js +64 -0
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +36 -20
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +40 -23
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvErrataIDFilter.test.js +0 -13
- data/webpack/scenes/ContentViews/Details/Filters/__tests__/cvModuleStreamFilter.test.js +0 -13
- data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +2 -1
- data/webpack/scenes/ContentViews/Details/Histories/__tests__/contentViewHistory.test.js +1 -10
- data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +2 -1
- data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js +1 -10
- data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareConfig.js +21 -9
- data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareTable.js +4 -0
- data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/CVVersionCompare.test.js +1 -32
- data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +3 -1
- data/webpack/scenes/ContentViews/Details/Versions/Delete/__tests__/cvVersionRemove.test.js +1 -15
- data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +1 -1
- data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +1 -2
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +31 -9
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +4 -0
- data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/__tests__/ContentViewVersionDetails.test.js +30 -14
- data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +1 -1
- data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +55 -120
- data/webpack/scenes/ContentViews/components/WizardHeader.js +1 -1
- data/webpack/scenes/ContentViews/expansions/RelatedContentViewComponentsModal.js +1 -1
- data/webpack/scenes/ContentViews/expansions/__tests__/contentViewComponentsModal.test.js +8 -1
- data/webpack/scenes/ModuleStreams/ModuleStreamsPage.js +3 -9
- data/webpack/scenes/ModuleStreams/__tests__/__snapshots__/ModuleStreamPage.test.js.snap +7 -1
- data/webpack/scenes/RedHatRepositories/components/Search.js +22 -16
- data/webpack/scenes/RedHatRepositories/index.scss +20 -1
- data/webpack/scenes/SmartProxy/SmartProxyContentTable.js +12 -1
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnTypeForm.js +1 -1
- data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CustomCdnTypeForm.js +1 -1
- data/webpack/scenes/Subscriptions/SubscriptionsPage.js +21 -19
- data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +34 -1
- data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.js +20 -7
- data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.test.js +0 -1
- data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/__snapshots__/SubscriptionsToolbar.test.js.snap +65 -15
- metadata +50 -116
- data/app/lib/actions/katello/pulp_selector.rb +0 -24
- data/app/lib/actions/katello/repository/correct_checksum.rb +0 -24
- data/app/lib/actions/katello/repository/destroy_package_group.rb +0 -26
- data/app/lib/actions/katello/repository/upload_package_group.rb +0 -24
- data/app/lib/actions/pulp/abstract.rb +0 -37
- data/app/lib/actions/pulp/abstract_async_task.rb +0 -154
- data/app/lib/actions/pulp/abstract_async_task_group.rb +0 -94
- data/app/lib/actions/pulp/consumer/sync_capsule.rb +0 -45
- data/app/lib/actions/pulp/consumer/unassociate_units.rb +0 -20
- data/app/lib/actions/pulp/expect_one_task.rb +0 -11
- data/app/lib/actions/pulp/orchestration/orphan_cleanup/remove_orphans.rb +0 -16
- data/app/lib/actions/pulp/orchestration/repository/copy_all_units.rb +0 -19
- data/app/lib/actions/pulp/orchestration/repository/delete.rb +0 -15
- data/app/lib/actions/pulp/orchestration/repository/refresh.rb +0 -14
- data/app/lib/actions/pulp/orchestration/repository/refresh_if_needed.rb +0 -13
- data/app/lib/actions/pulp/orchestration/repository/refresh_repos.rb +0 -19
- data/app/lib/actions/pulp/orchestration/repository/remove_units.rb +0 -14
- data/app/lib/actions/pulp/orchestration/repository/smart_proxy_sync.rb +0 -34
- data/app/lib/actions/pulp/orchestration/repository/sync.rb +0 -18
- data/app/lib/actions/pulp/orchestration/repository/upload_content.rb +0 -37
- data/app/lib/actions/pulp/orphan_cleanup/remove_orphans.rb +0 -15
- data/app/lib/actions/pulp/orphan_cleanup/remove_unneeded_repos.rb +0 -16
- data/app/lib/actions/pulp/repository/abstract_copy_content.rb +0 -45
- data/app/lib/actions/pulp/repository/abstract_remove_content.rb +0 -32
- data/app/lib/actions/pulp/repository/clear.rb +0 -18
- data/app/lib/actions/pulp/repository/copy_all_units.rb +0 -30
- data/app/lib/actions/pulp/repository/copy_units.rb +0 -25
- data/app/lib/actions/pulp/repository/create.rb +0 -28
- data/app/lib/actions/pulp/repository/create_in_plan.rb +0 -15
- data/app/lib/actions/pulp/repository/create_upload_request.rb +0 -20
- data/app/lib/actions/pulp/repository/delete_upload_request.rb +0 -19
- data/app/lib/actions/pulp/repository/destroy.rb +0 -28
- data/app/lib/actions/pulp/repository/distributor_publish.rb +0 -25
- data/app/lib/actions/pulp/repository/download.rb +0 -16
- data/app/lib/actions/pulp/repository/import_upload.rb +0 -19
- data/app/lib/actions/pulp/repository/presenters/abstract_sync_presenter.rb +0 -47
- data/app/lib/actions/pulp/repository/presenters/deb_presenter.rb +0 -95
- data/app/lib/actions/pulp/repository/presenters/docker_presenter.rb +0 -103
- data/app/lib/actions/pulp/repository/presenters/file_unit_presenter.rb +0 -42
- data/app/lib/actions/pulp/repository/presenters/yum_presenter.rb +0 -131
- data/app/lib/actions/pulp/repository/refresh.rb +0 -21
- data/app/lib/actions/pulp/repository/regenerate_applicability.rb +0 -21
- data/app/lib/actions/pulp/repository/remove_distribution.rb +0 -11
- data/app/lib/actions/pulp/repository/remove_units.rb +0 -44
- data/app/lib/actions/pulp/repository/sync.rb +0 -99
- data/app/lib/actions/pulp/repository/upload_file.rb +0 -28
- data/app/lib/actions/pulp/repository_group/create.rb +0 -31
- data/app/lib/actions/pulp/repository_group/delete.rb +0 -17
- data/app/lib/actions/pulp/repository_group/export.rb +0 -51
- data/app/lib/katello/util/package_clause_generator.rb +0 -77
- data/app/models/katello/glue/pulp/pulp_errors.rb +0 -9
- data/app/models/katello/glue/pulp/repo.rb +0 -353
- data/app/models/katello/pulp_sync_status.rb +0 -165
- data/app/models/katello/pulp_task_status.rb +0 -63
- data/app/services/katello/pulp/content.rb +0 -24
- data/app/services/katello/pulp/importer_comparison.rb +0 -28
- data/app/services/katello/pulp/repository/deb.rb +0 -61
- data/app/services/katello/pulp/repository/docker.rb +0 -82
- data/app/services/katello/pulp/repository/file.rb +0 -52
- data/app/services/katello/pulp/repository/yum.rb +0 -205
- data/app/services/katello/pulp/repository.rb +0 -327
- data/app/services/katello/pulp/server.rb +0 -35
- data/app/services/katello/pulp/simple_package.rb +0 -24
- data/app/services/katello/pulp/smart_proxy_repository.rb +0 -52
- data/lib/monkeys/fix_deb_optimized_sync.rb +0 -35
- data/lib/monkeys/fix_pulp_container_path.rb +0 -35
- data/locale/zanata.xml +0 -30
- data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentSearch.fixtures.json +0 -33
data/webpack/scenes/ContentViews/Details/Filters/__tests__/ContentViewPackageGroupFilter.test.js
CHANGED
@@ -7,6 +7,7 @@ import { ADDED, cvFilterDetailsKey, NOT_ADDED } from '../../../ContentViewsConst
|
|
7
7
|
import {
|
8
8
|
nockInstance,
|
9
9
|
assertNockRequest,
|
10
|
+
mockAutocomplete,
|
10
11
|
} from '../../../../../test-utils/nockWrapper';
|
11
12
|
import api from '../../../../../services/api';
|
12
13
|
|
@@ -27,6 +28,13 @@ const cvBulkRemoveFilterRulesPath = api.getApiUrl('/content_view_filters/1/remov
|
|
27
28
|
const cvBulkAddFilterRulesPath = api.getApiUrl('/content_view_filters/1/add_filter_rules');
|
28
29
|
const cvGetAllReposPath = api.getApiUrl('/content_views/1/repositories');
|
29
30
|
|
31
|
+
const autocompleteUrl = '/package_groups/auto_complete_search';
|
32
|
+
const autocompleteQuery = {
|
33
|
+
filterid: 1,
|
34
|
+
organization_id: 1,
|
35
|
+
search: '',
|
36
|
+
};
|
37
|
+
|
30
38
|
const packageGroupsPath = api.getApiUrl('/package_groups');
|
31
39
|
const renderOptions = {
|
32
40
|
apiNamespace: cvFilterDetailsKey(1, 1),
|
@@ -41,6 +49,7 @@ const withCVRoute = component => <Route path="/content_views/:id([0-9]+)#/filter
|
|
41
49
|
jest.mock('../../../../../components/Search', () => () => 'mocked!');
|
42
50
|
|
43
51
|
test('Can enable and disable add filter button', async (done) => {
|
52
|
+
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl, autocompleteQuery);
|
44
53
|
const { name: cvFilterName } = cvFilterDetails;
|
45
54
|
const cvFilterScope = nockInstance
|
46
55
|
.get(cvFilterDetailsPath)
|
@@ -74,12 +83,14 @@ test('Can enable and disable add filter button', async (done) => {
|
|
74
83
|
expect(getByLabelText('add_filter_rule')).toHaveAttribute('aria-disabled', 'false');
|
75
84
|
});
|
76
85
|
|
86
|
+
assertNockRequest(autocompleteScope);
|
77
87
|
assertNockRequest(cvFilterScope);
|
78
88
|
assertNockRequest(cvFiltersScope);
|
79
89
|
assertNockRequest(packageGroupsScope, done);
|
80
90
|
});
|
81
91
|
|
82
92
|
test('Can remove a filter rule', async (done) => {
|
93
|
+
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl, autocompleteQuery);
|
83
94
|
const { rules } = cvFilterDetails;
|
84
95
|
const { name } = rules[0];
|
85
96
|
|
@@ -126,6 +137,7 @@ test('Can remove a filter rule', async (done) => {
|
|
126
137
|
fireEvent.click(getByText('Remove'));
|
127
138
|
|
128
139
|
|
140
|
+
assertNockRequest(autocompleteScope);
|
129
141
|
assertNockRequest(cvFilterScope);
|
130
142
|
assertNockRequest(cvFiltersScope);
|
131
143
|
assertNockRequest(cvFiltersRuleScope);
|
@@ -135,6 +147,7 @@ test('Can remove a filter rule', async (done) => {
|
|
135
147
|
});
|
136
148
|
|
137
149
|
test('Can add a filter rule', async (done) => {
|
150
|
+
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl, autocompleteQuery);
|
138
151
|
const { rules } = cvFilterDetails;
|
139
152
|
const { name } = rules[0];
|
140
153
|
|
@@ -183,6 +196,7 @@ test('Can add a filter rule', async (done) => {
|
|
183
196
|
fireEvent.click(getByText('Add'));
|
184
197
|
|
185
198
|
|
199
|
+
assertNockRequest(autocompleteScope);
|
186
200
|
assertNockRequest(cvFilterScope);
|
187
201
|
assertNockRequest(cvFiltersScope);
|
188
202
|
assertNockRequest(cvFiltersRuleScope);
|
@@ -192,6 +206,7 @@ test('Can add a filter rule', async (done) => {
|
|
192
206
|
});
|
193
207
|
|
194
208
|
test('Can bulk remove filter rules', async (done) => {
|
209
|
+
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl, autocompleteQuery);
|
195
210
|
const { rules } = cvFilterDetails;
|
196
211
|
const { name } = rules[0];
|
197
212
|
|
@@ -243,6 +258,7 @@ test('Can bulk remove filter rules', async (done) => {
|
|
243
258
|
expect(getByLabelText('bulk_remove')).toBeInTheDocument();
|
244
259
|
fireEvent.click(getByLabelText('bulk_remove'));
|
245
260
|
|
261
|
+
assertNockRequest(autocompleteScope);
|
246
262
|
assertNockRequest(cvFilterScope);
|
247
263
|
assertNockRequest(cvFiltersScope);
|
248
264
|
assertNockRequest(cvFiltersRuleBulkDeleteScope);
|
@@ -252,6 +268,7 @@ test('Can bulk remove filter rules', async (done) => {
|
|
252
268
|
});
|
253
269
|
|
254
270
|
test('Can bulk add filter rules', async (done) => {
|
271
|
+
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl, autocompleteQuery);
|
255
272
|
const { rules } = cvFilterDetails;
|
256
273
|
const { name } = rules[0];
|
257
274
|
|
@@ -300,6 +317,7 @@ test('Can bulk add filter rules', async (done) => {
|
|
300
317
|
expect(getByLabelText('add_filter_rule')).toBeInTheDocument();
|
301
318
|
fireEvent.click(getByLabelText('add_filter_rule'));
|
302
319
|
|
320
|
+
assertNockRequest(autocompleteScope);
|
303
321
|
assertNockRequest(cvFilterScope);
|
304
322
|
assertNockRequest(cvFiltersScope);
|
305
323
|
assertNockRequest(cvFiltersRuleBulkAddScope);
|
@@ -308,6 +326,26 @@ test('Can bulk add filter rules', async (done) => {
|
|
308
326
|
});
|
309
327
|
|
310
328
|
test('Can show affected repository tab on dropdown selection and add repos', async (done) => {
|
329
|
+
const autocompleteScope = mockAutocomplete(
|
330
|
+
nockInstance,
|
331
|
+
autocompleteUrl,
|
332
|
+
autocompleteQuery,
|
333
|
+
[],
|
334
|
+
2,
|
335
|
+
);
|
336
|
+
const autocompleteUrlRepo = '/repositories/auto_complete_search';
|
337
|
+
const autocompleteQueryRepo = {
|
338
|
+
organization_id: 1,
|
339
|
+
search: '',
|
340
|
+
};
|
341
|
+
const autocompleteScopeRepo = mockAutocomplete(
|
342
|
+
nockInstance,
|
343
|
+
autocompleteUrlRepo,
|
344
|
+
autocompleteQueryRepo,
|
345
|
+
[],
|
346
|
+
2,
|
347
|
+
);
|
348
|
+
|
311
349
|
const { rules } = cvFilterDetails;
|
312
350
|
const { name } = rules[0];
|
313
351
|
const { results } = cvAllRepos;
|
@@ -380,10 +418,31 @@ test('Can show affected repository tab on dropdown selection and add repos', asy
|
|
380
418
|
assertNockRequest(bulkAddReposScope);
|
381
419
|
assertNockRequest(cvFilterScope);
|
382
420
|
assertNockRequest(cvAllReposScope);
|
421
|
+
assertNockRequest(autocompleteScope);
|
422
|
+
assertNockRequest(autocompleteScopeRepo);
|
383
423
|
assertNockRequest(packageGroupsScope, done);
|
384
424
|
});
|
385
425
|
|
386
426
|
test('Can show affected repository tab and remove affected repos', async (done) => {
|
427
|
+
const autocompleteScope = mockAutocomplete(
|
428
|
+
nockInstance,
|
429
|
+
autocompleteUrl,
|
430
|
+
autocompleteQuery,
|
431
|
+
[],
|
432
|
+
2,
|
433
|
+
);
|
434
|
+
const autocompleteUrlRepo = '/repositories/auto_complete_search';
|
435
|
+
const autocompleteQueryRepo = {
|
436
|
+
organization_id: 1,
|
437
|
+
search: '',
|
438
|
+
};
|
439
|
+
const autocompleteScopeRepo = mockAutocomplete(
|
440
|
+
nockInstance,
|
441
|
+
autocompleteUrlRepo,
|
442
|
+
autocompleteQueryRepo,
|
443
|
+
[],
|
444
|
+
2,
|
445
|
+
);
|
387
446
|
const { rules } = cvFilterDetailsAffectedRepos;
|
388
447
|
const { name } = rules[0];
|
389
448
|
const { results } = cvAllRepos;
|
@@ -444,6 +503,9 @@ test('Can show affected repository tab and remove affected repos', async (done)
|
|
444
503
|
fireEvent.click(getAllByLabelText('bulk_actions')[1]);
|
445
504
|
expect(getByLabelText('bulk_remove')).toHaveAttribute('aria-disabled', 'false');
|
446
505
|
fireEvent.click(getByLabelText('bulk_remove'));
|
506
|
+
|
507
|
+
assertNockRequest(autocompleteScope);
|
508
|
+
assertNockRequest(autocompleteScopeRepo);
|
447
509
|
assertNockRequest(cvFilterScope);
|
448
510
|
assertNockRequest(cvFiltersScope);
|
449
511
|
assertNockRequest(cvAllReposScope);
|
@@ -454,6 +516,7 @@ test('Can show affected repository tab and remove affected repos', async (done)
|
|
454
516
|
});
|
455
517
|
|
456
518
|
test('Can filter by added/not added rules', async (done) => {
|
519
|
+
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl, autocompleteQuery);
|
457
520
|
const { rules } = cvFilterDetails;
|
458
521
|
const { name } = rules[0];
|
459
522
|
|
@@ -505,6 +568,7 @@ test('Can filter by added/not added rules', async (done) => {
|
|
505
568
|
getByLabelText(NOT_ADDED).click();
|
506
569
|
});
|
507
570
|
|
571
|
+
assertNockRequest(autocompleteScope);
|
508
572
|
assertNockRequest(cvFilterScope);
|
509
573
|
assertNockRequest(cvFiltersScope);
|
510
574
|
assertNockRequest(packageGroupsScope, done);
|
@@ -8,7 +8,6 @@ import {
|
|
8
8
|
nockInstance,
|
9
9
|
assertNockRequest,
|
10
10
|
mockAutocomplete,
|
11
|
-
mockSetting,
|
12
11
|
} from '../../../../../test-utils/nockWrapper';
|
13
12
|
import api from '../../../../../services/api';
|
14
13
|
import allPackageGroups from './allFilterPackageGroups.fixtures.json';
|
@@ -27,21 +26,14 @@ const renderOptions = {
|
|
27
26
|
initialIndex: 1,
|
28
27
|
},
|
29
28
|
};
|
29
|
+
const autocompleteQuery = {
|
30
|
+
filterid: 1,
|
31
|
+
organization_id: 1,
|
32
|
+
search: '',
|
33
|
+
};
|
30
34
|
|
31
35
|
const withCVRoute = component => <Route path="/content_views/:id([0-9]+)#/filters/:filterId([0-9]+)">{component}</Route>;
|
32
36
|
|
33
|
-
let searchDelayScope;
|
34
|
-
let autoSearchScope;
|
35
|
-
beforeEach(() => {
|
36
|
-
searchDelayScope = mockSetting(nockInstance, 'autosearch_delay', 0);
|
37
|
-
autoSearchScope = mockSetting(nockInstance, 'autosearch_while_typing');
|
38
|
-
});
|
39
|
-
|
40
|
-
afterEach(() => {
|
41
|
-
assertNockRequest(searchDelayScope);
|
42
|
-
assertNockRequest(autoSearchScope);
|
43
|
-
});
|
44
|
-
|
45
37
|
test('Can show filter details and package groups on page load', async (done) => {
|
46
38
|
const { name: cvFilterName } = cvFilterDetails;
|
47
39
|
const cvFilterScope = nockInstance
|
@@ -56,7 +48,7 @@ test('Can show filter details and package groups on page load', async (done) =>
|
|
56
48
|
.get(packageGroupsPath)
|
57
49
|
.query(true)
|
58
50
|
.reply(200, allPackageGroups);
|
59
|
-
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl);
|
51
|
+
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl, autocompleteQuery);
|
60
52
|
const { getByText, queryByText } =
|
61
53
|
renderWithRedux(withCVRoute(<ContentViewFilterDetails
|
62
54
|
cvId={1}
|
@@ -83,7 +75,25 @@ test('Can search for package groups in package group filter', async (done) => {
|
|
83
75
|
const { name: cvFilterName } = cvFilterDetails;
|
84
76
|
const { name: firstPackageGroupName } = firstPackageGroup;
|
85
77
|
const { name: lastPackageGroupName } = lastPackageGroup;
|
86
|
-
const searchQueryMatcher =
|
78
|
+
const searchQueryMatcher = {
|
79
|
+
filterid: 1,
|
80
|
+
organization_id: 1,
|
81
|
+
search: `name = ${lastPackageGroupName}`,
|
82
|
+
};
|
83
|
+
const searchResults = [
|
84
|
+
{
|
85
|
+
completed: `name = ${lastPackageGroupName}`,
|
86
|
+
part: 'and',
|
87
|
+
label: `name = ${lastPackageGroupName} and`,
|
88
|
+
category: 'Operators',
|
89
|
+
},
|
90
|
+
{
|
91
|
+
completed: `name = ${lastPackageGroupName}`,
|
92
|
+
part: 'or',
|
93
|
+
label: `name = ${lastPackageGroupName} or`,
|
94
|
+
category: 'Operators',
|
95
|
+
},
|
96
|
+
];
|
87
97
|
|
88
98
|
const cvFilterScope = nockInstance
|
89
99
|
.get(cvFilterDetailsPath)
|
@@ -103,8 +113,13 @@ test('Can search for package groups in package group filter', async (done) => {
|
|
103
113
|
.reply(200, { results: [lastPackageGroup] });
|
104
114
|
|
105
115
|
const autocompleteScope =
|
106
|
-
mockAutocomplete(nockInstance, autocompleteUrl);
|
107
|
-
const withSearchScope = mockAutocomplete(
|
116
|
+
mockAutocomplete(nockInstance, autocompleteUrl, autocompleteQuery);
|
117
|
+
const withSearchScope = mockAutocomplete(
|
118
|
+
nockInstance,
|
119
|
+
autocompleteUrl,
|
120
|
+
searchQueryMatcher,
|
121
|
+
searchResults,
|
122
|
+
);
|
108
123
|
const { getByText, queryByText, getByLabelText } =
|
109
124
|
renderWithRedux(withCVRoute(<ContentViewFilterDetails
|
110
125
|
cvId={1}
|
@@ -118,10 +133,11 @@ test('Can search for package groups in package group filter', async (done) => {
|
|
118
133
|
});
|
119
134
|
|
120
135
|
// Search and only searched result shows
|
121
|
-
|
136
|
+
getByLabelText('Search input').focus();
|
137
|
+
fireEvent.change(getByLabelText('Search input'), { target: { value: `name = ${lastPackageGroupName}` } });
|
122
138
|
await patientlyWaitFor(() => {
|
123
|
-
expect(getByText(lastPackageGroupName)).toBeInTheDocument();
|
124
|
-
expect(queryByText(firstPackageGroupName)).not.toBeInTheDocument();
|
139
|
+
expect(getByText(`name = ${lastPackageGroupName} and`)).toBeInTheDocument();
|
140
|
+
expect(queryByText(`name = ${firstPackageGroupName} and`)).not.toBeInTheDocument();
|
125
141
|
});
|
126
142
|
|
127
143
|
assertNockRequest(autocompleteScope);
|
@@ -3,7 +3,7 @@ import { renderWithRedux, patientlyWaitFor, fireEvent } from 'react-testing-lib-
|
|
3
3
|
import { Route } from 'react-router-dom';
|
4
4
|
|
5
5
|
import api from '../../../../../services/api';
|
6
|
-
import { nockInstance, assertNockRequest, mockAutocomplete
|
6
|
+
import { nockInstance, assertNockRequest, mockAutocomplete } from '../../../../../test-utils/nockWrapper';
|
7
7
|
import ContentViewFilters from '../ContentViewFilters';
|
8
8
|
import CONTENT_VIEWS_KEY from '../../../ContentViewsConstants';
|
9
9
|
import cvFilterFixtures from './contentViewFilters.fixtures.json';
|
@@ -27,19 +27,10 @@ const autocompleteUrl = '/content_view_filters/auto_complete_search';
|
|
27
27
|
|
28
28
|
let firstFilter;
|
29
29
|
let lastFilter;
|
30
|
-
let searchDelayScope;
|
31
|
-
let autoSearchScope;
|
32
30
|
beforeEach(() => {
|
33
31
|
const { results } = cvFilterFixtures;
|
34
32
|
[firstFilter] = results;
|
35
33
|
[lastFilter] = results.slice(-1);
|
36
|
-
searchDelayScope = mockSetting(nockInstance, 'autosearch_delay', 0);
|
37
|
-
autoSearchScope = mockSetting(nockInstance, 'autosearch_while_typing');
|
38
|
-
});
|
39
|
-
|
40
|
-
afterEach(() => {
|
41
|
-
assertNockRequest(searchDelayScope);
|
42
|
-
assertNockRequest(autoSearchScope);
|
43
34
|
});
|
44
35
|
|
45
36
|
test('Can call API and show filters on page load', async (done) => {
|
@@ -68,17 +59,39 @@ test('Can call API and show filters on page load', async (done) => {
|
|
68
59
|
|
69
60
|
test('Can search for filter', async (done) => {
|
70
61
|
const { name, description } = firstFilter;
|
71
|
-
const
|
72
|
-
|
73
|
-
|
62
|
+
const autocompleteQuery = {
|
63
|
+
organization_id: 1,
|
64
|
+
search: '',
|
65
|
+
};
|
66
|
+
const searchQueryMatcher = {
|
67
|
+
organization_id: 1,
|
68
|
+
search: 'name = f5',
|
69
|
+
};
|
70
|
+
const searchResults = [
|
71
|
+
{
|
72
|
+
completed: 'name = f5',
|
73
|
+
part: 'and',
|
74
|
+
label: 'name = f5 and',
|
75
|
+
category: 'Operators',
|
76
|
+
},
|
77
|
+
{
|
78
|
+
completed: 'name = f5',
|
79
|
+
part: 'or',
|
80
|
+
label: 'name = f5 or',
|
81
|
+
category: 'Operators',
|
82
|
+
},
|
83
|
+
];
|
84
|
+
const autocompleteScope = mockAutocomplete(nockInstance, autocompleteUrl, autocompleteQuery);
|
85
|
+
const withSearchScope = mockAutocomplete(
|
86
|
+
nockInstance,
|
87
|
+
autocompleteUrl,
|
88
|
+
searchQueryMatcher,
|
89
|
+
searchResults,
|
90
|
+
);
|
74
91
|
const initialScope = nockInstance
|
75
92
|
.get(cvFilters)
|
76
93
|
.query(true)
|
77
94
|
.reply(200, cvFilterFixtures);
|
78
|
-
const searchResultScope = nockInstance
|
79
|
-
.get(cvFilters)
|
80
|
-
.query(searchQueryMatcher)
|
81
|
-
.reply(200, { results: [firstFilter] });
|
82
95
|
|
83
96
|
const { queryByText, getByLabelText, getByText } = renderWithRedux(
|
84
97
|
withCVRoute(<ContentViewFilters cvId={1} details={details} />),
|
@@ -86,19 +99,23 @@ test('Can search for filter', async (done) => {
|
|
86
99
|
);
|
87
100
|
|
88
101
|
// Looking for description because the name is in the search bar and could match
|
89
|
-
await patientlyWaitFor(() =>
|
102
|
+
await patientlyWaitFor(() => {
|
103
|
+
expect(getByText(description)).toBeInTheDocument();
|
104
|
+
expect(getByText(name)).toBeInTheDocument();
|
105
|
+
expect(getByText('f5')).toBeInTheDocument();
|
106
|
+
});
|
90
107
|
// Search for a filter by name
|
91
|
-
|
108
|
+
getByLabelText('Search input').focus();
|
109
|
+
fireEvent.change(getByLabelText('Search input'), { target: { value: `name = ${lastFilter.name}` } });
|
92
110
|
// Only the first filter should be showing, not the last one
|
93
111
|
await patientlyWaitFor(() => {
|
94
|
-
expect(getByText(
|
95
|
-
expect(queryByText(
|
112
|
+
expect(getByText(`name = ${lastFilter.name} and`)).toBeInTheDocument();
|
113
|
+
expect(queryByText(`name = ${name} and`)).not.toBeInTheDocument();
|
96
114
|
});
|
97
115
|
|
98
116
|
assertNockRequest(autocompleteScope);
|
99
|
-
assertNockRequest(withSearchScope);
|
100
117
|
assertNockRequest(initialScope);
|
101
|
-
assertNockRequest(
|
118
|
+
assertNockRequest(withSearchScope, done);
|
102
119
|
});
|
103
120
|
|
104
121
|
test('Can remove a filter', async (done) => {
|
@@ -8,7 +8,6 @@ import {
|
|
8
8
|
nockInstance,
|
9
9
|
assertNockRequest,
|
10
10
|
mockAutocomplete,
|
11
|
-
mockSetting,
|
12
11
|
} from '../../../../../test-utils/nockWrapper';
|
13
12
|
import api from '../../../../../services/api';
|
14
13
|
import allErrata from './allFilterErrata.fixtures.json';
|
@@ -37,18 +36,6 @@ const renderOptions = {
|
|
37
36
|
|
38
37
|
const withCVRoute = component => <Route path="/content_views/:id([0-9]+)#/filters/:filterId([0-9]+)">{component}</Route>;
|
39
38
|
|
40
|
-
let searchDelayScope;
|
41
|
-
let autoSearchScope;
|
42
|
-
beforeEach(() => {
|
43
|
-
searchDelayScope = mockSetting(nockInstance, 'autosearch_delay', 0);
|
44
|
-
autoSearchScope = mockSetting(nockInstance, 'autosearch_while_typing');
|
45
|
-
});
|
46
|
-
|
47
|
-
afterEach(() => {
|
48
|
-
assertNockRequest(searchDelayScope);
|
49
|
-
assertNockRequest(autoSearchScope);
|
50
|
-
});
|
51
|
-
|
52
39
|
test('Can enable and disable add filter button', async (done) => {
|
53
40
|
const { name: cvFilterName } = cvFilterDetails;
|
54
41
|
const cvFilterScope = nockInstance
|
@@ -8,7 +8,6 @@ import {
|
|
8
8
|
nockInstance,
|
9
9
|
assertNockRequest,
|
10
10
|
mockAutocomplete,
|
11
|
-
mockSetting,
|
12
11
|
} from '../../../../../test-utils/nockWrapper';
|
13
12
|
import api from '../../../../../services/api';
|
14
13
|
import allModuleStreams from './allFilterModulesStreams.fixtures.json';
|
@@ -37,18 +36,6 @@ const renderOptions = {
|
|
37
36
|
|
38
37
|
const withCVRoute = component => <Route path="/content_views/:id([0-9]+)#/filters/:filterId([0-9]+)">{component}</Route>;
|
39
38
|
|
40
|
-
let searchDelayScope;
|
41
|
-
let autoSearchScope;
|
42
|
-
beforeEach(() => {
|
43
|
-
searchDelayScope = mockSetting(nockInstance, 'autosearch_delay', 0);
|
44
|
-
autoSearchScope = mockSetting(nockInstance, 'autosearch_while_typing');
|
45
|
-
});
|
46
|
-
|
47
|
-
afterEach(() => {
|
48
|
-
assertNockRequest(searchDelayScope);
|
49
|
-
assertNockRequest(autoSearchScope);
|
50
|
-
});
|
51
|
-
|
52
39
|
test('Can enable and disable add filter button', async (done) => {
|
53
40
|
const { name: cvFilterName } = cvFilterDetails;
|
54
41
|
const cvFilterScope = nockInstance
|
@@ -83,7 +83,8 @@ const ContentViewHistories = ({ cvId }) => {
|
|
83
83
|
}}
|
84
84
|
ouiaId="content-view-history-table"
|
85
85
|
variant={TableVariant.compact}
|
86
|
-
autocompleteEndpoint={`/content_views/${cvId}/history
|
86
|
+
autocompleteEndpoint={`/katello/api/v2/content_views/${cvId}/history`}
|
87
|
+
bookmarkController="katello_content_view_histories"
|
87
88
|
fetchItems={useCallback(params => getContentViewHistories(cvId, params), [cvId])}
|
88
89
|
>
|
89
90
|
<Thead>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { renderWithRedux, patientlyWaitFor } from 'react-testing-lib-wrapper';
|
3
3
|
|
4
|
-
import { nockInstance, assertNockRequest, mockAutocomplete
|
4
|
+
import { nockInstance, assertNockRequest, mockAutocomplete } from '../../../../../test-utils/nockWrapper';
|
5
5
|
import api from '../../../../../services/api';
|
6
6
|
import CONTENT_VIEWS_KEY from '../../../ContentViewsConstants';
|
7
7
|
import ContentViewHistories from '../ContentViewHistories';
|
@@ -12,19 +12,10 @@ const cvHistories = api.getApiUrl('/content_views/1/history');
|
|
12
12
|
const autocompleteUrl = '/content_views/1/history/auto_complete_search';
|
13
13
|
|
14
14
|
let firstHistory;
|
15
|
-
let searchDelayScope;
|
16
|
-
let autoSearchScope;
|
17
15
|
|
18
16
|
beforeEach(() => {
|
19
17
|
const { results } = historyData;
|
20
18
|
[firstHistory] = results;
|
21
|
-
searchDelayScope = mockSetting(nockInstance, 'autosearch_delay', 0);
|
22
|
-
autoSearchScope = mockSetting(nockInstance, 'autosearch_while_typing');
|
23
|
-
});
|
24
|
-
|
25
|
-
afterEach(() => {
|
26
|
-
assertNockRequest(searchDelayScope);
|
27
|
-
assertNockRequest(autoSearchScope);
|
28
19
|
});
|
29
20
|
|
30
21
|
test('Can call API and show history on page load', async (done) => {
|
@@ -251,7 +251,8 @@ const ContentViewRepositories = ({ cvId, details }) => {
|
|
251
251
|
ouiaId="content-view-repositories-table"
|
252
252
|
{...selectAll}
|
253
253
|
variant={TableVariant.compact}
|
254
|
-
autocompleteEndpoint="/repositories
|
254
|
+
autocompleteEndpoint="/katello/api/v2/repositories"
|
255
|
+
bookmarkController="katello_content_view_repositories"
|
255
256
|
fetchItems={useCallback(params => getCVReposWithOptions(params), [getCVReposWithOptions])}
|
256
257
|
additionalListeners={[typeSelected, statusSelected]}
|
257
258
|
displaySelectAllCheckbox={hasPermission(permissions, 'edit_content_views')}
|
data/webpack/scenes/ContentViews/Details/Repositories/__tests__/contentViewAddRemove.test.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { renderWithRedux, patientlyWaitFor, act } from 'react-testing-lib-wrapper';
|
3
3
|
|
4
|
-
import { nockInstance, assertNockRequest, mockAutocomplete
|
4
|
+
import { nockInstance, assertNockRequest, mockAutocomplete } from '../../../../../test-utils/nockWrapper';
|
5
5
|
import api from '../../../../../services/api';
|
6
6
|
import CONTENT_VIEWS_KEY from '../../../ContentViewsConstants';
|
7
7
|
import ContentViewRepositories from '../ContentViewRepositories';
|
@@ -17,14 +17,10 @@ const repoTypesResponse = [{ name: 'deb' }, { name: 'docker' }, { name: 'file' }
|
|
17
17
|
const cvDetailsPath = api.getApiUrl('/content_views/1');
|
18
18
|
|
19
19
|
let firstRepo;
|
20
|
-
let searchDelayScope;
|
21
|
-
let autoSearchScope;
|
22
20
|
|
23
21
|
beforeEach(() => {
|
24
22
|
const { results } = repoData;
|
25
23
|
[firstRepo] = results;
|
26
|
-
searchDelayScope = mockSetting(nockInstance, 'autosearch_delay', 0);
|
27
|
-
autoSearchScope = mockSetting(nockInstance, 'autosearch_while_typing');
|
28
24
|
nockInstance
|
29
25
|
.persist() // match any query to this endpoint, gets cleaned up by `nock.cleanAll()`
|
30
26
|
.get(api.getApiUrl('/repositories/repository_types'))
|
@@ -32,11 +28,6 @@ beforeEach(() => {
|
|
32
28
|
.reply(200, repoTypesResponse);
|
33
29
|
});
|
34
30
|
|
35
|
-
afterEach(() => {
|
36
|
-
assertNockRequest(searchDelayScope);
|
37
|
-
assertNockRequest(autoSearchScope);
|
38
|
-
});
|
39
|
-
|
40
31
|
jest.mock('react-intl', () => ({ addLocaleData: () => { }, FormattedDate: () => 'mocked' }));
|
41
32
|
|
42
33
|
test('Can enable and disable add repositories button', async (done) => {
|
@@ -47,6 +47,8 @@ export const TableType = PropTypes.shape({
|
|
47
47
|
responseSelector: PropTypes.func,
|
48
48
|
statusSelector: PropTypes.func,
|
49
49
|
autocompleteEndpoint: PropTypes.string,
|
50
|
+
autocompleteQueryParams: PropTypes.shape({}),
|
51
|
+
bookmarkController: PropTypes.string,
|
50
52
|
fetchItems: PropTypes.func,
|
51
53
|
columnHeaders:
|
52
54
|
PropTypes.arrayOf(PropTypes.shape({
|
@@ -90,7 +92,9 @@ export default ({
|
|
90
92
|
selectRepositoriesComparison(state, versionOneId, versionTwoId, viewBy),
|
91
93
|
statusSelector: state =>
|
92
94
|
selectRepositoriesComparisonStatus(state, versionOneId, versionTwoId, viewBy),
|
93
|
-
autocompleteEndpoint: '/repositories
|
95
|
+
autocompleteEndpoint: '/katello/api/v2/repositories',
|
96
|
+
autocompleteQueryParams: { archived: true },
|
97
|
+
bookmarkController: 'katello_content_view_repositories',
|
94
98
|
fetchItems: params => getRepositoriesComparison(
|
95
99
|
versionOneId,
|
96
100
|
versionTwoId,
|
@@ -133,7 +137,8 @@ export default ({
|
|
133
137
|
selectRPMPackagesComparison(state, versionOneId, versionTwoId, viewBy),
|
134
138
|
statusSelector: state =>
|
135
139
|
selectRPMPackagesComparisonStatus(state, versionOneId, versionTwoId, viewBy),
|
136
|
-
autocompleteEndpoint: '/packages
|
140
|
+
autocompleteEndpoint: 'katello/api/v2/packages',
|
141
|
+
bookmarkController: 'katello_content_view_components',
|
137
142
|
fetchItems: params => getRPMPackagesComparison(
|
138
143
|
versionOneId,
|
139
144
|
versionTwoId,
|
@@ -170,7 +175,8 @@ export default ({
|
|
170
175
|
selectPackageGroupsComparison(state, versionOneId, versionTwoId, viewBy),
|
171
176
|
statusSelector: state =>
|
172
177
|
selectPackageGroupsComparisonStatus(state, versionOneId, versionTwoId, viewBy),
|
173
|
-
autocompleteEndpoint: '/package_groups
|
178
|
+
autocompleteEndpoint: '/katello/api/v2/package_groups',
|
179
|
+
bookmarkController: 'katello_content_view_components',
|
174
180
|
fetchItems: params => getPackageGroupsComparison(versionOneId, versionTwoId, viewBy, params),
|
175
181
|
columnHeaders: [
|
176
182
|
{ title: __('Name'), getProperty: item => item?.name },
|
@@ -189,7 +195,8 @@ export default ({
|
|
189
195
|
responseSelector: state => selectFilesComparison(state, versionOneId, versionTwoId, viewBy),
|
190
196
|
statusSelector: state =>
|
191
197
|
selectFilesComparisonStatus(state, versionOneId, versionTwoId, viewBy),
|
192
|
-
autocompleteEndpoint: '/files
|
198
|
+
autocompleteEndpoint: '/katello/api/v2/files',
|
199
|
+
bookmarkController: 'katello_content_view_components',
|
193
200
|
fetchItems: params => getFilesComparison(versionOneId, versionTwoId, viewBy, params),
|
194
201
|
columnHeaders: [
|
195
202
|
{
|
@@ -214,7 +221,8 @@ export default ({
|
|
214
221
|
responseSelector: state => selectErrataComparison(state, versionOneId, versionTwoId, viewBy),
|
215
222
|
statusSelector: state =>
|
216
223
|
selectErrataComparisonStatus(state, versionOneId, versionTwoId, viewBy),
|
217
|
-
autocompleteEndpoint: '/errata
|
224
|
+
autocompleteEndpoint: '/katello/api/v2/errata',
|
225
|
+
bookmarkController: 'katello_content_view_components',
|
218
226
|
fetchItems: params => getErrataComparison(versionOneId, versionTwoId, viewBy, params),
|
219
227
|
columnHeaders: [
|
220
228
|
{
|
@@ -277,7 +285,8 @@ export default ({
|
|
277
285
|
selectModuleStreamsComparison(state, versionOneId, versionTwoId, viewBy),
|
278
286
|
statusSelector: state =>
|
279
287
|
selectModuleStreamsComparisonStatus(state, versionOneId, versionTwoId, viewBy),
|
280
|
-
autocompleteEndpoint: '/module_streams
|
288
|
+
autocompleteEndpoint: '/katello/api/v2/module_streams',
|
289
|
+
bookmarkController: 'katello_content_view_components',
|
281
290
|
fetchItems: params => getModuleStreamsComparison(versionOneId, versionTwoId, viewBy, params),
|
282
291
|
columnHeaders: [
|
283
292
|
{
|
@@ -310,7 +319,8 @@ export default ({
|
|
310
319
|
selectDebPackagesComparison(state, versionOneId, versionTwoId, viewBy),
|
311
320
|
statusSelector: state =>
|
312
321
|
selectDebPackagesComparisonStatus(state, versionOneId, versionTwoId, viewBy),
|
313
|
-
autocompleteEndpoint: '/debs
|
322
|
+
autocompleteEndpoint: '/katello/api/v2/debs',
|
323
|
+
bookmarkController: 'katello_content_view_components',
|
314
324
|
fetchItems: params => getDebPackagesComparison(versionOneId, versionTwoId, viewBy, params),
|
315
325
|
columnHeaders: [
|
316
326
|
{
|
@@ -339,7 +349,8 @@ export default ({
|
|
339
349
|
selectDockerTagsComparison(state, versionOneId, versionTwoId, viewBy),
|
340
350
|
statusSelector: state =>
|
341
351
|
selectDockerTagsComparisonStatus(state, versionOneId, versionTwoId, viewBy),
|
342
|
-
autocompleteEndpoint: '/docker_tags
|
352
|
+
autocompleteEndpoint: '/katello/api/v2/docker_tags',
|
353
|
+
bookmarkController: 'katello_content_view_components',
|
343
354
|
fetchItems: params => getDockerTagsComparison(versionOneId, versionTwoId, viewBy, params),
|
344
355
|
columnHeaders: [
|
345
356
|
{
|
@@ -381,7 +392,8 @@ export default ({
|
|
381
392
|
pluralLabel,
|
382
393
|
viewBy,
|
383
394
|
),
|
384
|
-
autocompleteEndpoint:
|
395
|
+
autocompleteEndpoint: `/katello/api/v2/${pluralLabel}`,
|
396
|
+
bookmarkController: 'katello_content_view_components',
|
385
397
|
fetchItems: params =>
|
386
398
|
getGenericContentComparison(pluralLabel, versionOneId, versionTwoId, viewBy, params),
|
387
399
|
columnHeaders: [
|
@@ -16,6 +16,8 @@ const CVVersionCompareTable = ({
|
|
16
16
|
responseSelector,
|
17
17
|
statusSelector,
|
18
18
|
autocompleteEndpoint,
|
19
|
+
autocompleteQueryParams,
|
20
|
+
bookmarkController,
|
19
21
|
fetchItems: fetchItemsSorted,
|
20
22
|
columnHeaders,
|
21
23
|
hideSearch,
|
@@ -48,6 +50,8 @@ const CVVersionCompareTable = ({
|
|
48
50
|
updateSearchQuery,
|
49
51
|
status,
|
50
52
|
autocompleteEndpoint,
|
53
|
+
autocompleteQueryParams,
|
54
|
+
bookmarkController,
|
51
55
|
hideSearch,
|
52
56
|
}}
|
53
57
|
key={`cvv-comparison-table-${name}`}
|