katello 4.6.2.1 → 4.7.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.

Files changed (333) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/common/vendor.js +0 -1
  3. data/app/controllers/katello/api/v2/activation_keys_controller.rb +1 -0
  4. data/app/controllers/katello/api/v2/alternate_content_sources_controller.rb +4 -4
  5. data/app/controllers/katello/api/v2/capsule_content_controller.rb +5 -0
  6. data/app/controllers/katello/api/v2/content_imports_controller.rb +1 -0
  7. data/app/controllers/katello/api/v2/content_view_components_controller.rb +1 -1
  8. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +2 -1
  9. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +1 -1
  10. data/app/controllers/katello/api/v2/organizations_controller.rb +1 -0
  11. data/app/controllers/katello/api/v2/repositories_controller.rb +78 -12
  12. data/app/controllers/katello/api/v2/upstream_subscriptions_controller.rb +1 -1
  13. data/app/controllers/katello/concerns/api/v2/registration_controller_extensions.rb +7 -1
  14. data/app/controllers/katello/concerns/api/v2/smart_proxies_controller_extensions.rb +1 -0
  15. data/app/controllers/katello/concerns/hosts_controller_extensions.rb +11 -9
  16. data/app/helpers/katello/content_source_helper.rb +9 -0
  17. data/app/helpers/katello/hosts_and_hostgroups_helper.rb +31 -0
  18. data/app/lib/actions/katello/activation_key/destroy.rb +1 -0
  19. data/app/lib/actions/katello/agent_action.rb +1 -0
  20. data/app/lib/actions/katello/alternate_content_source/create.rb +1 -1
  21. data/app/lib/actions/katello/alternate_content_source/update.rb +2 -2
  22. data/app/lib/actions/katello/capsule_content/sync.rb +10 -2
  23. data/app/lib/actions/katello/cdn_configuration/update.rb +1 -1
  24. data/app/lib/actions/katello/content_view/promote.rb +1 -0
  25. data/app/lib/actions/katello/content_view/publish.rb +5 -2
  26. data/app/lib/actions/katello/content_view_version/auto_create_redhat_repositories.rb +7 -3
  27. data/app/lib/actions/katello/content_view_version/auto_create_repositories.rb +4 -2
  28. data/app/lib/actions/katello/content_view_version/import.rb +22 -10
  29. data/app/lib/actions/katello/product/destroy.rb +1 -1
  30. data/app/lib/actions/katello/repository/destroy.rb +3 -3
  31. data/app/lib/actions/katello/repository/errata_mail.rb +9 -6
  32. data/app/lib/actions/katello/repository/refresh_repository.rb +1 -1
  33. data/app/lib/actions/katello/repository/sync.rb +13 -6
  34. data/app/lib/actions/katello/repository_set/enable_repository.rb +6 -2
  35. data/app/lib/actions/pulp3/alternate_content_source/refresh_remote.rb +16 -0
  36. data/app/lib/actions/pulp3/orchestration/alternate_content_source/refresh.rb +1 -0
  37. data/app/lib/actions/pulp3/orchestration/content_view_version/export_library.rb +1 -1
  38. data/app/lib/actions/pulp3/orchestration/content_view_version/export_repository.rb +10 -2
  39. data/app/lib/katello/concerns/renderer_extensions.rb +2 -1
  40. data/app/lib/katello/errors.rb +2 -2
  41. data/app/lib/katello/resources/candlepin.rb +7 -1
  42. data/app/lib/katello/resources/cdn/katello_cdn.rb +3 -13
  43. data/app/lib/katello/resources/cdn.rb +14 -9
  44. data/app/lib/katello/util/candlepin_repository_checker.rb +73 -0
  45. data/app/models/katello/activation_key.rb +12 -1
  46. data/app/models/katello/alternate_content_source.rb +15 -4
  47. data/app/models/katello/alternate_content_source_product.rb +1 -1
  48. data/app/models/katello/authorization/repository.rb +2 -2
  49. data/app/models/katello/cdn_configuration.rb +12 -3
  50. data/app/models/katello/concerns/host_managed_extensions.rb +15 -2
  51. data/app/models/katello/concerns/http_proxy_extensions.rb +5 -10
  52. data/app/models/katello/concerns/smart_proxy_extensions.rb +30 -15
  53. data/app/models/katello/content.rb +15 -0
  54. data/app/models/katello/content_credential.rb +8 -9
  55. data/app/models/katello/content_view.rb +7 -3
  56. data/app/models/katello/content_view_component.rb +4 -0
  57. data/app/models/katello/content_view_version.rb +1 -1
  58. data/app/models/katello/erratum.rb +6 -2
  59. data/app/models/katello/host/content_facet.rb +13 -3
  60. data/app/models/katello/repository.rb +15 -1
  61. data/app/models/katello/root_repository.rb +0 -2
  62. data/app/overrides/add_smart_proxy_form.rb +5 -0
  63. data/app/presenters/katello/content_view_version_compare_presenter.rb +5 -0
  64. data/app/presenters/katello/host_package_presenter.rb +4 -4
  65. data/app/services/katello/pulp3/alternate_content_source.rb +23 -15
  66. data/app/services/katello/pulp3/ansible_collection.rb +7 -10
  67. data/app/services/katello/pulp3/content_view_version/export.rb +19 -6
  68. data/app/services/katello/pulp3/content_view_version/import.rb +2 -0
  69. data/app/services/katello/pulp3/content_view_version/import_validator.rb +21 -5
  70. data/app/services/katello/pulp3/content_view_version/importable_products.rb +11 -1
  71. data/app/services/katello/pulp3/content_view_version/importable_repositories.rb +38 -9
  72. data/app/services/katello/pulp3/content_view_version/metadata_generator.rb +12 -5
  73. data/app/services/katello/pulp3/content_view_version/metadata_map.rb +13 -2
  74. data/app/services/katello/pulp3/content_view_version/syncable_format_export.rb +5 -1
  75. data/app/services/katello/pulp3/pulp_content_unit.rb +3 -0
  76. data/app/services/katello/pulp3/repository.rb +18 -6
  77. data/app/services/katello/pulp3/repository_mirror.rb +0 -1
  78. data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +2 -2
  79. data/app/services/katello/pulp3/task_group.rb +18 -1
  80. data/app/services/katello/repository_type.rb +5 -2
  81. data/app/services/katello/repository_type_manager.rb +4 -3
  82. data/app/views/dashboard/_content_views_widget.html.erb +1 -1
  83. data/app/views/foreman/job_templates/change_content_source.erb +6 -0
  84. data/app/views/foreman/job_templates/update_packages_by_search_query.erb +7 -1
  85. data/app/views/katello/api/v2/alternate_content_sources/base.json.rabl +4 -4
  86. data/app/views/katello/api/v2/alternate_content_sources/index.json.rabl +1 -0
  87. data/app/views/katello/api/v2/alternate_content_sources/permissions.rabl +11 -0
  88. data/app/views/katello/api/v2/content_credentials/show.json.rabl +12 -0
  89. data/app/views/katello/api/v2/content_views/permissions.rabl +1 -0
  90. data/app/views/katello/api/v2/host_packages/base.json.rabl +1 -1
  91. data/app/views/katello/api/v2/module_streams/show.json.rabl +7 -0
  92. data/app/views/katello/api/v2/repositories/compare.json.rabl +10 -0
  93. data/app/views/katello/api/v2/smart_proxies/pulp_info.json.rabl +1 -0
  94. data/app/views/katello/hosts/_errata_counts.html.erb +46 -0
  95. data/app/views/overrides/activation_keys/_host_synced_content_select.html.erb +1 -0
  96. data/app/views/overrides/smart_proxies/_acs_http_proxy.html.erb +6 -0
  97. data/config/initializers/monkeys.rb +1 -0
  98. data/config/routes/api/v2.rb +2 -0
  99. data/config/routes.rb +3 -0
  100. data/db/migrate/20220730033504_update_custom_cdn.rb +13 -0
  101. data/db/migrate/20220920173656_add_http_proxy_to_smart_proxy.rb +7 -0
  102. data/db/migrate/20220920180858_remove_http_proxy_from_katello_alternate_content_sources.rb +6 -0
  103. data/engines/bastion/app/assets/javascripts/bastion/components/notification.service.js +1 -1
  104. data/engines/bastion/app/views/bastion/layouts/assets.html.erb +5 -5
  105. data/engines/bastion/vendor/assets/javascripts/bastion/angular/angular.js +1 -1
  106. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/content-credential.factory.js +17 -0
  107. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/content-credentials.routes.js +10 -0
  108. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/content-credential-acs.controller.js +36 -0
  109. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/content-credential-details.controller.js +7 -1
  110. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/views/content-credential-acs.html +38 -0
  111. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/views/content-credential-details.html +3 -0
  112. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/views/content-credentials.html +7 -2
  113. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +4 -2
  114. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +1 -1
  115. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +4 -3
  116. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/bastion_katello.pot +14 -1392
  117. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/katello-features.run.js +1 -0
  118. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +7 -0
  119. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-details.html +1 -1
  120. data/lib/katello/permission_creator.rb +1 -0
  121. data/lib/katello/plugin.rb +34 -11
  122. data/lib/katello/repository_types/deb.rb +1 -1
  123. data/lib/katello/repository_types/docker.rb +1 -1
  124. data/lib/katello/repository_types/python.rb +3 -3
  125. data/lib/katello/tasks/check_candlepin_content.rake +16 -0
  126. data/lib/katello/tasks/reset.rake +1 -1
  127. data/lib/katello/version.rb +1 -1
  128. data/lib/monkeys/try_pulp_container_path.rb +35 -0
  129. data/locale/action_names.rb +7 -7
  130. data/locale/bn/katello.po +395 -63
  131. data/locale/cs/katello.po +396 -64
  132. data/locale/de/katello.po +399 -67
  133. data/locale/en/katello.po +395 -63
  134. data/locale/es/katello.po +399 -67
  135. data/locale/fr/katello.po +400 -68
  136. data/locale/gu/katello.po +395 -63
  137. data/locale/hi/katello.po +395 -63
  138. data/locale/it/katello.po +396 -64
  139. data/locale/ja/katello.po +400 -68
  140. data/locale/katello.pot +1916 -1213
  141. data/locale/kn/katello.po +395 -63
  142. data/locale/ko/katello.po +396 -64
  143. data/locale/mr/katello.po +395 -63
  144. data/locale/or/katello.po +395 -63
  145. data/locale/pa/katello.po +395 -63
  146. data/locale/pt/katello.po +395 -63
  147. data/locale/pt_BR/katello.po +399 -67
  148. data/locale/ru/katello.po +396 -64
  149. data/locale/ta/katello.po +395 -63
  150. data/locale/te/katello.po +395 -63
  151. data/locale/zh_CN/katello.po +400 -68
  152. data/locale/zh_TW/katello.po +396 -64
  153. data/webpack/components/Bookmark/index.js +5 -1
  154. data/webpack/components/Content/Details/ContentDetails.js +1 -1
  155. data/webpack/components/Content/Details/__tests__/__snapshots__/ContentDetails.test.js.snap +6 -0
  156. data/webpack/components/EditableSwitch.js +1 -0
  157. data/webpack/components/EditableTextInput/EditableTextInput.js +3 -3
  158. data/webpack/components/Errata/errataHelpers.js +33 -0
  159. data/webpack/components/Errata/index.js +45 -12
  160. data/webpack/components/Loading.js +18 -8
  161. data/webpack/components/Packages/index.js +8 -24
  162. data/webpack/components/RoutedTabs/index.js +1 -0
  163. data/webpack/components/Search/Search.js +20 -2
  164. data/webpack/components/Search/__tests__/search.test.js +3 -3
  165. data/webpack/components/Table/EmptyStateMessage.js +1 -1
  166. data/webpack/components/Table/PageControls.js +1 -0
  167. data/webpack/components/Table/TableHooks.js +4 -0
  168. data/webpack/components/Table/TableWrapper.js +7 -7
  169. data/webpack/components/TypeAhead/pf4Search/TypeAheadInput.js +1 -0
  170. data/webpack/components/TypeAhead/pf4Search/TypeAheadItems.js +2 -0
  171. data/webpack/components/TypeAhead/pf4Search/TypeAheadSearch.js +1 -1
  172. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ChangeHostCVModal.js +3 -1
  173. data/webpack/components/extensions/HostDetails/Cards/ContentViewDetailsCard/ContentViewDetailsCard.js +2 -1
  174. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.js +124 -68
  175. data/webpack/components/extensions/HostDetails/Cards/ErrataOverviewCard.scss +5 -0
  176. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.js +30 -4
  177. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsCard.scss +23 -0
  178. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/HostCollectionsModal.js +5 -4
  179. data/webpack/components/extensions/HostDetails/Cards/HostCollectionsCard/__tests__/hostCollectionsCard.test.js +25 -10
  180. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeCard.js +3 -3
  181. data/webpack/components/extensions/HostDetails/Cards/SystemPurposeCard/SystemPurposeEditModal.js +6 -0
  182. data/webpack/components/extensions/HostDetails/Cards/__tests__/errataOverviewCard.test.js +145 -32
  183. data/webpack/components/extensions/HostDetails/DetailsTabCards/RegistrationCard.js +3 -1
  184. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/constants.js +2 -1
  185. data/webpack/components/extensions/HostDetails/Tabs/ContentTab/index.js +1 -0
  186. data/webpack/components/extensions/HostDetails/Tabs/ErrataTab/ErrataTab.js +78 -26
  187. data/webpack/components/extensions/HostDetails/Tabs/ModuleStreamsTab/ModuleStreamsTab.js +23 -10
  188. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/HostPackagesConstants.js +1 -0
  189. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackageInstallModal.js +9 -4
  190. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.js +141 -23
  191. data/webpack/components/extensions/HostDetails/Tabs/PackagesTab/PackagesTab.scss +6 -1
  192. data/webpack/components/extensions/HostDetails/Tabs/RemoteExecutionActions.js +9 -8
  193. data/webpack/components/extensions/HostDetails/Tabs/RepositorySetsTab/RepositorySetsTab.js +24 -3
  194. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/EnableTracerModal.js +7 -2
  195. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesEnabler.js +2 -1
  196. data/webpack/components/extensions/HostDetails/Tabs/TracesTab/TracesTab.js +20 -4
  197. data/webpack/components/extensions/HostDetails/Tabs/__tests__/errataTab.test.js +56 -38
  198. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packages.fixtures.json +3 -3
  199. data/webpack/components/extensions/HostDetails/Tabs/__tests__/packagesTab.test.js +5 -4
  200. data/webpack/components/extensions/HostDetails/Tabs/customizedRexUrlHelpers.js +3 -3
  201. data/webpack/containers/Application/config.js +2 -2
  202. data/webpack/containers/Application/overrides.scss +12 -0
  203. data/webpack/global_test_setup.js +19 -1
  204. data/webpack/ouia_id_check.js +0 -2
  205. data/webpack/redux/actions/RedHatRepositories/helpers.js +4 -8
  206. data/webpack/scenes/AlternateContentSources/ACSActions.js +37 -6
  207. data/webpack/scenes/AlternateContentSources/ACSConstants.js +2 -0
  208. data/webpack/scenes/AlternateContentSources/ACSIndexPage.js +1 -1
  209. data/webpack/scenes/AlternateContentSources/ACSSelectors.js +6 -6
  210. data/webpack/scenes/AlternateContentSources/Acs.scss +3 -0
  211. data/webpack/scenes/AlternateContentSources/Create/ACSCreateWizard.js +24 -3
  212. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCreateFinish.js +10 -8
  213. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSCredentials.js +25 -4
  214. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSReview.js +22 -11
  215. data/webpack/scenes/AlternateContentSources/Create/Steps/ACSSmartProxies.js +27 -2
  216. data/webpack/scenes/AlternateContentSources/Create/Steps/AcsUrlPaths.js +49 -17
  217. data/webpack/scenes/AlternateContentSources/Create/Steps/SelectSource.js +76 -23
  218. data/webpack/scenes/AlternateContentSources/Create/__tests__/acsCreate.test.js +159 -11
  219. data/webpack/scenes/AlternateContentSources/Details/ACSExpandableDetails.js +83 -29
  220. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditCredentials.js +9 -8
  221. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditDetails.js +2 -2
  222. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditProducts.js +2 -2
  223. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditSmartProxies.js +39 -7
  224. data/webpack/scenes/AlternateContentSources/Details/EditModals/ACSEditURLPaths.js +27 -11
  225. data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSEdits.test.js +58 -55
  226. data/webpack/scenes/AlternateContentSources/Details/__tests__/ACSExpandableDetails.test.js +35 -32
  227. data/webpack/scenes/AlternateContentSources/MainTable/ACSTable.js +323 -150
  228. data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsIndex.fixtures.json +5 -1
  229. data/webpack/scenes/AlternateContentSources/MainTable/__tests__/acsTable.test.js +10 -11
  230. data/webpack/scenes/AlternateContentSources/helpers.js +26 -0
  231. data/webpack/scenes/ContentViews/ContentViewsConstants.js +1 -0
  232. data/webpack/scenes/ContentViews/ContentViewsPage.js +1 -1
  233. data/webpack/scenes/ContentViews/Copy/CopyContentViewForm.js +1 -0
  234. data/webpack/scenes/ContentViews/Copy/CopyContentViewModal.js +1 -0
  235. data/webpack/scenes/ContentViews/Create/ContentViewFormComponents.js +10 -5
  236. data/webpack/scenes/ContentViews/Create/CreateContentViewForm.js +30 -7
  237. data/webpack/scenes/ContentViews/Create/CreateContentViewModal.js +1 -0
  238. data/webpack/scenes/ContentViews/Create/__tests__/createContentView.test.js +21 -6
  239. data/webpack/scenes/ContentViews/Delete/Steps/CVDeleteEnvironmentsSelection.js +3 -3
  240. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignActivationKeysForm.js +1 -0
  241. data/webpack/scenes/ContentViews/Delete/Steps/CVDeletionReassignHostsForm.js +1 -0
  242. data/webpack/scenes/ContentViews/Delete/__tests__/CvData.fixtures.json +2 -0
  243. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewAddModal.js +3 -0
  244. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentContentViewBulkAddModal.js +4 -1
  245. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ComponentVersion.js +1 -1
  246. data/webpack/scenes/ContentViews/Details/ComponentContentViews/ContentViewComponents.js +2 -1
  247. data/webpack/scenes/ContentViews/Details/ContentViewDetailActions.js +14 -0
  248. data/webpack/scenes/ContentViews/Details/ContentViewDetailSelectors.js +11 -1
  249. data/webpack/scenes/ContentViews/Details/ContentViewDetails.js +1 -1
  250. data/webpack/scenes/ContentViews/Details/ContentViewInfo.js +2 -0
  251. data/webpack/scenes/ContentViews/Details/Filters/Add/CVFilterAddModal.js +5 -0
  252. data/webpack/scenes/ContentViews/Details/Filters/AffectedRepositories/AffectedRepositorySelection.js +1 -0
  253. data/webpack/scenes/ContentViews/Details/Filters/ArtifactsWithNoErrata.js +1 -0
  254. data/webpack/scenes/ContentViews/Details/Filters/CVContainerImageFilterContent.js +8 -2
  255. data/webpack/scenes/ContentViews/Details/Filters/CVDebFilterContent.js +5 -1
  256. data/webpack/scenes/ContentViews/Details/Filters/CVErrataDateFilterContent.js +22 -6
  257. data/webpack/scenes/ContentViews/Details/Filters/CVErrataIDFilterContent.js +19 -9
  258. data/webpack/scenes/ContentViews/Details/Filters/CVModuleStreamFilterContent.js +9 -2
  259. data/webpack/scenes/ContentViews/Details/Filters/CVPackageGroupFilterContent.js +9 -2
  260. data/webpack/scenes/ContentViews/Details/Filters/CVRpmFilterContent.js +8 -2
  261. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilterDetailsHeader.js +1 -1
  262. data/webpack/scenes/ContentViews/Details/Filters/ContentViewFilters.js +2 -1
  263. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/CVRpmMatchContentModal.js +3 -2
  264. data/webpack/scenes/ContentViews/Details/Filters/MatchContentModal/__tests__/CVRpmMatchContentModal.test.js +1 -1
  265. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVContainerImageFilterContent.test.js +2 -2
  266. data/webpack/scenes/ContentViews/Details/Filters/__tests__/CVRpmFilterContent.test.js +1 -1
  267. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilterDetails.test.js +1 -1
  268. data/webpack/scenes/ContentViews/Details/Filters/__tests__/contentViewFilters.test.js +1 -1
  269. data/webpack/scenes/ContentViews/Details/Histories/ContentViewHistories.js +2 -2
  270. data/webpack/scenes/ContentViews/Details/Promote/ContentViewVersionPromote.js +2 -0
  271. data/webpack/scenes/ContentViews/Details/Repositories/ContentViewRepositories.js +2 -1
  272. data/webpack/scenes/ContentViews/Details/Versions/BulkDelete/Steps/ReviewEnvironments.js +3 -3
  273. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompare.js +9 -1
  274. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareConfig.js +83 -0
  275. data/webpack/scenes/ContentViews/Details/Versions/Compare/CVVersionCompareTable.js +32 -8
  276. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/CVVersionCompare.test.js +56 -3
  277. data/webpack/scenes/ContentViews/Details/Versions/Compare/__tests__/cvCompareRepositories.fixtures.json +175 -0
  278. data/webpack/scenes/ContentViews/Details/Versions/ContentViewVersions.js +6 -2
  279. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVEnvironmentSelectionForm.js +3 -3
  280. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignActivationKeysForm.js +1 -0
  281. data/webpack/scenes/ContentViews/Details/Versions/Delete/RemoveSteps/CVReassignHostsForm.js +1 -0
  282. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedActivationKeys.js +2 -2
  283. data/webpack/scenes/ContentViews/Details/Versions/Delete/affectedHosts.js +2 -2
  284. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailConfig.js +2 -2
  285. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetails.js +1 -0
  286. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsHeader.js +4 -1
  287. data/webpack/scenes/ContentViews/Details/Versions/VersionDetails/ContentViewVersionDetailsTable.js +5 -4
  288. data/webpack/scenes/ContentViews/Publish/CVPublishForm.js +5 -1
  289. data/webpack/scenes/ContentViews/Publish/CVPublishReview.js +3 -3
  290. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +10 -5
  291. data/webpack/scenes/ContentViews/__tests__/basicContentViews.fixtures.js +2 -0
  292. data/webpack/scenes/ContentViews/__tests__/contentViewList.fixtures.json +1 -0
  293. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +81 -19
  294. data/webpack/scenes/ContentViews/components/CVBreadCrumb.js +1 -1
  295. data/webpack/scenes/ContentViews/components/EnvironmentPaths/EnvironmentPaths.js +1 -0
  296. data/webpack/scenes/ContentViews/components/InactiveText.js +9 -1
  297. data/webpack/scenes/ContentViews/expansions/RelatedCompositeContentViewsModal.js +4 -2
  298. data/webpack/scenes/ContentViews/expansions/RelatedContentViewComponentsModal.js +3 -2
  299. data/webpack/scenes/Hosts/ChangeContentSource/actions.js +18 -11
  300. data/webpack/scenes/Hosts/ChangeContentSource/components/ContentSourceForm.js +15 -8
  301. data/webpack/scenes/Hosts/ChangeContentSource/components/FormField.js +3 -4
  302. data/webpack/scenes/Hosts/ChangeContentSource/components/Hosts.js +55 -0
  303. data/webpack/scenes/Hosts/ChangeContentSource/components/HostsModal.js +59 -0
  304. data/webpack/scenes/Hosts/ChangeContentSource/constants.js +1 -0
  305. data/webpack/scenes/Hosts/ChangeContentSource/helpers.js +2 -5
  306. data/webpack/scenes/Hosts/ChangeContentSource/index.js +46 -41
  307. data/webpack/scenes/Hosts/ChangeContentSource/selectors.js +5 -5
  308. data/webpack/scenes/ModuleStreams/Details/ModuleDetailsSchema.js +10 -1
  309. data/webpack/scenes/ModuleStreams/Details/ModuleStreamDetails.js +1 -1
  310. data/webpack/scenes/ModuleStreams/Details/__tests__/__snapshots__/ModuleStreamDetails.test.js.snap +97 -2
  311. data/webpack/scenes/Organizations/OrganizationSelectors.js +1 -0
  312. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnConfigurationConstants.js +2 -1
  313. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CdnTypeForm.js +10 -25
  314. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/CustomCdnTypeForm.js +154 -0
  315. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/ExportSyncForm.js +4 -4
  316. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/NetworkSyncForm.js +59 -44
  317. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/CdnTypeForm.test.js +3 -28
  318. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/CustomCdnTypeForm.test.js +97 -0
  319. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/ExportSyncForm.test.js +1 -1
  320. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/__tests__/NetworkSyncForm.test.js +4 -4
  321. data/webpack/scenes/Subscriptions/Manifest/CdnConfigurationTab/index.js +23 -10
  322. data/webpack/scenes/Subscriptions/Manifest/ManageManifestModal.js +1 -1
  323. data/webpack/scenes/Subscriptions/SubscriptionConstants.js +2 -1
  324. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +5 -5
  325. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/UpstreamSubscriptionsPage.js +3 -3
  326. data/webpack/scenes/Subscriptions/UpstreamSubscriptions/__tests__/__snapshots__/UpstreamSubscriptionsPage.test.js.snap +2 -2
  327. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +3 -3
  328. data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/SubscriptionsToolbar.js +3 -3
  329. data/webpack/scenes/Tasks/helpers.js +14 -7
  330. metadata +54 -35
  331. data/app/lib/actions/pulp3/orchestration/alternate_content_source/refresh_remote.rb +0 -18
  332. data/db/migrate/20221206170122_update_ignore_srpm_to_false_for_mirror_complete.rb +0 -5
  333. data/vendor/assets/javascripts/katello/jquery.trunk8.js +0 -203
@@ -9,13 +9,13 @@ import simplifiedAcsDetails from './simplifiedAcsDetails.fixtures.json';
9
9
  import productsList from './acsProducts.fixtures.json';
10
10
 
11
11
  const acsDetailsURL = api.getApiUrl('/alternate_content_sources/1');
12
- const withACSRoute = component => <Route path="/labs/alternate_content_sources/:id([0-9]+)">{component}</Route>;
12
+ const withACSRoute = component => <Route path="/alternate_content_sources/:id([0-9]+)">{component}</Route>;
13
13
  const productsURL = api.getApiUrl('/products');
14
14
 
15
15
  test('Can show custom ACS details expandable sections with edit buttons', async (done) => {
16
16
  const renderOptions = {
17
17
  routerParams: {
18
- initialEntries: [{ pathname: '/labs/alternate_content_sources/1/details' }],
18
+ initialEntries: [{ pathname: '/alternate_content_sources/1/details' }],
19
19
  },
20
20
  };
21
21
  const acsDetailsScope = nockInstance
@@ -27,21 +27,21 @@ test('Can show custom ACS details expandable sections with edit buttons', async
27
27
 
28
28
  // Nothing will show at first, page is loading
29
29
  expect(queryByText('test_acs')).toBeNull();
30
- expect(queryByText('Hide details')).toBeNull();
31
- expect(queryByText('Show smart proxies')).toBeNull();
32
- expect(queryByText('Show URL and subpaths')).toBeNull();
33
- expect(queryByText('Show credentials')).toBeNull();
30
+ expect(queryByText('Details')).toBeNull();
31
+ expect(queryByText('Smart proxies')).toBeNull();
32
+ expect(queryByText('URL and subpaths')).toBeNull();
33
+ expect(queryByText('Credentials')).toBeNull();
34
34
  // Assert that the ACS name and expandable sections
35
35
  // are now showing on the screen, but wait for it to appear.
36
36
  await patientlyWaitFor(() => {
37
37
  expect(queryByText('test_acs')).toBeInTheDocument();
38
- expect(queryByText('Hide details')).toBeInTheDocument();
38
+ expect(queryByText('Details')).toBeInTheDocument();
39
39
  expect(getByLabelText('edit-details-pencil-edit')).toBeInTheDocument();
40
- expect(queryByText('Show smart proxies')).toBeInTheDocument();
40
+ expect(queryByText('Smart proxies')).toBeInTheDocument();
41
41
  expect(getByLabelText('edit-smart-proxies-pencil-edit')).toBeInTheDocument();
42
- expect(queryByText('Show URL and subpaths')).toBeInTheDocument();
42
+ expect(queryByText('URL and subpaths')).toBeInTheDocument();
43
43
  expect(getByLabelText('edit-urls-pencil-edit')).toBeInTheDocument();
44
- expect(queryByText('Show credentials')).toBeInTheDocument();
44
+ expect(queryByText('Credentials')).toBeInTheDocument();
45
45
  expect(getByLabelText('edit-credentials-pencil-edit')).toBeInTheDocument();
46
46
  });
47
47
  assertNockRequest(acsDetailsScope, done);
@@ -51,41 +51,43 @@ test('Can show custom ACS details expandable sections with edit buttons', async
51
51
  test('Can open and close edit ACS details modal', async (done) => {
52
52
  const renderOptions = {
53
53
  routerParams: {
54
- initialEntries: [{ pathname: '/labs/alternate_content_sources/1/details' }],
54
+ initialEntries: [{ pathname: '/alternate_content_sources/1/details' }],
55
55
  },
56
56
  };
57
57
  const acsDetailsScope = nockInstance
58
58
  .get(acsDetailsURL)
59
59
  .query(true)
60
60
  .reply(200, acsDetails);
61
- const { queryByText, getByLabelText } =
61
+ const {
62
+ queryByText, getByLabelText, queryAllByText, queryByLabelText,
63
+ } =
62
64
  renderWithRedux(withACSRoute(<ACSExpandableDetails />), renderOptions);
63
65
 
64
66
  // Nothing will show at first, page is loading
65
67
  expect(queryByText('test_acs')).toBeNull();
66
- expect(queryByText('Hide details')).toBeNull();
67
- expect(queryByText('Show smart proxies')).toBeNull();
68
- expect(queryByText('Show URL and subpaths')).toBeNull();
69
- expect(queryByText('Show credentials')).toBeNull();
68
+ expect(queryByText('Details')).toBeNull();
69
+ expect(queryByText('Smart proxies')).toBeNull();
70
+ expect(queryByText('URL and subpaths')).toBeNull();
71
+ expect(queryByText('Credentials')).toBeNull();
70
72
  // Assert that the ACS name and expandable sections
71
73
  // are now showing on the screen, but wait for it to appear.
72
74
  await patientlyWaitFor(() => {
73
75
  expect(queryByText('test_acs')).toBeInTheDocument();
74
- expect(queryByText('Hide details')).toBeInTheDocument();
76
+ expect(queryByText('Details')).toBeInTheDocument();
75
77
  expect(getByLabelText('edit-details-pencil-edit')).toBeInTheDocument();
76
78
  });
77
79
  const editDetails = getByLabelText('edit-details-pencil-edit');
78
80
  fireEvent.click(editDetails);
79
81
  // Can open modal
80
82
  await patientlyWaitFor(() => {
81
- expect(queryByText('Edit Alternate content source details')).toBeInTheDocument();
83
+ expect(queryAllByText('Edit')).toHaveLength(5);
82
84
  expect(getByLabelText('edit_acs_details')).toBeInTheDocument();
83
85
  });
84
86
  const cancelButton = queryByText('Cancel');
85
87
  fireEvent.click(cancelButton);
86
88
  // can close modal
87
89
  await patientlyWaitFor(() => {
88
- expect(queryByText('Edit Alternate content source details')).not.toBeInTheDocument();
90
+ expect(queryByLabelText('edit_acs_details')).not.toBeInTheDocument();
89
91
  });
90
92
  assertNockRequest(acsDetailsScope, done);
91
93
  act(done);
@@ -94,7 +96,7 @@ test('Can open and close edit ACS details modal', async (done) => {
94
96
  test('Can edit ACS details in the edit modal', async (done) => {
95
97
  const renderOptions = {
96
98
  routerParams: {
97
- initialEntries: [{ pathname: '/labs/alternate_content_sources/1/details' }],
99
+ initialEntries: [{ pathname: '/alternate_content_sources/1/details' }],
98
100
  },
99
101
  };
100
102
  const acsDetailsScope = nockInstance
@@ -105,34 +107,34 @@ test('Can edit ACS details in the edit modal', async (done) => {
105
107
  const acsEditScope = nockInstance
106
108
  .put(acsDetailsURL)
107
109
  .reply(200, acsDetails);
108
- const { queryByText, getByLabelText } =
110
+ const { queryByText, getByLabelText, queryAllByText } =
109
111
  renderWithRedux(withACSRoute(<ACSExpandableDetails />), renderOptions);
110
112
 
111
113
  // Nothing will show at first, page is loading
112
114
  expect(queryByText('test_acs')).toBeNull();
113
- expect(queryByText('Hide details')).toBeNull();
114
- expect(queryByText('Show smart proxies')).toBeNull();
115
- expect(queryByText('Show URL and subpaths')).toBeNull();
116
- expect(queryByText('Show credentials')).toBeNull();
115
+ expect(queryByText('Details')).toBeNull();
116
+ expect(queryByText('Smart proxies')).toBeNull();
117
+ expect(queryByText('URL and subpaths')).toBeNull();
118
+ expect(queryByText('Credentials')).toBeNull();
117
119
  // Assert that the ACS name and expandable sections
118
120
  // are now showing on the screen, but wait for it to appear.
119
121
  await patientlyWaitFor(() => {
120
122
  expect(queryByText('test_acs')).toBeInTheDocument();
121
- expect(queryByText('Hide details')).toBeInTheDocument();
123
+ expect(queryByText('Details')).toBeInTheDocument();
122
124
  expect(getByLabelText('edit-details-pencil-edit')).toBeInTheDocument();
123
125
  });
124
126
  const editDetails = getByLabelText('edit-details-pencil-edit');
127
+ expect(queryAllByText('Edit')).toHaveLength(4);
125
128
  fireEvent.click(editDetails);
126
129
  // Can open modal
127
130
  await patientlyWaitFor(() => {
128
- expect(queryByText('Edit Alternate content source details')).toBeInTheDocument();
129
131
  expect(getByLabelText('edit_acs_details')).toBeInTheDocument();
130
132
  });
131
- const saveButton = queryByText('Edit ACS details');
133
+ const saveButton = getByLabelText('edit_acs_details');
132
134
  fireEvent.click(saveButton);
133
135
  // can close modal
134
136
  await patientlyWaitFor(() => {
135
- expect(queryByText('Edit Alternate content source details')).not.toBeInTheDocument();
137
+ expect(queryAllByText('Edit')).toHaveLength(4);
136
138
  });
137
139
  assertNockRequest(acsDetailsScope);
138
140
  assertNockRequest(acsEditScope);
@@ -143,7 +145,7 @@ test('Can edit ACS details in the edit modal', async (done) => {
143
145
  test('Can show simplified ACS details expandable sections with edit buttons', async (done) => {
144
146
  const renderOptions = {
145
147
  routerParams: {
146
- initialEntries: [{ pathname: '/labs/alternate_content_sources/1/details' }],
148
+ initialEntries: [{ pathname: '/alternate_content_sources/1/details' }],
147
149
  },
148
150
  };
149
151
  const acsDetailsScope = nockInstance
@@ -155,23 +157,23 @@ test('Can show simplified ACS details expandable sections with edit buttons', as
155
157
 
156
158
  // Nothing will show at first, page is loading
157
159
  expect(queryByText('test_acs3')).toBeNull();
158
- expect(queryByText('Hide details')).toBeNull();
159
- expect(queryByText('Show smart proxies')).toBeNull();
160
- expect(queryByText('Show URL and subpaths')).toBeNull();
161
- expect(queryByText('Show credentials')).toBeNull();
162
- expect(queryByText('Show products')).toBeNull();
160
+ expect(queryByText('Details')).toBeNull();
161
+ expect(queryByText('Smart proxies')).toBeNull();
162
+ expect(queryByText('URL and subpaths')).toBeNull();
163
+ expect(queryByText('Credentials')).toBeNull();
164
+ expect(queryByText('Products')).toBeNull();
163
165
  // Assert that the ACS name and expandable sections
164
166
  // are now showing on the screen, but wait for it to appear.
165
167
  await patientlyWaitFor(() => {
166
168
  expect(queryByText('test_acs3')).toBeInTheDocument();
167
- expect(queryByText('Hide details')).toBeInTheDocument();
169
+ expect(queryByText('Details')).toBeInTheDocument();
168
170
  expect(getByLabelText('edit-details-pencil-edit')).toBeInTheDocument();
169
- expect(queryByText('Show smart proxies')).toBeInTheDocument();
171
+ expect(queryByText('Smart proxies')).toBeInTheDocument();
170
172
  expect(getByLabelText('edit-smart-proxies-pencil-edit')).toBeInTheDocument();
171
- expect(queryByText('Show products')).toBeInTheDocument();
173
+ expect(queryByText('Products')).toBeInTheDocument();
172
174
  expect(getByLabelText('edit-products-pencil-edit')).toBeInTheDocument();
173
- expect(queryByText('Show credentials')).not.toBeInTheDocument();
174
- expect(queryByText('Show URL and subpaths')).not.toBeInTheDocument();
175
+ expect(queryByText('Credentials')).not.toBeInTheDocument();
176
+ expect(queryByText('URL and subpaths')).not.toBeInTheDocument();
175
177
  });
176
178
  assertNockRequest(acsDetailsScope, done);
177
179
  act(done);
@@ -180,7 +182,7 @@ test('Can show simplified ACS details expandable sections with edit buttons', as
180
182
  test('Can edit products in a simplified ACS details edit modal', async (done) => {
181
183
  const renderOptions = {
182
184
  routerParams: {
183
- initialEntries: [{ pathname: '/labs/alternate_content_sources/1/details' }],
185
+ initialEntries: [{ pathname: '/alternate_content_sources/1/details' }],
184
186
  },
185
187
  };
186
188
  const acsDetailsScope = nockInstance
@@ -198,41 +200,42 @@ test('Can edit products in a simplified ACS details edit modal', async (done) =>
198
200
  .put(acsDetailsURL)
199
201
  .reply(200, acsDetails);
200
202
 
201
- const { queryByText, getByLabelText } =
203
+ const { queryByText, getByLabelText, queryAllByText } =
202
204
  renderWithRedux(withACSRoute(<ACSExpandableDetails />), renderOptions);
203
205
 
204
206
  // Nothing will show at first, page is loading
205
207
  expect(queryByText('test_acs3')).toBeNull();
206
- expect(queryByText('Hide details')).toBeNull();
207
- expect(queryByText('Show smart proxies')).toBeNull();
208
- expect(queryByText('Show URL and subpaths')).toBeNull();
209
- expect(queryByText('Show credentials')).toBeNull();
210
- expect(queryByText('Show products')).toBeNull();
208
+ expect(queryByText('Details')).toBeNull();
209
+ expect(queryByText('Smart proxies')).toBeNull();
210
+ expect(queryByText('URL and subpaths')).toBeNull();
211
+ expect(queryByText('Credentials')).toBeNull();
212
+ expect(queryByText('Products')).toBeNull();
211
213
  // Assert that the ACS name and expandable sections
212
214
  // are now showing on the screen, but wait for it to appear.
213
215
  await patientlyWaitFor(() => {
214
216
  expect(queryByText('test_acs3')).toBeInTheDocument();
215
- expect(queryByText('Hide details')).toBeInTheDocument();
217
+ expect(queryByText('Details')).toBeInTheDocument();
216
218
  expect(getByLabelText('edit-details-pencil-edit')).toBeInTheDocument();
217
- expect(queryByText('Show smart proxies')).toBeInTheDocument();
219
+ expect(queryByText('Smart proxies')).toBeInTheDocument();
218
220
  expect(getByLabelText('edit-smart-proxies-pencil-edit')).toBeInTheDocument();
219
- expect(queryByText('Show products')).toBeInTheDocument();
221
+ expect(queryByText('Products')).toBeInTheDocument();
220
222
  expect(getByLabelText('edit-products-pencil-edit')).toBeInTheDocument();
221
- expect(queryByText('Show credentials')).not.toBeInTheDocument();
222
- expect(queryByText('Show URL and subpaths')).not.toBeInTheDocument();
223
+ expect(queryByText('Credentials')).not.toBeInTheDocument();
224
+ expect(queryByText('URL and subpaths')).not.toBeInTheDocument();
223
225
  });
224
226
  const editDetails = getByLabelText('edit-products-pencil-edit');
227
+ expect(queryAllByText('Edit')).toHaveLength(3);
225
228
  fireEvent.click(editDetails);
226
229
  // Can open modal
227
230
  await patientlyWaitFor(() => {
228
- expect(queryByText('Edit Alternate content source products')).toBeInTheDocument();
231
+ expect(queryAllByText('Edit')).toHaveLength(4);
229
232
  expect(getByLabelText('edit_acs_details')).toBeInTheDocument();
230
233
  });
231
- const saveButton = queryByText('Edit ACS products');
234
+ const saveButton = getByLabelText('edit_acs_details');
232
235
  fireEvent.click(saveButton);
233
236
  // can close modal
234
237
  await patientlyWaitFor(() => {
235
- expect(queryByText('Edit Alternate content source products')).not.toBeInTheDocument();
238
+ expect(queryAllByText('Edit')).toHaveLength(3);
236
239
  });
237
240
  assertNockRequest(acsDetailsScope);
238
241
  assertNockRequest(productsScope);
@@ -7,12 +7,12 @@ import ACSExpandableDetails from '../ACSExpandableDetails';
7
7
  import acsDetails from './acsDetails.fixtures';
8
8
 
9
9
  const acsDetailsURL = api.getApiUrl('/alternate_content_sources/1');
10
- const withACSRoute = component => <Route path="/labs/alternate_content_sources/:id([0-9]+)">{component}</Route>;
10
+ const withACSRoute = component => <Route path="/alternate_content_sources/:id([0-9]+)">{component}</Route>;
11
11
 
12
12
  test('Can call API and show ACS details expandable sections on page load', async (done) => {
13
13
  const renderOptions = {
14
14
  routerParams: {
15
- initialEntries: [{ pathname: '/labs/alternate_content_sources/1/details' }],
15
+ initialEntries: [{ pathname: '/alternate_content_sources/1/details' }],
16
16
  },
17
17
  };
18
18
  const acsDetailsScope = nockInstance
@@ -23,18 +23,18 @@ test('Can call API and show ACS details expandable sections on page load', async
23
23
 
24
24
  // Nothing will show at first, page is loading
25
25
  expect(queryByText('test_acs')).toBeNull();
26
- expect(queryByText('Hide details')).toBeNull();
27
- expect(queryByText('Show smart proxies')).toBeNull();
28
- expect(queryByText('Show URL and subpaths')).toBeNull();
29
- expect(queryByText('Show credentials')).toBeNull();
26
+ expect(queryByText('Details')).toBeNull();
27
+ expect(queryByText('Smart proxies')).toBeNull();
28
+ expect(queryByText('URL and subpaths')).toBeNull();
29
+ expect(queryByText('Credentials')).toBeNull();
30
30
  // Assert that the ACS name and expandable sections
31
31
  // are now showing on the screen, but wait for it to appear.
32
32
  await patientlyWaitFor(() => {
33
33
  expect(queryByText('test_acs')).toBeInTheDocument();
34
- expect(queryByText('Hide details')).toBeInTheDocument();
35
- expect(queryByText('Show smart proxies')).toBeInTheDocument();
36
- expect(queryByText('Show URL and subpaths')).toBeInTheDocument();
37
- expect(queryByText('Show credentials')).toBeInTheDocument();
34
+ expect(queryByText('Details')).toBeInTheDocument();
35
+ expect(queryByText('Smart proxies')).toBeInTheDocument();
36
+ expect(queryByText('URL and subpaths')).toBeInTheDocument();
37
+ expect(queryByText('Credentials')).toBeInTheDocument();
38
38
  });
39
39
  assertNockRequest(acsDetailsScope, done);
40
40
  act(done);
@@ -43,14 +43,14 @@ test('Can call API and show ACS details expandable sections on page load', async
43
43
  test('Can expand expandable sections on details page', async (done) => {
44
44
  const renderOptions = {
45
45
  routerParams: {
46
- initialEntries: [{ pathname: '/labs/alternate_content_sources/1/details' }],
46
+ initialEntries: [{ pathname: '/alternate_content_sources/1/details' }],
47
47
  },
48
48
  };
49
49
  const acsDetailsScope = nockInstance
50
50
  .get(acsDetailsURL)
51
51
  .query(true)
52
52
  .reply(200, acsDetails);
53
- const { queryAllByText, queryByText } =
53
+ const { queryAllByText, queryByText, queryByLabelText } =
54
54
  renderWithRedux(withACSRoute(<ACSExpandableDetails />), renderOptions);
55
55
 
56
56
  // Nothing will show at first, page is loading
@@ -59,46 +59,49 @@ test('Can expand expandable sections on details page', async (done) => {
59
59
  // are now showing on the screen, but wait for it to appear.
60
60
  await patientlyWaitFor(() => {
61
61
  expect(queryByText('test_acs')).toBeInTheDocument();
62
- expect(queryByText('Hide details')).toBeInTheDocument();
63
- expect(queryByText('Show smart proxies')).toBeInTheDocument();
64
- expect(queryByText('Show URL and subpaths')).toBeInTheDocument();
65
- expect(queryByText('Show credentials')).toBeInTheDocument();
62
+ expect(queryByText('Details')).toBeInTheDocument();
63
+ expect(queryByText('Smart proxies')).toBeInTheDocument();
64
+ expect(queryByText('URL and subpaths')).toBeInTheDocument();
65
+ expect(queryByText('Credentials')).toBeInTheDocument();
66
66
  });
67
- const showSmartProxyButton = queryByText('Show smart proxies');
67
+ const showSmartProxyButton = queryByText('Smart proxies');
68
68
  fireEvent.click(showSmartProxyButton);
69
69
  await patientlyWaitFor(() => {
70
70
  expect(queryByText('test_acs')).toBeInTheDocument();
71
- expect(queryByText('Show details')).toBeInTheDocument();
72
- expect(queryByText('Hide smart proxies')).toBeInTheDocument();
71
+ expect(queryByText('Details')).toBeInTheDocument();
72
+ expect(queryByText('Smart proxies')).toBeInTheDocument();
73
73
  expect(queryByText('centos7-katello-devel-stable.example.com')).toBeInTheDocument();
74
- expect(queryByText('Show URL and subpaths')).toBeInTheDocument();
75
- expect(queryByText('Show credentials')).toBeInTheDocument();
74
+ expect(queryByLabelText('httpProxyTitle')).toBeInTheDocument();
75
+ expect(queryByText('URL and subpaths')).toBeInTheDocument();
76
+ expect(queryByText('Credentials')).toBeInTheDocument();
76
77
  });
77
78
 
78
- const showURLSubpathsButton = queryByText('Show URL and subpaths');
79
+ const showURLSubpathsButton = queryByText('URL and subpaths');
79
80
  fireEvent.click(showURLSubpathsButton);
80
81
  await patientlyWaitFor(() => {
81
82
  expect(queryByText('test_acs')).toBeInTheDocument();
82
- expect(queryByText('Show details')).toBeInTheDocument();
83
- expect(queryByText('Show smart proxies')).toBeInTheDocument();
84
- expect(queryByText('Hide URL and subpaths')).toBeInTheDocument();
83
+ expect(queryByText('Details')).toBeInTheDocument();
84
+ expect(queryByText('Smart proxies')).toBeInTheDocument();
85
+ expect(queryByText('URL and subpaths')).toBeInTheDocument();
85
86
  expect(queryByText('https://fedorapeople.org/groups/katello/fakerepos/')).toBeInTheDocument();
86
87
  expect(queryByText('zoo/, zoo2/, zoo3/, zoo4/, zoo5/')).toBeInTheDocument();
87
- expect(queryByText('Show credentials')).toBeInTheDocument();
88
+ expect(queryByText('Credentials')).toBeInTheDocument();
88
89
  });
89
90
 
90
- const showCredentialButton = queryByText('Show credentials');
91
+ const showCredentialButton = queryByText('Credentials');
91
92
  fireEvent.click(showCredentialButton);
92
93
  await patientlyWaitFor(() => {
93
94
  expect(queryByText('test_acs')).toBeInTheDocument();
94
- expect(queryByText('Show details')).toBeInTheDocument();
95
- expect(queryByText('Show smart proxies')).toBeInTheDocument();
96
- expect(queryByText('Show URL and subpaths')).toBeInTheDocument();
97
- expect(queryByText('Hide credentials')).toBeInTheDocument();
95
+ expect(queryByText('Details')).toBeInTheDocument();
96
+ expect(queryByText('Smart proxies')).toBeInTheDocument();
97
+ expect(queryByText('URL and subpaths')).toBeInTheDocument();
98
+ expect(queryByText('Credentials')).toBeInTheDocument();
98
99
  expect(queryByText('Verify SSL')).toBeInTheDocument();
99
- expect(queryByText('false')).toBeInTheDocument();
100
+ expect(queryAllByText('false')[0]).toBeInTheDocument();
101
+ expect(queryAllByText('false')[1]).toBeInTheDocument();
100
102
  expect(queryByText('SSL CA certificate')).toBeInTheDocument();
101
103
  expect(queryAllByText('N/A')[0]).toBeInTheDocument();
104
+ expect(queryByText('true')).not.toBeInTheDocument();
102
105
  });
103
106
 
104
107
  assertNockRequest(acsDetailsScope, done);