hammer_cli_katello 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. checksums.yaml +4 -4
  2. data/lib/hammer_cli_katello/acs.rb +82 -0
  3. data/lib/hammer_cli_katello/activation_key.rb +8 -2
  4. data/lib/hammer_cli_katello/content_export.rb +39 -0
  5. data/lib/hammer_cli_katello/content_export_helper.rb +64 -6
  6. data/lib/hammer_cli_katello/host_subscription.rb +32 -0
  7. data/lib/hammer_cli_katello/organization.rb +4 -0
  8. data/lib/hammer_cli_katello/repository.rb +1 -1
  9. data/lib/hammer_cli_katello/simple_content_access.rb +10 -0
  10. data/lib/hammer_cli_katello/version.rb +1 -1
  11. data/lib/hammer_cli_katello.rb +5 -0
  12. data/test/data/2.5/foreman_api.json +1 -0
  13. data/test/data/3.0/foreman_api.json +1 -0
  14. data/test/data/3.10/foreman_api.json +1 -0
  15. data/test/data/3.11/foreman_api.json +1 -0
  16. data/test/data/3.12/foreman_api.json +1 -0
  17. data/test/data/3.13/foreman_api.json +1 -0
  18. data/test/data/3.14/foreman_api.json +1 -0
  19. data/test/data/3.15/foreman_api.json +1 -0
  20. data/test/data/3.16/foreman_api.json +1 -0
  21. data/test/data/3.17/foreman_api.json +1 -0
  22. data/test/data/3.18/foreman_api.json +1 -0
  23. data/test/data/3.19/foreman_api.json +1 -0
  24. data/test/data/3.2/foreman_api.json +1 -0
  25. data/test/data/3.4/foreman_api.json +1 -0
  26. data/test/data/3.5/foreman_api.json +1 -0
  27. data/test/data/3.6/foreman_api.json +1 -0
  28. data/test/data/3.7/foreman_api.json +1 -0
  29. data/test/data/3.8/foreman_api.json +1 -0
  30. data/test/data/3.9/foreman_api.json +1 -0
  31. data/test/data/4.0/foreman_api.json +1 -0
  32. data/test/data/4.1/foreman_api.json +1 -0
  33. data/test/data/4.3/foreman_api.json +1 -0
  34. data/test/data/4.4/foreman_api.json +1 -0
  35. data/test/data/4.5/foreman_api.json +1 -0
  36. data/test/data/4.6/foreman_api.json +1 -0
  37. data/test/data/Readme.md +5 -0
  38. data/test/functional/acs/create_test.rb +27 -0
  39. data/test/functional/acs/delete_test.rb +13 -0
  40. data/test/functional/acs/info_test.rb +94 -0
  41. data/test/functional/acs/list_test.rb +62 -0
  42. data/test/functional/acs/update_test.rb +23 -0
  43. data/test/functional/activation_key/add_host_collection_test.rb +62 -0
  44. data/test/functional/activation_key/content_override_test.rb +92 -0
  45. data/test/functional/activation_key/create_test.rb +33 -0
  46. data/test/functional/activation_key/data/activation_key.json +17 -0
  47. data/test/functional/activation_key/info_test.rb +29 -0
  48. data/test/functional/activation_key/list_test.rb +68 -0
  49. data/test/functional/activation_key/product_content_test.rb +23 -0
  50. data/test/functional/activation_key/remove_host_collection_test.rb +62 -0
  51. data/test/functional/activation_key/subscriptions_test.rb +74 -0
  52. data/test/functional/activation_key/update_test.rb +26 -0
  53. data/test/functional/apipie_helper_test.rb +31 -0
  54. data/test/functional/capsule/capsule_helpers.rb +13 -0
  55. data/test/functional/capsule/content/add_lifecycle_environment_test.rb +40 -0
  56. data/test/functional/capsule/content/cancel_synchronization_test.rb +42 -0
  57. data/test/functional/capsule/content/capsule_content_helpers.rb +24 -0
  58. data/test/functional/capsule/content/data/library_env.json +47 -0
  59. data/test/functional/capsule/content/data/sync_status.json +6 -0
  60. data/test/functional/capsule/content/data/sync_tasks.json +62 -0
  61. data/test/functional/capsule/content/info_test.rb +61 -0
  62. data/test/functional/capsule/content/lifecycle_environments_test.rb +19 -0
  63. data/test/functional/capsule/content/remove_lifecycle_environment_test.rb +40 -0
  64. data/test/functional/capsule/content/synchronization_status_test.rb +107 -0
  65. data/test/functional/capsule/info_test.rb +25 -0
  66. data/test/functional/capsule/list_test.rb +24 -0
  67. data/test/functional/content_credentials/create_test.rb +32 -0
  68. data/test/functional/content_credentials/data/test_cert.json +43 -0
  69. data/test/functional/content_credentials/info_test.rb +50 -0
  70. data/test/functional/content_credentials/list_test.rb +66 -0
  71. data/test/functional/content_export/complete/library_test.rb +155 -0
  72. data/test/functional/content_export/complete/repository_test.rb +226 -0
  73. data/test/functional/content_export/complete/version_test.rb +297 -0
  74. data/test/functional/content_export/content_export_helpers.rb +33 -0
  75. data/test/functional/content_export/generate_listing_test.rb +62 -0
  76. data/test/functional/content_export/generate_metadata_test.rb +64 -0
  77. data/test/functional/content_export/incremental/library_test.rb +172 -0
  78. data/test/functional/content_export/incremental/repository_test.rb +212 -0
  79. data/test/functional/content_export/incremental/version_test.rb +268 -0
  80. data/test/functional/content_export/list_test.rb +64 -0
  81. data/test/functional/content_import/library_test.rb +85 -0
  82. data/test/functional/content_import/list_test.rb +65 -0
  83. data/test/functional/content_import/metadata.json +1 -0
  84. data/test/functional/content_import/version_test.rb +85 -0
  85. data/test/functional/content_units/info_test.rb +29 -0
  86. data/test/functional/content_units/list_test.rb +106 -0
  87. data/test/functional/content_view/add_content_view_version_test.rb +88 -0
  88. data/test/functional/content_view/add_repository_test.rb +21 -0
  89. data/test/functional/content_view/component/add_test.rb +177 -0
  90. data/test/functional/content_view/component/list_test.rb +55 -0
  91. data/test/functional/content_view/component/remove_test.rb +107 -0
  92. data/test/functional/content_view/component/update_test.rb +134 -0
  93. data/test/functional/content_view/content_view_helpers.rb +20 -0
  94. data/test/functional/content_view/copy_test.rb +53 -0
  95. data/test/functional/content_view/create_test.rb +34 -0
  96. data/test/functional/content_view/delete_test.rb +62 -0
  97. data/test/functional/content_view/filter/create_test.rb +57 -0
  98. data/test/functional/content_view/filter/delete_test.rb +90 -0
  99. data/test/functional/content_view/filter/info_test.rb +89 -0
  100. data/test/functional/content_view/filter/list_test.rb +98 -0
  101. data/test/functional/content_view/filter/update_test.rb +91 -0
  102. data/test/functional/content_view/list_test.rb +68 -0
  103. data/test/functional/content_view/publish_test.rb +24 -0
  104. data/test/functional/content_view/purge_test.rb +97 -0
  105. data/test/functional/content_view/remove_content_view_version_test.rb +88 -0
  106. data/test/functional/content_view/remove_test.rb +79 -0
  107. data/test/functional/content_view/update_test.rb +53 -0
  108. data/test/functional/content_view/version/incremental_update_test.rb +108 -0
  109. data/test/functional/content_view/version/list_test.rb +44 -0
  110. data/test/functional/content_view/version/promote_test.rb +75 -0
  111. data/test/functional/content_view/version/republish_repositories_test.rb +34 -0
  112. data/test/functional/content_view/version/update_test.rb +48 -0
  113. data/test/functional/erratum/erratum_helpers.rb +91 -0
  114. data/test/functional/erratum/info_test.rb +29 -0
  115. data/test/functional/erratum/list_test.rb +108 -0
  116. data/test/functional/file/file_helpers.rb +13 -0
  117. data/test/functional/file/info_test.rb +162 -0
  118. data/test/functional/file/list_test.rb +112 -0
  119. data/test/functional/filter_rule/create_test.rb +99 -0
  120. data/test/functional/filter_rule/delete_test.rb +104 -0
  121. data/test/functional/filter_rule/filter_rule_helpers.rb +12 -0
  122. data/test/functional/filter_rule/info_test.rb +104 -0
  123. data/test/functional/filter_rule/list_test.rb +91 -0
  124. data/test/functional/filter_rule/update_test.rb +104 -0
  125. data/test/functional/host/errata/apply_test.rb +45 -0
  126. data/test/functional/host/errata/info_test.rb +27 -0
  127. data/test/functional/host/errata/list_test.rb +49 -0
  128. data/test/functional/host/errata/recalculate_test.rb +26 -0
  129. data/test/functional/host/extensions/create_test.rb +95 -0
  130. data/test/functional/host/extensions/data/host.json +320 -0
  131. data/test/functional/host/extensions/data/host_list.json +117 -0
  132. data/test/functional/host/extensions/info_test.rb +35 -0
  133. data/test/functional/host/extensions/list_test.rb +21 -0
  134. data/test/functional/host/extensions/update_test.rb +70 -0
  135. data/test/functional/host/host_helpers.rb +8 -0
  136. data/test/functional/host/subscription/attach_test.rb +54 -0
  137. data/test/functional/host/subscription/auto_attach_test.rb +35 -0
  138. data/test/functional/host/subscription/content_override_test.rb +96 -0
  139. data/test/functional/host/subscription/enabled_repositories_test.rb +39 -0
  140. data/test/functional/host/subscription/product_content_test.rb +27 -0
  141. data/test/functional/host/subscription/register_test.rb +53 -0
  142. data/test/functional/host/subscription/remove_test.rb +52 -0
  143. data/test/functional/host/subscription/unregister_test.rb +37 -0
  144. data/test/functional/host/traces/list_test.rb +37 -0
  145. data/test/functional/host/traces/resolve_test.rb +31 -0
  146. data/test/functional/host_collection/add_host_test.rb +90 -0
  147. data/test/functional/host_collection/content_api_expectations.rb +35 -0
  148. data/test/functional/host_collection/content_install_test.rb +62 -0
  149. data/test/functional/host_collection/content_remove_test.rb +37 -0
  150. data/test/functional/host_collection/content_update_test.rb +37 -0
  151. data/test/functional/host_collection/copy_test.rb +64 -0
  152. data/test/functional/host_collection/create_test.rb +54 -0
  153. data/test/functional/host_collection/delete_test.rb +57 -0
  154. data/test/functional/host_collection/hosts_test.rb +39 -0
  155. data/test/functional/host_collection/info_test.rb +57 -0
  156. data/test/functional/host_collection/list_test.rb +63 -0
  157. data/test/functional/host_collection/remove_host_test.rb +90 -0
  158. data/test/functional/host_collection/update_test.rb +57 -0
  159. data/test/functional/hostgroup/create_test.rb +112 -0
  160. data/test/functional/hostgroup/data/hostgroup.json +50 -0
  161. data/test/functional/hostgroup/info_test.rb +33 -0
  162. data/test/functional/hostgroup/update_test.rb +120 -0
  163. data/test/functional/lifecycle_environment/create_test.rb +14 -0
  164. data/test/functional/lifecycle_environment/lifecycle_environment_helpers.rb +18 -0
  165. data/test/functional/lifecycle_environment/list_test.rb +38 -0
  166. data/test/functional/lifecycle_environment/update_test.rb +14 -0
  167. data/test/functional/local_helper_test.rb +30 -0
  168. data/test/functional/module_stream/info_test.rb +58 -0
  169. data/test/functional/module_stream/list_test.rb +53 -0
  170. data/test/functional/organization/cdn_configuration_test.rb +45 -0
  171. data/test/functional/organization/delete_test.rb +26 -0
  172. data/test/functional/organization/info_test.rb +45 -0
  173. data/test/functional/organization/organization_helpers.rb +10 -0
  174. data/test/functional/package/list_test.rb +160 -0
  175. data/test/functional/package_group/list_test.rb +38 -0
  176. data/test/functional/ping_test.rb +61 -0
  177. data/test/functional/product/create_test.rb +54 -0
  178. data/test/functional/product/delete_test.rb +41 -0
  179. data/test/functional/product/info_test.rb +33 -0
  180. data/test/functional/product/list_test.rb +58 -0
  181. data/test/functional/product/product_helpers.rb +24 -0
  182. data/test/functional/product/remove_sync_plan_test.rb +35 -0
  183. data/test/functional/product/set_sync_plan_test.rb +49 -0
  184. data/test/functional/product/update_proxy.rb +48 -0
  185. data/test/functional/product/update_test.rb +46 -0
  186. data/test/functional/repository/create_test.rb +21 -0
  187. data/test/functional/repository/delete_test.rb +95 -0
  188. data/test/functional/repository/info_test.rb +156 -0
  189. data/test/functional/repository/list_test.rb +68 -0
  190. data/test/functional/repository/reclaim_space_test.rb +105 -0
  191. data/test/functional/repository/remove_content_test.rb +108 -0
  192. data/test/functional/repository/repository_helpers.rb +18 -0
  193. data/test/functional/repository/republish_test.rb +37 -0
  194. data/test/functional/repository/synchronize_test.rb +57 -0
  195. data/test/functional/repository/update_test.rb +150 -0
  196. data/test/functional/repository/upload_test.rb +368 -0
  197. data/test/functional/repository_set/available_repositories_test.rb +18 -0
  198. data/test/functional/repository_set/disable_test.rb +48 -0
  199. data/test/functional/repository_set/enable_test.rb +42 -0
  200. data/test/functional/repository_set/info_test.rb +17 -0
  201. data/test/functional/repository_set/list_test.rb +18 -0
  202. data/test/functional/repository_set/repository_set_helpers.rb +20 -0
  203. data/test/functional/search_helpers.rb +17 -0
  204. data/test/functional/simple_content_access/disable_test.rb +48 -0
  205. data/test/functional/simple_content_access/enable_test.rb +46 -0
  206. data/test/functional/simple_content_access/status_test.rb +29 -0
  207. data/test/functional/srpm/list_test.rb +92 -0
  208. data/test/functional/subscription/list_test.rb +86 -0
  209. data/test/functional/sync_plan/create_test.rb +60 -0
  210. data/test/functional/sync_plan/delete_test.rb +46 -0
  211. data/test/functional/sync_plan/info_test.rb +37 -0
  212. data/test/functional/sync_plan/list_test.rb +31 -0
  213. data/test/functional/sync_plan/sync_plan_helpers.rb +8 -0
  214. data/test/functional/sync_plan/update_test.rb +44 -0
  215. data/test/functional/test_helper.rb +24 -0
  216. data/test/task_helper.rb +7 -0
  217. data/test/test_helper.rb +38 -0
  218. data/test/unit/id_name_options_validator_test.rb +96 -0
  219. data/test/unit/id_resolver_test.rb +58 -0
  220. data/test/unit/messages_test.rb +7 -0
  221. data/test/unit/search_options_creators_test.rb +145 -0
  222. metadata +425 -4
@@ -0,0 +1,91 @@
1
+ require File.join(File.dirname(__FILE__), '../../test_helper')
2
+ require File.join(File.dirname(__FILE__), '../content_view_helpers')
3
+ require File.join(File.dirname(__FILE__), '../../organization/organization_helpers')
4
+
5
+ module HammerCLIKatello
6
+ describe 'Filter::UpdateCommand' do
7
+ include ContentViewHelpers
8
+ include OrganizationHelpers
9
+
10
+ before do
11
+ @cmd = %w(content-view filter update)
12
+ end
13
+
14
+ it 'accepts filter id' do
15
+ params = ['--id=1', '--new-name=valis']
16
+
17
+ api_expects(:content_view_filters, :update) do |par|
18
+ par['id'] == 1 && par['name'] == 'valis'
19
+ end
20
+
21
+ run_cmd(@cmd + params)
22
+ end
23
+
24
+ it 'accepts filter name, content view name, description , and org name' do
25
+ params = ['--name=scanner', '--content-view=darkly', '--organization=pkd', '--new-name=ubik',
26
+ '--description=zoo']
27
+
28
+ expect_organization_search('pkd', 1)
29
+ expect_content_view_search(1, 'darkly', 1)
30
+
31
+ ex = api_expects(:content_view_filters, :index, 'Content view filters list') do |par|
32
+ par['content_view_id'] == 1 && par['name'] == 'scanner'
33
+ end
34
+ ex.returns(index_response([{'id' => '1'}]))
35
+
36
+ api_expects(:content_view_filters, :update) do |par|
37
+ par['id'] == '1' && par['name'] == 'ubik' && par['description'] == 'zoo'
38
+ end
39
+
40
+ run_cmd(@cmd + params)
41
+ end
42
+
43
+ it 'accepts filter name, content view name, and org label' do
44
+ params = ['--name=scanner', '--content-view=darkly',
45
+ '--organization-label=pkd', '--new-name=ubik']
46
+
47
+ expect_organization_search('pkd', 1, field: 'label')
48
+ expect_content_view_search(1, 'darkly', 1)
49
+
50
+ ex = api_expects(:content_view_filters, :index, 'Content view filters list') do |par|
51
+ par['content_view_id'] == 1 && par['name'] == 'scanner'
52
+ end
53
+ ex.returns(index_response([{'id' => '1'}]))
54
+
55
+ api_expects(:content_view_filters, :update) do |par|
56
+ par['id'] == '1' && par['name'] == 'ubik'
57
+ end
58
+
59
+ run_cmd(@cmd + params)
60
+ end
61
+
62
+ it 'accepts filter name, content view name, and org id' do
63
+ params = ['--name=scanner', '--content-view=darkly', '--organization-id=1', '--new-name=ubik']
64
+
65
+ expect_content_view_search('1', 'darkly', 1)
66
+
67
+ ex = api_expects(:content_view_filters, :index, 'Content view filters list') do |par|
68
+ par['content_view_id'] == 1 && par['name'] == 'scanner'
69
+ end
70
+ ex.returns(index_response([{'id' => '1'}]))
71
+
72
+ api_expects(:content_view_filters, :update) do |par|
73
+ par['id'] == '1' && par['name'] == 'ubik'
74
+ end
75
+
76
+ run_cmd(@cmd + params)
77
+ end
78
+
79
+ it 'requires content view name or id if name is supplied' do
80
+ params = ["--name=high-castle"]
81
+ expected_result = usage_error_result(
82
+ @cmd,
83
+ 'At least one of options --content-view-id, --content-view is required.',
84
+ 'Could not update the filter'
85
+ )
86
+ api_expects_no_call
87
+ result = run_cmd(@cmd + params)
88
+ assert_cmd(expected_result, result)
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,68 @@
1
+ require File.join(File.dirname(__FILE__), '../test_helper')
2
+ require File.join(File.dirname(__FILE__), '../lifecycle_environment/lifecycle_environment_helpers')
3
+
4
+ describe 'listing content-views' do
5
+ include LifecycleEnvironmentHelpers
6
+
7
+ before do
8
+ @cmd = %w(content-view list)
9
+ end
10
+
11
+ let(:org_id) { 1 }
12
+ let(:lifecycle_env_id) { 1 }
13
+ let(:empty_response) do
14
+ {
15
+ "total" => 0,
16
+ "subtotal" => 0,
17
+ "page" => "1",
18
+ "per_page" => "1000",
19
+ "error" => nil,
20
+ "search" => nil,
21
+ "sort" => {
22
+ "by" => nil,
23
+ "order" => nil
24
+ },
25
+ "results" => []
26
+ }
27
+ end
28
+
29
+ it "lists an organizations content-views" do
30
+ params = ["--organization-id=#{org_id}"]
31
+
32
+ ex = api_expects(:content_views, :index, 'Organizations content-views list') do |par|
33
+ par['organization_id'] == org_id && par['page'] == 1 &&
34
+ par['per_page'] == 1000
35
+ end
36
+
37
+ ex.returns(empty_response)
38
+ expected_result = success_result(
39
+ "----------------|------|-------|-----------|----------------|---------------
40
+ CONTENT VIEW ID | NAME | LABEL | COMPOSITE | LAST PUBLISHED | REPOSITORY IDS
41
+ ----------------|------|-------|-----------|----------------|---------------
42
+ ")
43
+
44
+ result = run_cmd(@cmd + params)
45
+ assert_cmd(expected_result, result)
46
+ end
47
+
48
+ it "lists the content-views belonging to a lifecycle-environment by name" do
49
+ params = ["--organization-id=#{org_id}", '--lifecycle-environment=test']
50
+
51
+ expect_lifecycle_environment_search(org_id, 'test', lifecycle_env_id)
52
+
53
+ ex = api_expects(:content_views, :index, 'lifecycles content-views list') do |par|
54
+ par['organization_id'] == org_id && par['page'] == 1 &&
55
+ par['per_page'] == 1000
56
+ end
57
+
58
+ ex.returns(empty_response)
59
+ expected_result = success_result(
60
+ "----------------|------|-------|-----------|----------------|---------------
61
+ CONTENT VIEW ID | NAME | LABEL | COMPOSITE | LAST PUBLISHED | REPOSITORY IDS
62
+ ----------------|------|-------|-----------|----------------|---------------
63
+ ")
64
+
65
+ result = run_cmd(@cmd + params)
66
+ assert_cmd(expected_result, result)
67
+ end
68
+ end
@@ -0,0 +1,24 @@
1
+ require_relative '../test_helper'
2
+ require 'hammer_cli_katello/content_view'
3
+
4
+ module HammerCLIKatello
5
+ describe ContentView do
6
+ it 'allows major & minor' do
7
+ ex = api_expects(:organizations, :index) do |p|
8
+ p[:search] == "name = \"org1\""
9
+ end
10
+ ex.returns(index_response([{'id' => 1}]))
11
+
12
+ ex = api_expects(:content_views, :index) do |p|
13
+ p['name'] == 'cv' && p['organization_id'] == 1
14
+ end
15
+ ex.returns(index_response([{'id' => 3}]))
16
+
17
+ api_expects(:content_views, :publish) do |p|
18
+ p['id'] == 3 && p['major'] == 5 && p['minor'] == 1
19
+ end
20
+
21
+ run_cmd(%w(content-view publish --major 5 --minor 1 --organization org1 --name cv --async))
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,97 @@
1
+ require_relative '../test_helper'
2
+ require_relative '../organization/organization_helpers'
3
+ require_relative '../content_view/content_view_helpers'
4
+ require 'hammer_cli_katello/content_view'
5
+ require 'hammer_cli_katello/content_view_purge'
6
+
7
+ module HammerCLIKatello
8
+ describe ContentViewPurgeCommand do
9
+ include ForemanTaskHelpers
10
+
11
+ let(:versions) do
12
+ {'results' => [
13
+ {"id" => 23,
14
+ "version" => "1.0",
15
+ "content_view" => {"id" => 7, "name" => "test cv"},
16
+ "composite_content_views" => [{"id" => 14, "name" => "comp_view"}],
17
+ "composite_content_view_versions" => [],
18
+ "environments" => [{"id" => 1, "name" => "Library"}]},
19
+ {"id" => 34,
20
+ "version" => "2.0",
21
+ "content_view" => {"id" => 7, "name" => "test cv"},
22
+ "composite_content_views" => [],
23
+ "composite_content_view_versions" => [],
24
+ "environments" => []},
25
+ {"id" => 45,
26
+ "version" => "2.10",
27
+ "content_view" => {"id" => 7, "name" => "test cv"},
28
+ "composite_content_views" => [],
29
+ "composite_content_view_versions" => [],
30
+ "environments" => [{"id" => 1, "name" => "Library"}]},
31
+ {"id" => 56,
32
+ "version" => "3.0",
33
+ "content_view" => {"id" => 7, "name" => "test cv"},
34
+ "composite_content_views" => [{"id" => 14, "name" => "comp_view"}],
35
+ "composite_content_view_versions" => [],
36
+ "environments" => []},
37
+ {"id" => 67,
38
+ "version" => "7.0",
39
+ "content_view" => {"id" => 7, "name" => "test cv"},
40
+ "composite_content_views" => [],
41
+ "composite_content_view_versions" => [],
42
+ "environments" => []},
43
+ {"id" => 78,
44
+ "version" => "2.0",
45
+ "content_view" => {"id" => 7, "name" => "test cv"},
46
+ "composite_content_views" => [],
47
+ "composite_content_view_versions" => [{"id" => 87, "version" => "1.0"}],
48
+ "environments" => []}
49
+ ]}
50
+ end
51
+
52
+ it 'fails gracefully if count <= 0' do
53
+ api_expects_no_call
54
+
55
+ r = run_cmd(%w(content-view purge --id 2 --count -1))
56
+ assert(r.err.include?('Invalid value for --count option'), 'Incorrect error message')
57
+ end
58
+
59
+ it 'fails gracefully when there are no versions to delete' do
60
+ ex = api_expects(:content_view_versions, :index)
61
+ ex = ex.with_params("content_view_id" => '2')
62
+ ex.returns(versions)
63
+
64
+ r = run_cmd(%w(content-view purge --id 2 --count 3))
65
+ assert(r.err.include?('No versions to delete.'), 'Incorrect error message')
66
+ end
67
+
68
+ it 'only deletes unassociated versions' do
69
+ ex = api_expects(:content_view_versions, :index)
70
+ ex = ex.with_params("content_view_id" => '2')
71
+ ex.returns(versions)
72
+
73
+ [34, 67].each do |version_id|
74
+ ex = api_expects(:content_view_versions, :destroy)
75
+ ex = ex.with_params("id" => version_id)
76
+ ex.returns('id' => '3', 'state' => 'stopped')
77
+ expect_foreman_task('3')
78
+ end
79
+
80
+ run_cmd(%w(content-view purge --id 2 --count 0))
81
+ end
82
+
83
+ it 'allows for async purge of versions' do
84
+ ex = api_expects(:content_view_versions, :index)
85
+ ex = ex.with_params("content_view_id" => '2')
86
+ ex.returns(versions)
87
+
88
+ [34, 67].each do |version_id|
89
+ ex = api_expects(:content_view_versions, :destroy)
90
+ ex = ex.with_params("id" => version_id)
91
+ ex.returns('id' => '3')
92
+ end
93
+
94
+ run_cmd(%w(content-view purge --id 2 --count 0 --async))
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,88 @@
1
+ require_relative '../test_helper'
2
+ require_relative '../organization/organization_helpers'
3
+ require_relative '../content_view/content_view_helpers'
4
+ require 'hammer_cli_katello/content_view'
5
+
6
+ module HammerCLIKatello
7
+ describe ContentView::RemoveContentViewVersionCommand do
8
+ include OrganizationHelpers
9
+ include ContentViewHelpers
10
+
11
+ it 'allows minimal options' do
12
+ ex = api_expects(:content_views, :show) do |p|
13
+ p[:id] == '1'
14
+ end
15
+ ex.returns('id' => 1, 'component_ids' => [1, 3, 6])
16
+ api_expects(:content_views, :update) do |p|
17
+ p['id'] == '1' && p['component_ids'] == %w(1 3)
18
+ end
19
+ run_cmd(%w(content-view remove-version --id 1 --content-view-version-id 6))
20
+ end
21
+
22
+ it 'resolves content view version ID' do
23
+ ex = api_expects(:content_view_versions, :index) do |p|
24
+ p['content_view_id'] == 3 && p['version'] == '2.1'
25
+ end
26
+ ex.returns(index_response([{'id' => 6}]))
27
+ ex.returns('id' => 1, 'component_ids' => [1, 3, 6])
28
+ ex = api_expects(:content_views, :show) do |p|
29
+ p[:id] == '1'
30
+ end
31
+ ex.returns('id' => 1, 'component_ids' => [1, 3])
32
+ api_expects(:content_views, :update) do |p|
33
+ p['id'] == '1' && p['component_ids'] == %w(1 3)
34
+ end
35
+ run_cmd(%w(content-view remove-version --id 1 --content-view-id 3 --content-view-version 2.1))
36
+ end
37
+
38
+ describe 'OrganizationOptions' do
39
+ it 'requires organization if content view name is supplied' do
40
+ api_expects_no_call
41
+ result = run_cmd(%w(content-view remove-version --name cv1))
42
+ assert(result.err[/--organization-id, --organization, --organization-label is required/],
43
+ "Organization option requirements are validated")
44
+ end
45
+
46
+ it 'allows organization id' do
47
+ expect_content_view_search('1', 'cv2', 2)
48
+ ex = api_expects(:content_views, :show) do |p|
49
+ p[:id] == 2
50
+ end
51
+ ex.returns('id' => 2, 'component_ids' => [1, 2, 3])
52
+ api_expects(:content_views, :update) do |p|
53
+ p['id'] == 2 && p['component_ids'] == %w(1 2)
54
+ end
55
+ run_cmd(%w(content-view remove-version --name cv2 --organization-id 1
56
+ --content-view-version-id 3))
57
+ end
58
+
59
+ it 'allows organization name' do
60
+ expect_organization_search('org1', 1)
61
+ expect_content_view_search(1, 'cv2', 2)
62
+ ex = api_expects(:content_views, :show) do |p|
63
+ p[:id] == 2
64
+ end
65
+ ex.returns('id' => 2, 'component_ids' => [1, 2, 3])
66
+ api_expects(:content_views, :update) do |p|
67
+ p['id'] == 2 && p['component_ids'] == %w(1 2)
68
+ end
69
+ run_cmd(%w(content-view remove-version --name cv2 --organization org1
70
+ --content-view-version-id 3))
71
+ end
72
+
73
+ it 'allows organization label' do
74
+ expect_organization_search('org1', 1, field: 'label')
75
+ expect_content_view_search(1, 'cv2', 2)
76
+ ex = api_expects(:content_views, :show) do |p|
77
+ p[:id] == 2
78
+ end
79
+ ex.returns('id' => 2, 'component_ids' => [1, 2, 3])
80
+ api_expects(:content_views, :update) do |p|
81
+ p['id'] == 2 && p['component_ids'] == %w(1 2)
82
+ end
83
+ run_cmd(%w(content-view remove-version --name cv2 --organization-label org1
84
+ --content-view-version-id 3))
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,79 @@
1
+ require_relative '../test_helper'
2
+ require 'hammer_cli_katello/content_view'
3
+
4
+ module HammerCLIKatello
5
+ describe ContentView::RemoveCommand do
6
+ include ForemanTaskHelpers
7
+
8
+ describe 'content view version options' do
9
+ it 'allows removing versions by ID' do
10
+ ex = api_expects(:content_views, :remove) do |p|
11
+ p['id'] == 1 && p['content_view_version_ids'] == %w(6 7 8)
12
+ end
13
+ ex.returns(id: '9')
14
+
15
+ expect_foreman_task('9')
16
+
17
+ run_cmd(%w(content-view remove --id 1 --content-view-version-ids 6,7,8))
18
+ end
19
+
20
+ it 'allows removing versions by version number' do
21
+ versions = %w(6.0 7.0 8.0)
22
+ ids = [6, 7, 8]
23
+
24
+ api_expects(:content_view_versions, :index).with_params(
25
+ 'search' => %(version = "#{versions.join('" or version = "')}"),
26
+ 'content_view_id' => 1
27
+ ).returns(index_response(ids.map { |v| { 'id' => v } }))
28
+
29
+ api_expects(:content_views, :remove).with_params(
30
+ 'id' => 1, 'content_view_version_ids' => ids
31
+ ).returns(id: '9')
32
+
33
+ expect_foreman_task('9')
34
+
35
+ run_cmd(%w(content-view remove --id 1 --content-view-versions 6.0,7.0,8.0))
36
+ end
37
+ end
38
+
39
+ describe 'environment options' do
40
+ it 'allows removing versions by ID' do
41
+ ex = api_expects(:content_views, :remove) do |p|
42
+ p['id'] == 1 && p['environment_ids'] == %w(6 7 8)
43
+ end
44
+ ex.returns(id: '9')
45
+
46
+ expect_foreman_task('9')
47
+
48
+ run_cmd(%w(content-view remove --id 1 --environment-ids 6,7,8))
49
+ end
50
+
51
+ it 'requires organization options when removing environments by name' do
52
+ api_expects_no_call
53
+
54
+ run_cmd(%w(content-view remove --id 1 --environments env6,env7,env8))
55
+ end
56
+
57
+ it 'allows removing environments by name' do
58
+ environment_ids = [6, 7, 8]
59
+ all_environment_ids = [3, 4, 5, 6, 7, 8]
60
+
61
+ ex = api_expects(:lifecycle_environments, :index) do |p|
62
+ p['organization_id'] == '1'
63
+ end
64
+ ex.returns(index_response(all_environment_ids.map do |id|
65
+ {'id' => id, 'name' => "env#{id}"}
66
+ end))
67
+
68
+ ex = api_expects(:content_views, :remove) do |p|
69
+ p['id'] == 1 && p['environment_ids'] == environment_ids
70
+ end
71
+ ex.returns(id: '9')
72
+
73
+ expect_foreman_task('9')
74
+
75
+ run_cmd(%w(content-view remove --id 1 --environments env6,env7,env8 --organization-id 1))
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,53 @@
1
+ require_relative '../test_helper'
2
+ require_relative '../organization/organization_helpers'
3
+ require_relative '../content_view/content_view_helpers'
4
+ require 'hammer_cli_katello/content_view'
5
+
6
+ module HammerCLIKatello
7
+ describe ContentView::UpdateCommand do
8
+ include OrganizationHelpers
9
+ include ContentViewHelpers
10
+
11
+ it 'allows minimal options' do
12
+ api_expects(:content_views, :update) do |p|
13
+ p['id'] == 2
14
+ end
15
+ run_cmd(%w(content-view update --id 2))
16
+ end
17
+
18
+ describe 'OrganizationOptions' do
19
+ it 'requires organization if content view name is supplied' do
20
+ api_expects_no_call
21
+ result = run_cmd(%w(content-view update --name cv2))
22
+ assert(result.err[/--organization-id, --organization, --organization-label is required/],
23
+ "Organization option requirements are validated")
24
+ end
25
+
26
+ it 'allows organization id' do
27
+ expect_content_view_search('1', 'cv2', 2)
28
+ api_expects(:content_views, :update) do |p|
29
+ p['id'] == 2
30
+ end
31
+ run_cmd(%w(content-view update --name cv2 --organization-id 1))
32
+ end
33
+
34
+ it 'allows organization name' do
35
+ expect_organization_search('org1', 1)
36
+ expect_content_view_search(1, 'cv2', 2)
37
+ api_expects(:content_views, :update) do |p|
38
+ p['id'] == 2
39
+ end
40
+ run_cmd(%w(content-view update --name cv2 --organization org1))
41
+ end
42
+
43
+ it 'allows organization label' do
44
+ expect_organization_search('org1', 1, field: 'label')
45
+ expect_content_view_search(1, 'cv2', 2)
46
+ api_expects(:content_views, :update) do |p|
47
+ p['id'] == 2
48
+ end
49
+ run_cmd(%w(content-view update --name cv2 --organization-label org1))
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,108 @@
1
+ require File.join(File.dirname(__FILE__), '../../test_helper')
2
+ require File.join(File.dirname(__FILE__), '../../organization/organization_helpers')
3
+ require File.join(File.dirname(__FILE__),
4
+ '../../lifecycle_environment/lifecycle_environment_helpers')
5
+
6
+ describe 'content-view version incremental-update' do
7
+ include OrganizationHelpers
8
+ include LifecycleEnvironmentHelpers
9
+ include ForemanTaskHelpers
10
+
11
+ before do
12
+ @cmd = %w(content-view version incremental-update)
13
+ end
14
+
15
+ it "performs incremental update with no updates" do
16
+ params = ['--errata-ids=FOO2012', '--lifecycle-environment-ids=1,2,3',
17
+ '--content-view-version-id=5']
18
+
19
+ ex = api_expects(:content_view_versions, :incremental_update, 'Incremental Update') do |par|
20
+ par['update_hosts'].nil? &&
21
+ par[:content_view_version_environments][0][:environment_ids] == %w(1 2 3) &&
22
+ par[:content_view_version_environments][0][:content_view_version_id] == 5 &&
23
+ par['add_content']['errata_ids'] == ['FOO2012']
24
+ end
25
+ ex.returns('id' => '3', 'state' => 'stopped')
26
+
27
+ expect_foreman_task('3')
28
+
29
+ result = run_cmd(@cmd + params)
30
+ assert_equal(result.exit_code, 0)
31
+ end
32
+
33
+ it "performs incremental update with update all hosts" do
34
+ params = ['--update-all-hosts=true', '--errata-ids=FOO2012',
35
+ '--lifecycle-environment-ids=1,2,3', '--content-view-version-id=5']
36
+
37
+ ex = api_expects(:content_view_versions, :incremental_update, 'Incremental Update') do |par|
38
+ par['update_hosts']['included'][:search] == '' &&
39
+ par[:content_view_version_environments][0][:environment_ids] == %w(1 2 3) &&
40
+ par[:content_view_version_environments][0][:content_view_version_id] == 5 &&
41
+ par['add_content']['errata_ids'] == ['FOO2012']
42
+ end
43
+ ex.returns('id' => '3', 'state' => 'stopped')
44
+
45
+ expect_foreman_task('3')
46
+
47
+ result = run_cmd(@cmd + params)
48
+ assert_equal(result.exit_code, 0)
49
+ end
50
+
51
+ it "performs incremental update with no environment" do
52
+ params = ['--update-all-hosts=true', '--errata-ids=FOO2012', '--content-view-version-id=5']
53
+
54
+ ex = api_expects(:content_view_versions, :incremental_update, 'Incremental Update') do |par|
55
+ par['update_hosts']['included'][:search] == '' &&
56
+ par[:content_view_version_environments][0][:environment_ids].nil? &&
57
+ par[:content_view_version_environments][0][:content_view_version_id] == 5 &&
58
+ par['add_content']['errata_ids'] == ['FOO2012']
59
+ end
60
+ ex.returns('id' => '3', 'state' => 'stopped')
61
+
62
+ expect_foreman_task('3')
63
+
64
+ result = run_cmd(@cmd + params)
65
+ assert_equal(result.exit_code, 0)
66
+ end
67
+
68
+ it "performs incremental update with names" do
69
+ params = ['--update-all-hosts=true', '--errata-ids=FOO2012',
70
+ '--lifecycle-environments=trump,cruz,bernie',
71
+ '--content-view-version-id=5', '--organization=USA']
72
+
73
+ expect_organization_search('USA', 5)
74
+ expect_lifecycle_environments_request(5, [{'name' => 'trump', 'id' => 1},
75
+ {'name' => 'cruz', 'id' => 2},
76
+ {'name' => 'bernie', 'id' => 3}])
77
+
78
+ ex = api_expects(:content_view_versions, :incremental_update, 'Incremental Update') do |par|
79
+ par['update_hosts']['included'][:search] == '' &&
80
+ par[:content_view_version_environments][0][:environment_ids] == [1, 2, 3] &&
81
+ par[:content_view_version_environments][0][:content_view_version_id] == 5 &&
82
+ par['add_content']['errata_ids'] == ['FOO2012']
83
+ end
84
+ ex.returns('id' => '3', 'state' => 'stopped')
85
+
86
+ expect_foreman_task('3')
87
+
88
+ result = run_cmd(@cmd + params)
89
+ assert_equal(result.exit_code, 0)
90
+ end
91
+
92
+ it "performs incremental update with packages" do
93
+ params = ['--content-view-version-id=5', '--packages=bla', '--lifecycle-environment-ids=1']
94
+
95
+ expect_generic_search(
96
+ :packages, params: {search: "name = \"bla\""}, returns: {'id' => 15}
97
+ )
98
+
99
+ ex = api_expects(:content_view_versions, :incremental_update, 'Incremental Update') do |par|
100
+ par[:content_view_version_environments][0][:content_view_version_id] == 5 &&
101
+ par["add_content"]["package_ids"] == [15]
102
+ end
103
+ ex.returns('id' => '3', 'state' => 'stopped')
104
+ expect_foreman_task('3')
105
+ result = run_cmd(@cmd + params)
106
+ assert_equal(result.exit_code, 0)
107
+ end
108
+ end
@@ -0,0 +1,44 @@
1
+ require_relative '../../test_helper'
2
+ require 'hammer_cli_katello/content_view_version'
3
+
4
+ module HammerCLIKatello
5
+ describe ContentViewVersion::ListCommand do
6
+ it 'allows minimal options' do
7
+ api_expects(:content_view_versions, :index)
8
+
9
+ run_cmd(%w(content-view version list))
10
+ end
11
+
12
+ describe 'allows organization' do
13
+ it 'id' do
14
+ api_expects(:content_view_versions, :index) do |p|
15
+ p['organization_id'] == 1
16
+ end
17
+
18
+ run_cmd(%w(content-view version list --organization-id 1))
19
+ end
20
+
21
+ it 'name' do
22
+ api_expects(:organizations, :index) { |par| par[:search] == "name = \"org1\"" }
23
+ .at_least_once.returns(index_response([{'id' => 1}]))
24
+
25
+ api_expects(:content_view_versions, :index) do |p|
26
+ p['organization_id'] == 1
27
+ end
28
+
29
+ run_cmd(%w(content-view version list --organization org1))
30
+ end
31
+
32
+ it 'label' do
33
+ api_expects(:organizations, :index) { |par| par[:search] == "label = \"org1\"" }
34
+ .at_least_once.returns(index_response([{'id' => 1}]))
35
+
36
+ api_expects(:content_view_versions, :index) do |p|
37
+ p['organization_id'] == 1
38
+ end
39
+
40
+ run_cmd(%w(content-view version list --organization-label org1))
41
+ end
42
+ end
43
+ end
44
+ end