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,50 @@
1
+ {
2
+ "content_source_id":1,
3
+ "content_source_name":"foreman.example.com",
4
+ "content_view_id":1,
5
+ "content_view_name":"Default Organization View",
6
+ "lifecycle_environment_id":1,
7
+ "lifecycle_environment_name":"Library",
8
+ "kickstart_repository_id":10000,
9
+ "kickstart_repository_name":"Rhel 7",
10
+ "subnet_id":null,
11
+ "subnet_name":null,
12
+ "operatingsystem_id":null,
13
+ "operatingsystem_name":null,
14
+ "domain_id":null,
15
+ "domain_name":null,
16
+ "environment_id":1,
17
+ "environment_name":"Production Env",
18
+ "compute_profile_id":null,
19
+ "compute_profile_name":null,
20
+ "ancestry":null,
21
+ "parent_id":null,
22
+ "parent_name":null,
23
+ "puppet_proxy_id":null,
24
+ "puppet_ca_proxy_id":null,
25
+ "ptable_id":null,
26
+ "ptable_name":null,
27
+ "medium_id":null,
28
+ "medium_name":null,
29
+ "architecture_id":null,
30
+ "architecture_name":null,
31
+ "realm_id":null,
32
+ "realm_name":null,
33
+ "created_at":"2016-08-09 04:18:32 UTC",
34
+ "updated_at":"2016-08-09 04:18:32 UTC",
35
+ "id":1,
36
+ "parameters":[],
37
+ "template_combinations":[],
38
+ "puppetclasses":[],
39
+ "config_groups":[],
40
+ "all_puppetclasses":[],
41
+ "locations":[],
42
+ "organizations":[
43
+ {
44
+ "id":1,
45
+ "name":"Redhat",
46
+ "title":"Redhat",
47
+ "description":null
48
+ }
49
+ ]
50
+ }
@@ -0,0 +1,33 @@
1
+ require_relative '../test_helper'
2
+ require 'hammer_cli_foreman/hostgroup'
3
+
4
+ module HammerCLIForeman
5
+ describe Hostgroup do
6
+ describe InfoCommand do
7
+ before do
8
+ @cmd = %w(hostgroup info)
9
+ end
10
+
11
+ let(:hostgroup_id) { 1 }
12
+
13
+ it "Shows information about a hostgroup" do
14
+ params = ["--id=#{hostgroup_id}"]
15
+
16
+ ex = api_expects(:hostgroups, :show, "Get info") do |par|
17
+ par["id"] == hostgroup_id.to_s
18
+ end
19
+ json_file = File.join(File.dirname(__FILE__), 'data', 'hostgroup.json')
20
+ ex.returns(JSON.parse(File.read(json_file)))
21
+
22
+ result = run_cmd(@cmd + params)
23
+ # rubocop:disable Style/WordArray
24
+ expected_fields = [['Name', 'Library'],
25
+ ['Name', 'Default Organization View'],
26
+ ['Name', 'foreman.example.com'],
27
+ ['Name', 'Rhel 7']]
28
+ expected_results = expected_fields.map { |field| success_result(FieldMatcher.new(*field)) }
29
+ expected_results.each { |expected| assert_cmd(expected, result) }
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,120 @@
1
+ require_relative '../test_helper'
2
+ require 'hammer_cli_foreman/hostgroup'
3
+ module HammerCLIForeman
4
+ describe Hostgroup do
5
+ # These tests are only for the extensions Katello adds to the hostgroup command
6
+ # See hammer-cli-foreman for the core hostgroup tests
7
+ describe UpdateCommand do
8
+ it 'allows content source id' do
9
+ api_expects(:hostgroups, :update) do |p|
10
+ p['id'] == '1' && p['hostgroup']['content_source_id'] == 1
11
+ end
12
+ run_cmd(%w(hostgroup update --id 1 --content-source-id 1))
13
+ end
14
+
15
+ it 'allows content source name' do
16
+ content_source_name = "life_of_cs"
17
+ content_source_id = 111
18
+ hg_id = 441
19
+
20
+ api_expects(:smart_proxies, :index).
21
+ with_params(:search => "name = \"#{content_source_name}\"").
22
+ returns(index_response([{'id' => content_source_id}]))
23
+
24
+ api_expects(:hostgroups, :update).
25
+ with_params('id' => hg_id.to_s,
26
+ 'hostgroup' => {'content_source_id' => content_source_id
27
+ })
28
+
29
+ cmd = "hostgroup update --id #{hg_id} --content-source #{content_source_name}"
30
+ run_cmd(cmd.split)
31
+ end
32
+
33
+ it 'allows content view id' do
34
+ api_expects(:hostgroups, :update) do |p|
35
+ p['id'] == '1' && p['hostgroup']['content_view_id'] == 1
36
+ end
37
+ run_cmd(%w(hostgroup update --id 1 --content-view-id 1))
38
+ end
39
+
40
+ it 'allows content view name' do
41
+ ex = api_expects(:content_views, :index) do |p|
42
+ p[:search] = "name = \"cv1\"" && p['organization_id'] == '1'
43
+ end
44
+ ex.returns(index_response([{'id' => 1}]))
45
+ api_expects(:hostgroups, :update) do |p|
46
+ p['id'] == '1' && p['hostgroup']['content_view_id'] == 1
47
+ end
48
+ run_cmd(%w(hostgroup update --id 1 --content-view cv1 --query-organization-id 1))
49
+ end
50
+
51
+ it 'requires organization options to resolve content view name' do
52
+ api_expects_no_call
53
+ result = run_cmd(%w(hostgroup update --id 1 --content-view cv1))
54
+ assert_match(/--query-organization/, result.err)
55
+ end
56
+
57
+ it 'allows lifecycle environment id' do
58
+ api_expects(:hostgroups, :update) do |p|
59
+ p['id'] == '1' && p['hostgroup']['lifecycle_environment_id'] == 1 &&
60
+ p['hostgroup']['organization_ids'] == %w(1 2)
61
+ end
62
+ run_cmd(%w(hostgroup update --id 1 --lifecycle-environment-id 1 --organization-ids 1,2))
63
+ end
64
+
65
+ it 'allows lifecycle environment name' do
66
+ ex = api_expects(:lifecycle_environments, :index) do |p|
67
+ p[:name] = 'le1' && p['organization_id'] == '1'
68
+ end
69
+ ex.returns(index_response([{'id' => 1}]))
70
+ api_expects(:hostgroups, :update) do |p|
71
+ p['id'] == '1' && p['hostgroup']['lifecycle_environment_id'] == 1
72
+ end
73
+ run_cmd(%w(hostgroup update --id 1 --lifecycle-environment le1
74
+ --query-organization-id 1 --organization-ids 1,2))
75
+ end
76
+
77
+ it 'requires organization options to resolve lifecycle environment name' do
78
+ api_expects_no_call
79
+ result = run_cmd(%w(hostgroup update --name hg1 --lifecycle-environment le1))
80
+ assert_match(/--query-organization/, result.err)
81
+ end
82
+
83
+ it 'requires organization options to resolve lifecycle environment name' do
84
+ api_expects_no_call
85
+ result = run_cmd(%w(hostgroup update --id 1 --lifecycle-environment le1))
86
+ assert_match(/--query-organization/, result.err)
87
+ end
88
+
89
+ it 'allows kickstart repository name' do
90
+ env_id = 100
91
+ cv_id = 200
92
+ repo_name = "life_of_kickstart"
93
+ repo_id = 111
94
+ hg_name = "mercury"
95
+ hg_id = 108
96
+
97
+ api_expects(:hostgroups, :index).
98
+ with_params(:search => "name = \"#{hg_name}\"").
99
+ returns(index_response([{'id' => hg_id}]))
100
+
101
+ api_expects(:repositories, :index).
102
+ with_params('name' => repo_name,
103
+ 'environment_id' => env_id,
104
+ 'content_view_id' => cv_id).
105
+ returns(index_response([{'id' => repo_id}]))
106
+
107
+ api_expects(:hostgroups, :update).
108
+ with_params('id' => hg_id,
109
+ 'hostgroup' => {'lifecycle_environment_id' => env_id,
110
+ 'content_view_id' => cv_id,
111
+ 'kickstart_repository_id' => repo_id
112
+ })
113
+
114
+ cmd = "hostgroup update --name #{hg_name} --lifecycle-environment-id #{env_id}"\
115
+ " --content-view-id #{cv_id} --kickstart-repository #{repo_name}"
116
+ run_cmd(cmd.split)
117
+ end
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,14 @@
1
+ require_relative '../test_helper'
2
+ require 'hammer_cli_katello/lifecycle_environment'
3
+
4
+ module HammerCLIKatello
5
+ describe LifecycleEnvironmentCommand::CreateCommand do
6
+ it 'allows minimal options' do
7
+ api_expects(:lifecycle_environments, :create) do |p|
8
+ p['name'] == 'le1' && p['prior_id'] == 3 && p['organization_id'] == 1
9
+ end
10
+
11
+ run_cmd(%w(lifecycle-environment create --name le1 --prior-id 3 --organization-id 1))
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,18 @@
1
+ require_relative '../search_helpers'
2
+
3
+ module LifecycleEnvironmentHelpers
4
+ include SearchHelpers
5
+
6
+ def expect_lifecycle_environment_search(org_id, name, id)
7
+ expect_lenient_search(:lifecycle_environments,
8
+ params: {'name' => name, 'organization_id' => org_id},
9
+ returns: {'id' => id})
10
+ end
11
+
12
+ def expect_lifecycle_environments_request(org_id, results)
13
+ ex = api_expects(:lifecycle_environments, :index, 'List the lifecycle environments') do |par|
14
+ par['organization_id'] == org_id
15
+ end
16
+ ex.returns(index_response(results))
17
+ end
18
+ end
@@ -0,0 +1,38 @@
1
+ require_relative '../test_helper'
2
+ require 'hammer_cli_katello/lifecycle_environment'
3
+
4
+ module HammerCLIKatello
5
+ describe LifecycleEnvironmentCommand::ListCommand do
6
+ it 'allows minimal options' do
7
+ api_expects(:lifecycle_environments, :index)
8
+
9
+ run_cmd(%w(lifecycle-environment list))
10
+ end
11
+
12
+ describe 'allows organization' do
13
+ it 'id' do
14
+ api_expects(:lifecycle_environments, :index) { |p| p['organization_id'] == 1 }
15
+
16
+ run_cmd(%w(lifecycle-environment list --organization-id 1))
17
+ end
18
+
19
+ it 'name' do
20
+ api_expects(:organizations, :index) { |par| par[:search] == "name = \"org1\"" }
21
+ .at_least_once.returns(index_response([{'id' => 1}]))
22
+
23
+ api_expects(:lifecycle_environments, :index) { |p| p['organization_id'] == 1 }
24
+
25
+ run_cmd(%w(lifecycle-environment list --organization org1))
26
+ end
27
+
28
+ it 'label' do
29
+ api_expects(:organizations, :index) { |par| par[:search] == "label = \"org1\"" }
30
+ .at_least_once.returns(index_response([{'id' => 1}]))
31
+
32
+ api_expects(:lifecycle_environments, :index) { |p| p['organization_id'] == 1 }
33
+
34
+ run_cmd(%w(lifecycle-environment list --organization-label org1))
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,14 @@
1
+ require_relative '../test_helper'
2
+ require 'hammer_cli_katello/lifecycle_environment'
3
+
4
+ module HammerCLIKatello
5
+ describe LifecycleEnvironmentCommand::UpdateCommand do
6
+ it 'allows minimal options' do
7
+ api_expects(:lifecycle_environments, :update) do |p|
8
+ p['new_name'] == 'le3' && p['id'] == 3
9
+ end
10
+
11
+ run_cmd(%w(lifecycle-environment update --id 3 --new-name le3))
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,30 @@
1
+ require File.join(File.dirname(__FILE__), '../test_helper')
2
+
3
+ describe 'local helper' do
4
+ before do
5
+ class SuperLocalTestHelper
6
+ def parse_subcommand
7
+ true
8
+ end
9
+ end
10
+
11
+ class LocalTestHelper < SuperLocalTestHelper
12
+ include HammerCLIKatello::LocalHelper
13
+ end
14
+
15
+ @local_helper = LocalTestHelper.new
16
+ end
17
+
18
+ it "does not fail if /usr/share/foreman exists" do
19
+ File.expects(:exist?).with('/usr/share/foreman').returns(true)
20
+ assert @local_helper.parse_subcommand
21
+ end
22
+
23
+ it "fails if /usr/share/foreman does not exist" do
24
+ File.expects(:exist?).with('/usr/share/foreman').returns(false)
25
+
26
+ assert_raises RuntimeError do
27
+ @local_helper.parse_subcommand
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,58 @@
1
+ require_relative '../test_helper'
2
+ require 'hammer_cli_katello/module_stream'
3
+
4
+ module HammerCLIKatello
5
+ describe ModuleStreamCommand::InfoCommand do
6
+ it 'allows ID' do
7
+ api_expects(:module_streams, :show).with_params('id' => '1')
8
+
9
+ run_cmd(%w(module-stream info --id 1))
10
+ end
11
+
12
+ it 'resolves ID from name and repo id' do
13
+ api_expects(:module_streams, :index)
14
+ .with_params(search: "name = \"duck\"", name: "duck", repository_id: "1")
15
+ .returns(index_response([{'id' => "1"}]))
16
+
17
+ api_expects(:module_streams, :show)
18
+ .with_params(repository_id: 1, id: "1")
19
+
20
+ run_cmd(%w(module-stream info --name duck --repository-id 1))
21
+ end
22
+
23
+ it 'resolves ID from name, repo name, and product id' do
24
+ api_expects(:module_streams, :index)
25
+ .with_params(search: "name = \"walrus\"")
26
+ .returns(index_response([{'id' => 1}]))
27
+
28
+ api_expects(:repositories, :index)
29
+ .with_params(name: 'zoo', product_id: 1)
30
+ .returns(index_response([{'id' => 1}]))
31
+
32
+ api_expects(:module_streams, :show)
33
+ .with_params(repository_id: 1, id: 1)
34
+
35
+ run_cmd(%w(module-stream info --name walrus --repository zoo --product-id 1))
36
+ end
37
+
38
+ it 'resolves ID from name, repo name, product name, and org id' do
39
+ api_expects(:products, :index)
40
+ .with_params(name: "habitat", organization_id: 1)
41
+ .returns(index_response([{'id' => 1}]))
42
+
43
+ api_expects(:module_streams, :index)
44
+ .with_params(search: "name = \"walrus\"")
45
+ .returns(index_response([{'id' => 1}]))
46
+
47
+ api_expects(:repositories, :index)
48
+ .with_params(name: 'zoo', product_id: 1)
49
+ .returns(index_response([{'id' => 1}]))
50
+
51
+ api_expects(:module_streams, :show)
52
+ .with_params(repository_id: 1, id: 1)
53
+
54
+ run_cmd(%w(module-stream info --name walrus --repository zoo
55
+ --product habitat --organization-id 1))
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,53 @@
1
+ require_relative '../test_helper'
2
+ require 'hammer_cli_katello/module_stream'
3
+
4
+ module HammerCLIKatello
5
+ describe ModuleStreamCommand::ListCommand do
6
+ it 'allows minimal options' do
7
+ api_expects(:module_streams, :index)
8
+
9
+ run_cmd(%w(module-stream list))
10
+ end
11
+
12
+ it 'can be provided by repository ID' do
13
+ api_expects(:module_streams, :index).with_params(repository_id: 1)
14
+
15
+ run_cmd(%w(module-stream list --repository-id 1))
16
+ end
17
+
18
+ it 'product params needed with repository name' do
19
+ cmd = run_cmd(%w(module-stream list --repository Repo))
20
+ error_msg = "At least one of options --product, --product-id is required."
21
+ api_expects_no_call
22
+ assert_match error_msg, cmd.err
23
+ end
24
+
25
+ it 'can be provided by repository name and product id' do
26
+ api_expects(:repositories, :index)
27
+ .with_params(name: "Repo", product_id: 1)
28
+ .returns(index_response([{'id' => 1}]))
29
+
30
+ api_expects(:module_streams, :index).with_params(repository_id: 1)
31
+
32
+ run_cmd(%w(module-stream list --repository Repo --product-id 1))
33
+ end
34
+
35
+ it 'can be provided by repository id and organization id' do
36
+ api_expects(:module_streams, :index)
37
+ .with_params(repository_id: 1, organization_id: 1)
38
+
39
+ run_cmd(%w(module-stream list --repository-id 1 --organization-id 1))
40
+ end
41
+
42
+ it 'can be provided by repository name, product id, and organization id' do
43
+ api_expects(:repositories, :index)
44
+ .with_params(name: "Repo", product_id: 1)
45
+ .returns(index_response([{'id' => 1}]))
46
+
47
+ api_expects(:module_streams, :index)
48
+ .with_params(repository_id: 1, organization_id: 1)
49
+
50
+ run_cmd(%w(module-stream list --repository Repo --product-id 1 --organization-id 1))
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,45 @@
1
+ require_relative '../test_helper'
2
+ require 'hammer_cli_katello/organization'
3
+ require 'hammer_cli_katello/associating_commands'
4
+
5
+ describe HammerCLIKatello::Organization::ConfigureCdnCommand do
6
+ include OrganizationHelpers
7
+ before do
8
+ @cmd = %w(organization configure-cdn)
9
+ end
10
+
11
+ it 'by updates with the right params' do
12
+ org_id = '100'
13
+ org_label = 'org1'
14
+ ssl_cred_id = '1'
15
+ password = "pass"
16
+ username = "foo"
17
+ url = "https://goo.com"
18
+ upstream_label = "GreatOrg"
19
+ type = 'network_sync'
20
+ params = ["--label=#{org_label}",
21
+ "--url=#{url}",
22
+ "--username=#{username}",
23
+ "--upstream-organization-label=#{upstream_label}",
24
+ "--password=#{password}",
25
+ "--ssl-ca-credential-id=#{ssl_cred_id}",
26
+ "--type=#{type}"
27
+ ]
28
+ expect_organization_search(org_label, org_id, field: 'label')
29
+
30
+ api_expects(:organizations, :cdn_configuration) do |par|
31
+ par['id'].to_s == org_id &&
32
+ par['username'] == username &&
33
+ par['url'] == url &&
34
+ par['password'] == password &&
35
+ par['ssl_ca_credential_id'].to_s == ssl_cred_id &&
36
+ par['upstream_organization_label'] == upstream_label &&
37
+ par['type'] == type
38
+ end
39
+
40
+ assert_equal(
41
+ 0,
42
+ run_cmd(@cmd + params).exit_code
43
+ )
44
+ end
45
+ end
@@ -0,0 +1,26 @@
1
+ require_relative '../test_helper'
2
+
3
+ module HammerCLIKatello
4
+ describe 'Organization::DeleteCommand' do
5
+ it 'it requires the organization ID and must be resolved from name' do
6
+ api_expects(:organizations, :index).with_params(
7
+ :search => "name = \"my_org\"", :per_page => 1000, :page => 1
8
+ )
9
+ run_cmd(%w(organization delete --name my_org))
10
+ end
11
+
12
+ it 'it requires the organization ID and must be resolved from name' do
13
+ api_expects(:organizations, :index).with_params(
14
+ :search => "label = \"my_org\"", :per_page => 1000, :page => 1
15
+ )
16
+ run_cmd(%w(organization delete --label my_org))
17
+ end
18
+
19
+ it 'it requires the organization ID and must be resolved from name' do
20
+ api_expects(:organizations, :index).with_params(
21
+ :search => "title = \"my_org\"", :per_page => 1000, :page => 1
22
+ )
23
+ run_cmd(%w(organization delete --title my_org))
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,45 @@
1
+ require_relative '../test_helper'
2
+ require 'hammer_cli_katello/organization'
3
+ require 'hammer_cli_katello/associating_commands'
4
+
5
+ describe HammerCLIKatello::Organization::InfoCommand do
6
+ before do
7
+ @cmd = %w(organization info)
8
+ end
9
+
10
+ let(:cdn_configuration) do
11
+ { "type" => 'network_sync' }
12
+ end
13
+
14
+ it "includes simple content access attributes" do
15
+ org_id = 2
16
+ params = ["--id=#{org_id}"]
17
+ api_expects(:organizations, :index).returns(index_response([{'id' => org_id}]))
18
+
19
+ api_expects(:organizations, :show)
20
+ .with_params('id' => org_id.to_s)
21
+ .returns("simple_content_access" => true, "id" => org_id,
22
+ "cdn_configuration" => cdn_configuration)
23
+ result = run_cmd(@cmd + params)
24
+ expected = success_result(FieldMatcher.new('Simple Content Access', 'Enabled'))
25
+ assert_cmd(expected, result)
26
+ end
27
+
28
+ it "includes cdn configuration attributes" do
29
+ org_id = 2
30
+ params = ["--id=#{org_id}"]
31
+ api_expects(:organizations, :index).returns(index_response([{'id' => org_id}]))
32
+
33
+ cdn_configuration = {
34
+ "url" => "https://cdn.redhat.com",
35
+ "type" => "redhat_cdn"
36
+ }
37
+
38
+ api_expects(:organizations, :show)
39
+ .with_params('id' => org_id.to_s)
40
+ .returns("cdn_configuration" => cdn_configuration, "id" => org_id)
41
+ result = run_cmd(@cmd + params)
42
+ expected = success_result(FieldMatcher.new('URL', cdn_configuration["url"]))
43
+ assert_cmd(expected, result)
44
+ end
45
+ end
@@ -0,0 +1,10 @@
1
+ require_relative '../search_helpers'
2
+
3
+ module OrganizationHelpers
4
+ include SearchHelpers
5
+
6
+ def expect_organization_search(name_or_label, id, field: 'name')
7
+ expect_generic_search(:organizations, params: {search: "#{field} = \"#{name_or_label}\""},
8
+ returns: {'id' => id}).at_least_once
9
+ end
10
+ end