hammer_cli_katello 1.1.3 → 1.2.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 (198) hide show
  1. checksums.yaml +4 -4
  2. data/lib/hammer_cli_katello/foreman_search_options_creators.rb +0 -12
  3. data/lib/hammer_cli_katello/host_collection.rb +6 -0
  4. data/lib/hammer_cli_katello/host_errata.rb +1 -1
  5. data/lib/hammer_cli_katello/repository.rb +0 -27
  6. data/lib/hammer_cli_katello/version.rb +1 -1
  7. data/test/data/2.5/foreman_api.json +1 -0
  8. data/test/data/3.0/foreman_api.json +1 -0
  9. data/test/data/3.10/foreman_api.json +1 -0
  10. data/test/data/3.11/foreman_api.json +1 -0
  11. data/test/data/3.12/foreman_api.json +1 -0
  12. data/test/data/3.13/foreman_api.json +1 -0
  13. data/test/data/3.14/foreman_api.json +1 -0
  14. data/test/data/3.15/foreman_api.json +1 -0
  15. data/test/data/3.16/foreman_api.json +1 -0
  16. data/test/data/3.17/foreman_api.json +1 -0
  17. data/test/data/3.18/foreman_api.json +1 -0
  18. data/test/data/3.19/foreman_api.json +1 -0
  19. data/test/data/3.2/foreman_api.json +1 -0
  20. data/test/data/3.4/foreman_api.json +1 -0
  21. data/test/data/3.5/foreman_api.json +1 -0
  22. data/test/data/3.6/foreman_api.json +1 -0
  23. data/test/data/3.7/foreman_api.json +1 -0
  24. data/test/data/3.8/foreman_api.json +1 -0
  25. data/test/data/3.9/foreman_api.json +1 -0
  26. data/test/data/4.0/foreman_api.json +1 -0
  27. data/test/data/4.1/foreman_api.json +1 -0
  28. data/test/data/Readme.md +5 -0
  29. data/test/functional/activation_key/add_host_collection_test.rb +62 -0
  30. data/test/functional/activation_key/content_override_test.rb +92 -0
  31. data/test/functional/activation_key/create_test.rb +33 -0
  32. data/test/functional/activation_key/data/activation_key.json +17 -0
  33. data/test/functional/activation_key/info_test.rb +29 -0
  34. data/test/functional/activation_key/list_test.rb +68 -0
  35. data/test/functional/activation_key/product_content_test.rb +23 -0
  36. data/test/functional/activation_key/remove_host_collection_test.rb +62 -0
  37. data/test/functional/activation_key/subscriptions_test.rb +74 -0
  38. data/test/functional/activation_key/update_test.rb +26 -0
  39. data/test/functional/apipie_helper_test.rb +31 -0
  40. data/test/functional/capsule/capsule_helpers.rb +13 -0
  41. data/test/functional/capsule/content/add_lifecycle_environment_test.rb +40 -0
  42. data/test/functional/capsule/content/cancel_synchronization_test.rb +42 -0
  43. data/test/functional/capsule/content/capsule_content_helpers.rb +24 -0
  44. data/test/functional/capsule/content/data/library_env.json +47 -0
  45. data/test/functional/capsule/content/data/sync_status.json +6 -0
  46. data/test/functional/capsule/content/data/sync_tasks.json +62 -0
  47. data/test/functional/capsule/content/info_test.rb +61 -0
  48. data/test/functional/capsule/content/lifecycle_environments_test.rb +19 -0
  49. data/test/functional/capsule/content/remove_lifecycle_environment_test.rb +40 -0
  50. data/test/functional/capsule/content/synchronization_status_test.rb +107 -0
  51. data/test/functional/capsule/info_test.rb +25 -0
  52. data/test/functional/capsule/list_test.rb +24 -0
  53. data/test/functional/content_credentials/create_test.rb +32 -0
  54. data/test/functional/content_credentials/data/test_cert.json +43 -0
  55. data/test/functional/content_credentials/info_test.rb +50 -0
  56. data/test/functional/content_credentials/list_test.rb +66 -0
  57. data/test/functional/content_export/complete/library_test.rb +155 -0
  58. data/test/functional/content_export/complete/version_test.rb +252 -0
  59. data/test/functional/content_export/content_export_helpers.rb +26 -0
  60. data/test/functional/content_export/generate_metadata_test.rb +64 -0
  61. data/test/functional/content_export/incremental/library_test.rb +172 -0
  62. data/test/functional/content_export/incremental/version_test.rb +268 -0
  63. data/test/functional/content_export/list_test.rb +64 -0
  64. data/test/functional/content_import/library_test.rb +85 -0
  65. data/test/functional/content_import/list_test.rb +65 -0
  66. data/test/functional/content_import/metadata.json +1 -0
  67. data/test/functional/content_import/version_test.rb +85 -0
  68. data/test/functional/content_view/add_content_view_version_test.rb +88 -0
  69. data/test/functional/content_view/add_repository_test.rb +21 -0
  70. data/test/functional/content_view/component/add_test.rb +177 -0
  71. data/test/functional/content_view/component/list_test.rb +55 -0
  72. data/test/functional/content_view/component/remove_test.rb +107 -0
  73. data/test/functional/content_view/component/update_test.rb +134 -0
  74. data/test/functional/content_view/content_view_helpers.rb +20 -0
  75. data/test/functional/content_view/copy_test.rb +53 -0
  76. data/test/functional/content_view/create_test.rb +34 -0
  77. data/test/functional/content_view/delete_test.rb +62 -0
  78. data/test/functional/content_view/filter/create_test.rb +57 -0
  79. data/test/functional/content_view/filter/delete_test.rb +90 -0
  80. data/test/functional/content_view/filter/info_test.rb +89 -0
  81. data/test/functional/content_view/filter/list_test.rb +98 -0
  82. data/test/functional/content_view/filter/update_test.rb +91 -0
  83. data/test/functional/content_view/list_test.rb +68 -0
  84. data/test/functional/content_view/publish_test.rb +24 -0
  85. data/test/functional/content_view/purge_test.rb +97 -0
  86. data/test/functional/content_view/remove_content_view_version_test.rb +88 -0
  87. data/test/functional/content_view/remove_test.rb +79 -0
  88. data/test/functional/content_view/update_test.rb +53 -0
  89. data/test/functional/content_view/version/incremental_update_test.rb +108 -0
  90. data/test/functional/content_view/version/list_test.rb +44 -0
  91. data/test/functional/content_view/version/promote_test.rb +34 -0
  92. data/test/functional/content_view/version/republish_repositories_test.rb +34 -0
  93. data/test/functional/content_view/version/update_test.rb +48 -0
  94. data/test/functional/erratum/erratum_helpers.rb +91 -0
  95. data/test/functional/erratum/info_test.rb +29 -0
  96. data/test/functional/erratum/list_test.rb +108 -0
  97. data/test/functional/file/file_helpers.rb +13 -0
  98. data/test/functional/file/info_test.rb +162 -0
  99. data/test/functional/file/list_test.rb +112 -0
  100. data/test/functional/filter_rule/create_test.rb +99 -0
  101. data/test/functional/filter_rule/delete_test.rb +104 -0
  102. data/test/functional/filter_rule/filter_rule_helpers.rb +12 -0
  103. data/test/functional/filter_rule/info_test.rb +104 -0
  104. data/test/functional/filter_rule/list_test.rb +91 -0
  105. data/test/functional/filter_rule/update_test.rb +104 -0
  106. data/test/functional/host/errata/apply_test.rb +45 -0
  107. data/test/functional/host/errata/info_test.rb +27 -0
  108. data/test/functional/host/errata/list_test.rb +49 -0
  109. data/test/functional/host/errata/recalculate_test.rb +40 -0
  110. data/test/functional/host/extensions/create_test.rb +95 -0
  111. data/test/functional/host/extensions/data/host.json +320 -0
  112. data/test/functional/host/extensions/data/host_list.json +117 -0
  113. data/test/functional/host/extensions/info_test.rb +35 -0
  114. data/test/functional/host/extensions/list_test.rb +21 -0
  115. data/test/functional/host/extensions/update_test.rb +70 -0
  116. data/test/functional/host/host_helpers.rb +8 -0
  117. data/test/functional/host/subscription/attach_test.rb +54 -0
  118. data/test/functional/host/subscription/auto_attach_test.rb +35 -0
  119. data/test/functional/host/subscription/content_override_test.rb +96 -0
  120. data/test/functional/host/subscription/product_content_test.rb +27 -0
  121. data/test/functional/host/subscription/register_test.rb +53 -0
  122. data/test/functional/host/subscription/remove_test.rb +52 -0
  123. data/test/functional/host/subscription/unregister_test.rb +37 -0
  124. data/test/functional/host/traces/list_test.rb +37 -0
  125. data/test/functional/host/traces/resolve_test.rb +31 -0
  126. data/test/functional/host_collection/add_host_test.rb +90 -0
  127. data/test/functional/host_collection/content_api_expectations.rb +35 -0
  128. data/test/functional/host_collection/content_install_test.rb +62 -0
  129. data/test/functional/host_collection/content_remove_test.rb +37 -0
  130. data/test/functional/host_collection/content_update_test.rb +37 -0
  131. data/test/functional/host_collection/copy_test.rb +64 -0
  132. data/test/functional/host_collection/create_test.rb +54 -0
  133. data/test/functional/host_collection/delete_test.rb +57 -0
  134. data/test/functional/host_collection/hosts_test.rb +39 -0
  135. data/test/functional/host_collection/info_test.rb +57 -0
  136. data/test/functional/host_collection/list_test.rb +63 -0
  137. data/test/functional/host_collection/remove_host_test.rb +90 -0
  138. data/test/functional/host_collection/update_test.rb +57 -0
  139. data/test/functional/hostgroup/create_test.rb +112 -0
  140. data/test/functional/hostgroup/data/hostgroup.json +50 -0
  141. data/test/functional/hostgroup/info_test.rb +33 -0
  142. data/test/functional/hostgroup/update_test.rb +120 -0
  143. data/test/functional/lifecycle_environment/create_test.rb +14 -0
  144. data/test/functional/lifecycle_environment/lifecycle_environment_helpers.rb +18 -0
  145. data/test/functional/lifecycle_environment/list_test.rb +38 -0
  146. data/test/functional/lifecycle_environment/update_test.rb +14 -0
  147. data/test/functional/local_helper_test.rb +30 -0
  148. data/test/functional/module_stream/info_test.rb +58 -0
  149. data/test/functional/module_stream/list_test.rb +53 -0
  150. data/test/functional/organization/delete_test.rb +26 -0
  151. data/test/functional/organization/info_test.rb +22 -0
  152. data/test/functional/organization/organization_helpers.rb +10 -0
  153. data/test/functional/package/list_test.rb +158 -0
  154. data/test/functional/package_group/list_test.rb +38 -0
  155. data/test/functional/ping_test.rb +59 -0
  156. data/test/functional/product/create_test.rb +54 -0
  157. data/test/functional/product/delete_test.rb +41 -0
  158. data/test/functional/product/info_test.rb +33 -0
  159. data/test/functional/product/list_test.rb +58 -0
  160. data/test/functional/product/product_helpers.rb +24 -0
  161. data/test/functional/product/remove_sync_plan_test.rb +35 -0
  162. data/test/functional/product/set_sync_plan_test.rb +49 -0
  163. data/test/functional/product/update_proxy.rb +48 -0
  164. data/test/functional/product/update_test.rb +46 -0
  165. data/test/functional/repository/create_test.rb +21 -0
  166. data/test/functional/repository/delete_test.rb +95 -0
  167. data/test/functional/repository/info_test.rb +156 -0
  168. data/test/functional/repository/list_test.rb +68 -0
  169. data/test/functional/repository/remove_content_test.rb +108 -0
  170. data/test/functional/repository/repository_helpers.rb +18 -0
  171. data/test/functional/repository/synchronize_test.rb +57 -0
  172. data/test/functional/repository/update_test.rb +149 -0
  173. data/test/functional/repository/upload_test.rb +345 -0
  174. data/test/functional/repository_set/available_repositories_test.rb +18 -0
  175. data/test/functional/repository_set/disable_test.rb +42 -0
  176. data/test/functional/repository_set/enable_test.rb +42 -0
  177. data/test/functional/repository_set/info_test.rb +17 -0
  178. data/test/functional/repository_set/list_test.rb +18 -0
  179. data/test/functional/repository_set/repository_set_helpers.rb +20 -0
  180. data/test/functional/search_helpers.rb +17 -0
  181. data/test/functional/simple_content_access/disable_test.rb +48 -0
  182. data/test/functional/simple_content_access/enable_test.rb +46 -0
  183. data/test/functional/srpm/list_test.rb +92 -0
  184. data/test/functional/subscription/list_test.rb +86 -0
  185. data/test/functional/sync_plan/create_test.rb +60 -0
  186. data/test/functional/sync_plan/delete_test.rb +46 -0
  187. data/test/functional/sync_plan/info_test.rb +37 -0
  188. data/test/functional/sync_plan/list_test.rb +31 -0
  189. data/test/functional/sync_plan/sync_plan_helpers.rb +8 -0
  190. data/test/functional/sync_plan/update_test.rb +44 -0
  191. data/test/functional/test_helper.rb +24 -0
  192. data/test/task_helper.rb +7 -0
  193. data/test/test_helper.rb +38 -0
  194. data/test/unit/id_name_options_validator_test.rb +96 -0
  195. data/test/unit/id_resolver_test.rb +58 -0
  196. data/test/unit/messages_test.rb +7 -0
  197. data/test/unit/search_options_creators_test.rb +145 -0
  198. metadata +388 -6
@@ -0,0 +1,104 @@
1
+ require_relative '../test_helper'
2
+ require_relative 'filter_rule_helpers'
3
+ require 'hammer_cli_katello/filter_rule'
4
+
5
+ module HammerCLIKatello
6
+ describe FilterRule::InfoCommand do
7
+ include FilterRuleHelpers
8
+
9
+ it 'allows minimal options' do
10
+ api_expects(:content_view_filter_rules, :show) do |p|
11
+ p['content_view_filter_id'] == 1 && p['id'] == 9
12
+ end
13
+ run_cmd(%w(content-view filter rule info --content-view-filter-id 1 --id 9))
14
+ end
15
+
16
+ it 'resolves rule ID from rule name and filter ID' do
17
+ expect_filter_rule_search('rule9', 1, 9)
18
+
19
+ api_expects(:content_view_filter_rules, :show) do |p|
20
+ p['content_view_filter_id'] == 1 && p['id'] == 9
21
+ end
22
+ run_cmd(%w(content-view filter rule info --content-view-filter-id 1 --name rule9))
23
+ end
24
+
25
+ it 'allows name resolution of filter with content-view-id' do
26
+ ex = api_expects(:content_view_filters, :index) do |p|
27
+ p['name'] == 'cvf1' && p['content_view_id'] == 3
28
+ end
29
+ ex.returns(index_response([{'id' => 1}]))
30
+
31
+ api_expects(:content_view_filter_rules, :show) do |p|
32
+ p['content_view_filter_id'] == 1 && p['id'] == 9
33
+ end
34
+ run_cmd(%w(content-view filter rule info --content-view-filter cvf1 --content-view-id 3
35
+ --id 9))
36
+ end
37
+
38
+ describe 'organization' do
39
+ it 'ID can be specified to resolve content view name' do
40
+ ex = api_expects(:content_views, :index) do |p|
41
+ p['name'] == 'cv3' && p['organization_id'] == '6'
42
+ end
43
+ ex.returns(index_response([{'id' => 3}]))
44
+
45
+ ex = api_expects(:content_view_filters, :index) do |p|
46
+ p['name'] == 'cvf1' && p['content_view_id'] == 3
47
+ end
48
+ ex.returns(index_response([{'id' => 1}]))
49
+
50
+ api_expects(:content_view_filter_rules, :show) do |p|
51
+ p['content_view_filter_id'] == 1 && p['id'] == 9
52
+ end
53
+ run_cmd(%w(content-view filter rule info --content-view-filter cvf1 --organization-id 6
54
+ --content-view cv3 --id 9))
55
+ end
56
+
57
+ it 'name can be specified to resolve content view name' do
58
+ ex = api_expects(:organizations, :index) do |p|
59
+ p[:search] == "name = \"org6\""
60
+ end
61
+ ex.returns(index_response([{'id' => 6}]))
62
+
63
+ ex = api_expects(:content_views, :index) do |p|
64
+ p['name'] == 'cv3' && p['organization_id'] == 6
65
+ end
66
+ ex.returns(index_response([{'id' => 3}]))
67
+
68
+ ex = api_expects(:content_view_filters, :index) do |p|
69
+ p['name'] == 'cvf1' && p['content_view_id'] == 3
70
+ end
71
+ ex.returns(index_response([{'id' => 1}]))
72
+
73
+ api_expects(:content_view_filter_rules, :show) do |p|
74
+ p['content_view_filter_id'] == 1 && p['id'] == 9
75
+ end
76
+ run_cmd(%w(content-view filter rule info --content-view-filter cvf1 --organization org6
77
+ --content-view cv3 --id 9))
78
+ end
79
+
80
+ it 'label can be specified to resolve content view name' do
81
+ ex = api_expects(:organizations, :index) do |p|
82
+ p[:search] == "label = \"org6\""
83
+ end
84
+ ex.returns(index_response([{'id' => 6}]))
85
+
86
+ ex = api_expects(:content_views, :index) do |p|
87
+ p['name'] == 'cv3' && p['organization_id'] == 6
88
+ end
89
+ ex.returns(index_response([{'id' => 3}]))
90
+
91
+ ex = api_expects(:content_view_filters, :index) do |p|
92
+ p['name'] == 'cvf1' && p['content_view_id'] == 3
93
+ end
94
+ ex.returns(index_response([{'id' => 1}]))
95
+
96
+ api_expects(:content_view_filter_rules, :show) do |p|
97
+ p['content_view_filter_id'] == 1 && p['id'] == 9
98
+ end
99
+ run_cmd(%w(content-view filter rule info --content-view-filter cvf1 --organization-label
100
+ org6 --content-view cv3 --id 9))
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,91 @@
1
+ require_relative '../test_helper'
2
+ require 'hammer_cli_katello/filter_rule'
3
+
4
+ module HammerCLIKatello
5
+ describe FilterRule::ListCommand do
6
+ it 'allows minimal options' do
7
+ api_expects(:content_view_filter_rules, :index) do |p|
8
+ p['content_view_filter_id'] == 1
9
+ end
10
+ run_cmd(%w(content-view filter rule list --content-view-filter-id 1))
11
+ end
12
+
13
+ it 'allows name resolution with content-view-id' do
14
+ ex = api_expects(:content_view_filters, :index) do |p|
15
+ p['name'] == 'cvf1' && p['content_view_id'] == 3
16
+ end
17
+ ex.returns(index_response([{'id' => 1}]))
18
+
19
+ api_expects(:content_view_filter_rules, :index) do |p|
20
+ p['content_view_filter_id'] == 1
21
+ end
22
+ run_cmd(%w(content-view filter rule list --content-view-filter cvf1 --content-view-id 3))
23
+ end
24
+
25
+ describe 'organization' do
26
+ it 'ID can be specified to resolve content view name' do
27
+ ex = api_expects(:content_views, :index) do |p|
28
+ p['name'] == 'cv3' && p['organization_id'] == '6'
29
+ end
30
+ ex.returns(index_response([{'id' => 3}]))
31
+
32
+ ex = api_expects(:content_view_filters, :index) do |p|
33
+ p['name'] == 'cvf1' && p['content_view_id'] == 3
34
+ end
35
+ ex.returns(index_response([{'id' => 1}]))
36
+
37
+ api_expects(:content_view_filter_rules, :index) do |p|
38
+ p['content_view_filter_id'] == 1
39
+ end
40
+ run_cmd(%w(content-view filter rule list --content-view-filter cvf1 --organization-id 6
41
+ --content-view cv3))
42
+ end
43
+
44
+ it 'name can be specified to resolve content view name' do
45
+ ex = api_expects(:organizations, :index) do |p|
46
+ p[:search] == "name = \"org6\""
47
+ end
48
+ ex.returns(index_response([{'id' => 6}]))
49
+
50
+ ex = api_expects(:content_views, :index) do |p|
51
+ p['name'] == 'cv3' && p['organization_id'] == 6
52
+ end
53
+ ex.returns(index_response([{'id' => 3}]))
54
+
55
+ ex = api_expects(:content_view_filters, :index) do |p|
56
+ p['name'] == 'cvf1' && p['content_view_id'] == 3
57
+ end
58
+ ex.returns(index_response([{'id' => 1}]))
59
+
60
+ api_expects(:content_view_filter_rules, :index) do |p|
61
+ p['content_view_filter_id'] == 1
62
+ end
63
+ run_cmd(%w(content-view filter rule list --content-view-filter cvf1 --organization org6
64
+ --content-view cv3))
65
+ end
66
+
67
+ it 'label can be specified to resolve content view name' do
68
+ ex = api_expects(:organizations, :index) do |p|
69
+ p[:search] == "label = \"org6\""
70
+ end
71
+ ex.returns(index_response([{'id' => 6}]))
72
+
73
+ ex = api_expects(:content_views, :index) do |p|
74
+ p['name'] == 'cv3' && p['organization_id'] == 6
75
+ end
76
+ ex.returns(index_response([{'id' => 3}]))
77
+
78
+ ex = api_expects(:content_view_filters, :index) do |p|
79
+ p['name'] == 'cvf1' && p['content_view_id'] == 3
80
+ end
81
+ ex.returns(index_response([{'id' => 1}]))
82
+
83
+ api_expects(:content_view_filter_rules, :index) do |p|
84
+ p['content_view_filter_id'] == 1
85
+ end
86
+ run_cmd(%w(content-view filter rule list --content-view-filter cvf1 --organization-label
87
+ org6 --content-view cv3))
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,104 @@
1
+ require_relative '../test_helper'
2
+ require_relative 'filter_rule_helpers'
3
+ require 'hammer_cli_katello/filter_rule'
4
+
5
+ module HammerCLIKatello
6
+ describe FilterRule::UpdateCommand do
7
+ include FilterRuleHelpers
8
+
9
+ it 'allows minimal options' do
10
+ api_expects(:content_view_filter_rules, :update) do |p|
11
+ p['content_view_filter_id'] == 1 && p['id'] == 9
12
+ end
13
+ run_cmd(%w(content-view filter rule update --content-view-filter-id 1 --id 9))
14
+ end
15
+
16
+ it 'resolves rule ID from rule name and filter ID' do
17
+ expect_filter_rule_search('rule9', 1, 9)
18
+
19
+ api_expects(:content_view_filter_rules, :update) do |p|
20
+ p['content_view_filter_id'] == 1 && p['id'] == 9
21
+ end
22
+ run_cmd(%w(content-view filter rule update --content-view-filter-id 1 --name rule9))
23
+ end
24
+
25
+ it 'allows name resolution of filter with content-view-id' do
26
+ ex = api_expects(:content_view_filters, :index) do |p|
27
+ p['name'] == 'cvf1' && p['content_view_id'] == 3
28
+ end
29
+ ex.returns(index_response([{'id' => 1}]))
30
+
31
+ api_expects(:content_view_filter_rules, :update) do |p|
32
+ p['content_view_filter_id'] == 1 && p['id'] == 9
33
+ end
34
+ run_cmd(%w(content-view filter rule update --content-view-filter cvf1 --content-view-id 3
35
+ --id 9))
36
+ end
37
+
38
+ describe 'organization' do
39
+ it 'ID can be specified to resolve content view name' do
40
+ ex = api_expects(:content_views, :index) do |p|
41
+ p['name'] == 'cv3' && p['organization_id'] == '6'
42
+ end
43
+ ex.returns(index_response([{'id' => 3}]))
44
+
45
+ ex = api_expects(:content_view_filters, :index) do |p|
46
+ p['name'] == 'cvf1' && p['content_view_id'] == 3
47
+ end
48
+ ex.returns(index_response([{'id' => 1}]))
49
+
50
+ api_expects(:content_view_filter_rules, :update) do |p|
51
+ p['content_view_filter_id'] == 1 && p['id'] == 9
52
+ end
53
+ run_cmd(%w(content-view filter rule update --content-view-filter cvf1 --organization-id 6
54
+ --content-view cv3 --id 9))
55
+ end
56
+
57
+ it 'name can be specified to resolve content view name' do
58
+ ex = api_expects(:organizations, :index) do |p|
59
+ p[:search] == "name = \"org6\""
60
+ end
61
+ ex.returns(index_response([{'id' => 6}]))
62
+
63
+ ex = api_expects(:content_views, :index) do |p|
64
+ p['name'] == 'cv3' && p['organization_id'] == 6
65
+ end
66
+ ex.returns(index_response([{'id' => 3}]))
67
+
68
+ ex = api_expects(:content_view_filters, :index) do |p|
69
+ p['name'] == 'cvf1' && p['content_view_id'] == 3
70
+ end
71
+ ex.returns(index_response([{'id' => 1}]))
72
+
73
+ api_expects(:content_view_filter_rules, :update) do |p|
74
+ p['content_view_filter_id'] == 1 && p['id'] == 9
75
+ end
76
+ run_cmd(%w(content-view filter rule update --content-view-filter cvf1 --organization org6
77
+ --content-view cv3 --id 9))
78
+ end
79
+
80
+ it 'label can be specified to resolve content view name' do
81
+ ex = api_expects(:organizations, :index) do |p|
82
+ p[:search] == "label = \"org6\""
83
+ end
84
+ ex.returns(index_response([{'id' => 6}]))
85
+
86
+ ex = api_expects(:content_views, :index) do |p|
87
+ p['name'] == 'cv3' && p['organization_id'] == 6
88
+ end
89
+ ex.returns(index_response([{'id' => 3}]))
90
+
91
+ ex = api_expects(:content_view_filters, :index) do |p|
92
+ p['name'] == 'cvf1' && p['content_view_id'] == 3
93
+ end
94
+ ex.returns(index_response([{'id' => 1}]))
95
+
96
+ api_expects(:content_view_filter_rules, :update) do |p|
97
+ p['content_view_filter_id'] == 1 && p['id'] == 9
98
+ end
99
+ run_cmd(%w(content-view filter rule update --content-view-filter cvf1 --organization-label
100
+ org6 --content-view cv3 --id 9))
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,45 @@
1
+ require File.join(File.dirname(__FILE__), '../../test_helper')
2
+
3
+ describe 'apply an errata' do
4
+ include ForemanTaskHelpers
5
+
6
+ before do
7
+ @cmd = %w(host errata apply)
8
+ end
9
+
10
+ let(:errata_id) { "RHEA-1111:1111" }
11
+ let(:host_id) { 1 }
12
+ let(:task_id) { '5' }
13
+ let(:response) do
14
+ {
15
+ 'id' => task_id,
16
+ 'state' => 'stopped'
17
+ }
18
+ end
19
+
20
+ it "applies an errata to a host" do
21
+ params = ["--errata-ids=#{errata_id}", "--host-id=#{host_id}"]
22
+
23
+ ex = api_expects(:host_errata, :apply, 'Host errata apply') do |par|
24
+ par['errata_ids'] == [errata_id] && par['host_id'] == host_id
25
+ end
26
+
27
+ ex.returns(response)
28
+
29
+ expect_foreman_task(task_id)
30
+
31
+ run_cmd(@cmd + params)
32
+ end
33
+
34
+ it "applies an errata to a host with async flag" do
35
+ params = ["--errata-ids=#{errata_id}", "--host-id=#{host_id}", "--async"]
36
+
37
+ ex = api_expects(:host_errata, :apply, 'Host errata apply') do |par|
38
+ par['errata_ids'] == [errata_id] && par['host_id'] == host_id
39
+ end
40
+
41
+ ex.returns(response)
42
+
43
+ run_cmd(@cmd + params)
44
+ end
45
+ end
@@ -0,0 +1,27 @@
1
+ require File.join(File.dirname(__FILE__), '../../test_helper')
2
+ require_relative '../../erratum/erratum_helpers'
3
+
4
+ describe 'host Erratum Info' do
5
+ include ErratumHelpers
6
+ before do
7
+ @cmd = %w(host errata info)
8
+ end
9
+
10
+ it "prints module package info on run" do
11
+ api_expects(:host_errata, :show)
12
+ .with_params('id' => erratum_id, 'host_id' => host_id)
13
+ .returns(make_erratum_response)
14
+ params = ["--id=#{erratum_id}", "--host-id=#{host_id}"]
15
+ result = run_cmd(@cmd + params)
16
+ verify_module_packages_and_orphan_packages(result)
17
+ end
18
+
19
+ it "prints package info on run" do
20
+ api_expects(:host_errata, :show)
21
+ .with_params('id' => erratum_id, 'host_id' => host_id)
22
+ .returns(make_erratum_response(true, false))
23
+ params = ["--id=#{erratum_id}", "--host-id=#{host_id}"]
24
+ result = run_cmd(@cmd + params)
25
+ verify_no_modules_packages_with_orphan_packages(result)
26
+ end
27
+ end
@@ -0,0 +1,49 @@
1
+ require File.join(File.dirname(__FILE__), '../../test_helper')
2
+ require_relative '../../lifecycle_environment/lifecycle_environment_helpers'
3
+
4
+ describe 'host errata listing' do
5
+ include LifecycleEnvironmentHelpers
6
+
7
+ before do
8
+ @cmd = %w(host errata list)
9
+ end
10
+
11
+ let(:org_id) { 1 }
12
+ let(:host_id) { 2 }
13
+ let(:lifecycle_env_id) { 3 }
14
+ let(:empty_response) do
15
+ {
16
+ "total" => 0,
17
+ "subtotal" => 0,
18
+ "page" => "1",
19
+ "per_page" => "1000",
20
+ "error" => nil,
21
+ "search" => nil,
22
+ "sort" => {
23
+ "by" => nil,
24
+ "order" => nil
25
+ },
26
+ "results" => []
27
+ }
28
+ end
29
+
30
+ it "lists the host errata belonging to a lifecycle-environment by name" do
31
+ params = ["--host-id=#{host_id}", "--organization-id=#{org_id}", '--lifecycle-environment=test']
32
+
33
+ expect_lifecycle_environment_search(org_id.to_s, 'test', lifecycle_env_id)
34
+
35
+ ex = api_expects(:host_errata, :index, 'host errata list').
36
+ with_params('host_id': host_id,
37
+ 'environment_id': lifecycle_env_id,
38
+ 'page': 1,
39
+ 'per_page': 1000)
40
+
41
+ ex.returns(empty_response)
42
+ expected_result = success_result("---|------------|------|-------|------------
43
+ ID | ERRATUM ID | TYPE | TITLE | INSTALLABLE
44
+ ---|------------|------|-------|------------
45
+ ")
46
+ result = run_cmd(@cmd + params)
47
+ assert_cmd(expected_result, result)
48
+ end
49
+ end
@@ -0,0 +1,40 @@
1
+ require File.join(File.dirname(__FILE__), '../../test_helper')
2
+
3
+ describe 'recalculate errata' do
4
+ include ForemanTaskHelpers
5
+
6
+ before do
7
+ @cmd = %w(host errata recalculate)
8
+ end
9
+
10
+ let(:host_id) { 1 }
11
+ let(:task_id) { '5' }
12
+ let(:response) do
13
+ {
14
+ 'id' => task_id,
15
+ 'state' => 'stopped'
16
+ }
17
+ end
18
+
19
+ it "recalculates errata for a host" do
20
+ params = ["--host-id=#{host_id}"]
21
+
22
+ api_expects(:host_errata, :applicability, 'Host errata recalculate')
23
+ .with_params('host_id' => host_id)
24
+ .returns(response)
25
+
26
+ expect_foreman_task(task_id)
27
+
28
+ run_cmd(@cmd + params)
29
+ end
30
+
31
+ it "applies an errata to a host with async flag" do
32
+ params = ["--host-id=#{host_id}", "--async"]
33
+
34
+ api_expects(:host_errata, :applicability, 'Host errata recalculate')
35
+ .with_params('host_id' => host_id)
36
+ .returns(response)
37
+
38
+ run_cmd(@cmd + params)
39
+ end
40
+ end
@@ -0,0 +1,95 @@
1
+ require File.join(File.dirname(__FILE__), '../../test_helper')
2
+ require 'hammer_cli_foreman/host'
3
+
4
+ module HammerCLIForeman
5
+ describe Host do
6
+ # These tests are only for the extensions Katello adds to the host command
7
+ # See hammer-cli-foreman for the core host tests
8
+ describe CreateCommand do
9
+ let(:env_name) { "world" }
10
+ let(:env_id) { 100 }
11
+ let(:cv_id) { 220 }
12
+ let(:repo_name) { "life_of_kickstart" }
13
+ let(:repo_id) { 12 }
14
+ let(:content_source_name) { "life_of_cs" }
15
+ let(:content_source_id) { 82 }
16
+ let(:host_name) { "mercury" }
17
+ let(:domain_id) { 134 }
18
+ let(:operatingsystem_id) { 103 }
19
+ let(:architecture_id) { 28 }
20
+ let(:partition_table_id) { 243 }
21
+ let(:location_id) { 213 }
22
+ let(:organization_id) { 324 }
23
+
24
+ it 'allows kickstart repository name' do
25
+ api_expects(:lifecycle_environments, :index).
26
+ with_params('name' => env_name,
27
+ 'organization_id' => organization_id).
28
+ returns(index_response([{'id' => env_id}]))
29
+
30
+ api_expects(:repositories, :index).
31
+ with_params('name' => repo_name,
32
+ 'environment_id' => env_id,
33
+ 'content_view_id' => cv_id).
34
+ returns(index_response([{'id' => repo_id}]))
35
+
36
+ api_expects(:hosts, :create).
37
+ with_params('host' => {
38
+ 'name' => host_name,
39
+ 'location_id' => location_id,
40
+ 'organization_id' => organization_id,
41
+ 'operatingsystem_id' => operatingsystem_id,
42
+ 'architecture_id' => architecture_id,
43
+ 'ptable_id' => partition_table_id,
44
+ 'domain_id' => domain_id,
45
+ 'content_facet_attributes' => {
46
+ 'lifecycle_environment_id' => env_id,
47
+ 'content_view_id' => cv_id,
48
+ 'kickstart_repository_id' => repo_id
49
+ }
50
+ })
51
+
52
+ cmd = "host create --name=#{host_name} --content-view-id=#{cv_id}"\
53
+ " --lifecycle-environment=#{env_name}"\
54
+ " --kickstart-repository=#{repo_name}"\
55
+ " --operatingsystem-id=#{operatingsystem_id}"\
56
+ " --architecture-id=#{architecture_id}"\
57
+ " --organization-id=#{organization_id}"\
58
+ " --partition-table-id=#{partition_table_id}"\
59
+ " --location-id=#{location_id}"\
60
+ " --domain-id=#{domain_id}"
61
+ run_cmd(cmd.split)
62
+ end
63
+
64
+ it 'allows content source name' do
65
+ api_expects(:smart_proxies, :index).
66
+ with_params(:search => "name = \"#{content_source_name}\"").
67
+ returns(index_response([{'id' => content_source_id}]))
68
+
69
+ api_expects(:hosts, :create).
70
+ with_params('host' => {
71
+ 'name' => host_name,
72
+ 'location_id' => location_id,
73
+ 'organization_id' => organization_id,
74
+ 'operatingsystem_id' => operatingsystem_id,
75
+ 'architecture_id' => architecture_id,
76
+ 'ptable_id' => partition_table_id,
77
+ 'domain_id' => domain_id,
78
+ 'content_facet_attributes' => {
79
+ 'content_source_id' => content_source_id
80
+ }
81
+ })
82
+
83
+ cmd = "host create --name=#{host_name}"\
84
+ " --content-source=#{content_source_name}"\
85
+ " --operatingsystem-id=#{operatingsystem_id}"\
86
+ " --architecture-id=#{architecture_id}"\
87
+ " --organization-id=#{organization_id}"\
88
+ " --partition-table-id=#{partition_table_id}"\
89
+ " --location-id=#{location_id}"\
90
+ " --domain-id=#{domain_id}"
91
+ run_cmd(cmd.split)
92
+ end
93
+ end
94
+ end
95
+ end