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,47 @@
1
+ {
2
+ "library": true,
3
+ "id": 3,
4
+ "name": "Library",
5
+ "label": "Library",
6
+ "description": null,
7
+ "organization": {
8
+ "name": "Default Organization",
9
+ "label": "Default_Organization",
10
+ "id": 1
11
+ },
12
+ "syncable": true,
13
+ "counts": {
14
+ "content_hosts": 0,
15
+ "content_views": 1,
16
+ "products": 3,
17
+ "yum_repositories": 1,
18
+ "packages": 32,
19
+ "package_groups": 2,
20
+ "errata": 4,
21
+ "puppet_repositories": 0,
22
+ "puppet_modules": 0,
23
+ "docker_repositories": 0,
24
+ "docker_images": 0
25
+ },
26
+ "content_views": [
27
+ {
28
+ "id": 3,
29
+ "label": "CV1",
30
+ "name": "CV1",
31
+ "composite": false,
32
+ "last_published": "2016-01-08 15:44:10 +0100",
33
+ "counts": {
34
+ "content_hosts": 0,
35
+ "products": 3,
36
+ "yum_repositories": 1,
37
+ "packages": 32,
38
+ "package_groups": 2,
39
+ "errata": 4,
40
+ "puppet_repositories": 0,
41
+ "puppet_modules": 0,
42
+ "docker_repositories": 0,
43
+ "docker_images": 0
44
+ }
45
+ }
46
+ ]
47
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "last_sync_time": "2016-01-10 00:27:51 +0100",
3
+ "active_sync_tasks": [],
4
+ "last_failed_sync_tasks": [],
5
+ "lifecycle_environments": []
6
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "failed1": {
3
+ "id": "ab3e2ae3-fbed-466d-81fc-37130fc9efaa",
4
+ "label": "Actions::Katello::ContentView::CapsuleGenerateAndSync",
5
+ "pending": true,
6
+ "started_at": "2016-01-16 05:13:33 +0100",
7
+ "ended_at": null,
8
+ "state": "paused",
9
+ "result": "error",
10
+ "progress": 0.3,
11
+ "humanized": {
12
+ "action": "Generate Capsule Metadata and Sync",
13
+ "errors": [
14
+ "404 Resource Not Found"
15
+ ]
16
+ }
17
+ },
18
+ "failed2": {
19
+ "id": "ab3e2ae3-fbed-466d-81fc-37130fc9efbb",
20
+ "label": "Actions::Katello::ContentView::CapsuleGenerateAndSync",
21
+ "pending": true,
22
+ "started_at": "2016-01-16 05:13:33 +0100",
23
+ "ended_at": null,
24
+ "state": "paused",
25
+ "result": "error",
26
+ "progress": 0.5,
27
+ "humanized": {
28
+ "action": "Generate Capsule Metadata and Sync",
29
+ "errors": [
30
+ "404 Resource Not Found"
31
+ ]
32
+ }
33
+ },
34
+ "running": {
35
+ "id": "a484eb0d-b40d-4c4c-b187-bb6291d78652",
36
+ "label": "Actions::Katello::CapsuleContent::Sync",
37
+ "pending": true,
38
+ "started_at": "2016-01-16 05:14:16 +0100",
39
+ "ended_at": null,
40
+ "state": "pending",
41
+ "result": "success",
42
+ "progress": 0.6666666666666666,
43
+ "humanized": {
44
+ "action": "Synchronize capsule content",
45
+ "errors": []
46
+ }
47
+ },
48
+ "successful": {
49
+ "id": "a484eb0d-b40d-4c4c-b187-bb6291d78652",
50
+ "label": "Actions::Katello::CapsuleContent::Sync",
51
+ "pending": true,
52
+ "started_at": "2016-01-16 05:14:16 +0100",
53
+ "ended_at": null,
54
+ "state": "paused",
55
+ "result": "error",
56
+ "progress": 0.5,
57
+ "humanized": {
58
+ "action": "Synchronize capsule content",
59
+ "errors": []
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,61 @@
1
+ require File.join(File.dirname(__FILE__), '../../test_helper')
2
+ require File.join(File.dirname(__FILE__), './capsule_content_helpers')
3
+
4
+ describe 'capsule content info' do
5
+ include CapsuleContentHelpers
6
+
7
+ before do
8
+ @cmd = %w(capsule content info)
9
+ end
10
+ let(:params) { ['--id=3'] }
11
+
12
+ it "lists content counts" do
13
+ @sync_status = load_json('./data/sync_status.json', __FILE__)
14
+ @sync_status['lifecycle_environments'] = [
15
+ load_json('./data/library_env.json', __FILE__)
16
+ ]
17
+
18
+ ex = api_expects(:capsule_content, :sync_status, 'Get sync info') do |par|
19
+ par['id'] == 3
20
+ end
21
+ ex.returns(@sync_status)
22
+
23
+ output = OutputMatcher.new([
24
+ "Lifecycle Environments:",
25
+ " 1) Name: Library",
26
+ " Organization: Default Organization",
27
+ " Content Views:",
28
+ " 1) Name: CV1",
29
+ " Composite: no",
30
+ " Last Published: 2016/01/08 15:44:10",
31
+ " Content:",
32
+ " Hosts: 0",
33
+ " Products: 3",
34
+ " Yum repos: 1",
35
+ " Container Image repos: 0",
36
+ " Packages: 32",
37
+ " Package groups: 2",
38
+ " Errata: 4"
39
+ ])
40
+ expected_result = success_result(output)
41
+
42
+ result = run_cmd(@cmd + params)
43
+ assert_cmd(expected_result, result)
44
+ end
45
+
46
+ it "resolves id from name" do
47
+ params = ['--name=capsule1']
48
+
49
+ api_expects(:capsule_content, :sync_status, 'Get sync info') do |par|
50
+ par['id'] == 3
51
+ end
52
+ expect_capsule_search('capsule1', 3)
53
+
54
+ run_cmd(@cmd + params)
55
+ end
56
+
57
+ it "is mounted under proxy too" do
58
+ result = run_cmd(['proxy', 'content', 'info', '-h'])
59
+ assert_exit_code_equal(HammerCLI::EX_OK, result.exit_code)
60
+ end
61
+ end
@@ -0,0 +1,19 @@
1
+ require_relative '../../test_helper'
2
+ require_relative 'capsule_content_helpers'
3
+ require 'hammer_cli_katello/capsule'
4
+
5
+ module HammerCLIKatello
6
+ module Capsule
7
+ class Content
8
+ describe Content::ListLifecycleEnvironmentsCommand do
9
+ include CapsuleContentHelpers
10
+
11
+ it 'allows minimal options' do
12
+ expect_lifecycle_environments_list(params: {'id' => 1}, returns: {})
13
+
14
+ run_cmd(%w(capsule content lifecycle-environments --id 1))
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,40 @@
1
+ require_relative '../../test_helper'
2
+ require_relative 'capsule_content_helpers'
3
+ require_relative '../../lifecycle_environment/lifecycle_environment_helpers'
4
+ require_relative '../../organization/organization_helpers'
5
+ require 'hammer_cli_katello/capsule'
6
+
7
+ module HammerCLIKatello
8
+ module Capsule
9
+ class Content
10
+ describe Content::RemoveLifecycleEnvironmentCommand do
11
+ include CapsuleContentHelpers
12
+ include LifecycleEnvironmentHelpers
13
+ include OrganizationHelpers
14
+
15
+ it 'allows minimal options' do
16
+ expect_lifecycle_environment_remove('id' => 1, 'environment_id' => 2)
17
+
18
+ run_cmd(%w(capsule content remove-lifecycle-environment --id 1 --environment-id 2))
19
+ end
20
+
21
+ it 'resolves environment ID from name' do
22
+ expect_lifecycle_environment_search('3', 'env2', 2)
23
+ expect_lifecycle_environment_remove('id' => 1, 'environment_id' => 2)
24
+
25
+ run_cmd(%w(capsule content remove-lifecycle-environment --id 1 --environment env2
26
+ --organization-id 3))
27
+ end
28
+
29
+ it 'resolves organization ID from name' do
30
+ expect_organization_search('org3', 3)
31
+ expect_lifecycle_environment_search(3, 'env2', 2)
32
+ expect_lifecycle_environment_remove('id' => 1, 'environment_id' => 2)
33
+
34
+ run_cmd(%w(capsule content remove-lifecycle-environment --id 1 --environment env2
35
+ --organization org3))
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,107 @@
1
+ require File.join(File.dirname(__FILE__), '../../test_helper')
2
+ require File.join(File.dirname(__FILE__), './capsule_content_helpers')
3
+
4
+ describe 'capsule content synchronization_status' do
5
+ include CapsuleContentHelpers
6
+
7
+ before do
8
+ @cmd = ['capsule', 'content', 'synchronization-status']
9
+ end
10
+
11
+ describe "output" do
12
+ let(:params) { ['--id=3'] }
13
+
14
+ before do
15
+ @sync_status = load_json('./data/sync_status.json', __FILE__)
16
+ ex = api_expects(:capsule_content, :sync_status, 'Get sync info') do |par|
17
+ par['id'] == 3
18
+ end
19
+ ex.returns(@sync_status)
20
+ end
21
+
22
+ it "shows last sync" do
23
+ expected_result = success_result(FieldMatcher.new("Last sync", "2016/01/10 00:27:51"))
24
+
25
+ result = run_cmd(@cmd + params)
26
+ assert_cmd(expected_result, result)
27
+ end
28
+
29
+ it "shows last sync time" do
30
+ expected_result = success_result(FieldMatcher.new("Last sync", "2016/01/10 00:27:51"))
31
+
32
+ result = run_cmd(@cmd + params)
33
+ assert_cmd(expected_result, result)
34
+ end
35
+
36
+ it "shows the proxy status" do
37
+ expected_result = success_result(FieldMatcher.new("Status", "Capsule is synchronized"))
38
+
39
+ result = run_cmd(@cmd + params)
40
+ assert_cmd(expected_result, result)
41
+ end
42
+
43
+ it "shows environments that can be synchronized" do
44
+ @sync_status['lifecycle_environments'] = [
45
+ load_json('./data/library_env.json', __FILE__)
46
+ ]
47
+
48
+ output = FieldMatcher.new("Status", "1 environment(s) can be synchronized: Library")
49
+ expected_result = success_result(output)
50
+
51
+ result = run_cmd(@cmd + params)
52
+ assert_cmd(expected_result, result)
53
+ end
54
+
55
+ it "shows last sync errors" do
56
+ tasks = load_json('./data/sync_tasks.json', __FILE__)
57
+ @sync_status['last_failed_sync_tasks'] = [
58
+ tasks['failed1'],
59
+ tasks['failed2']
60
+ ]
61
+
62
+ output = OutputMatcher.new([
63
+ "Last failure:",
64
+ " Task id: ab3e2ae3-fbed-466d-81fc-37130fc9efbb",
65
+ " Messages:",
66
+ " 404 Resource Not Found"
67
+ ])
68
+ expected_result = success_result(output)
69
+
70
+ result = run_cmd(@cmd + params)
71
+ assert_cmd(expected_result, result)
72
+ end
73
+
74
+ it "shows currently running tasks" do
75
+ tasks = load_json('./data/sync_tasks.json', __FILE__)
76
+ @sync_status['active_sync_tasks'] = [
77
+ tasks['running']
78
+ ]
79
+
80
+ output = OutputMatcher.new([
81
+ "Currently running sync tasks:",
82
+ " 1) Task id: a484eb0d-b40d-4c4c-b187-bb6291d78652",
83
+ " Progress: 66%"
84
+ ])
85
+ expected_result = success_result(output)
86
+
87
+ result = run_cmd(@cmd + params)
88
+ assert_cmd(expected_result, result)
89
+ end
90
+ end
91
+
92
+ it "resolves id from name" do
93
+ params = ['--name=capsule1']
94
+
95
+ api_expects(:capsule_content, :sync_status, 'Get sync info') do |par|
96
+ par['id'] == 3
97
+ end
98
+ expect_capsule_search('capsule1', 3)
99
+
100
+ run_cmd(@cmd + params)
101
+ end
102
+
103
+ it "is mounted under proxy too" do
104
+ result = run_cmd(['proxy', 'content', 'synchronization-status', '-h'])
105
+ assert_exit_code_equal(HammerCLI::EX_OK, result.exit_code)
106
+ end
107
+ end
@@ -0,0 +1,25 @@
1
+ require_relative '../test_helper'
2
+ require_relative 'capsule_helpers'
3
+ require 'hammer_cli_katello/capsule'
4
+
5
+ module HammerCLIKatello
6
+ describe Capsule do
7
+ describe InfoCommand do
8
+ include CapsuleHelpers
9
+
10
+ it 'allows minimal options' do
11
+ expect_capsule_info('id' => '1')
12
+
13
+ run_cmd(%w(capsule info --id 1))
14
+ end
15
+
16
+ it 'resolves capsule ID from name' do
17
+ expect_generic_capsule_search(
18
+ params: { search: "name = \"capsule1\"" }, returns: {'id' => 1})
19
+ expect_capsule_info('id' => 1)
20
+
21
+ run_cmd(%w(capsule info --name capsule1))
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,24 @@
1
+ require_relative '../test_helper'
2
+ require_relative 'capsule_helpers'
3
+ require 'hammer_cli_katello/capsule'
4
+
5
+ module HammerCLIKatello
6
+ describe Capsule do
7
+ describe ListCommand do
8
+ include CapsuleHelpers
9
+
10
+ it 'allows minimal options' do
11
+ expect_generic_capsule_search
12
+
13
+ run_cmd(%w(capsule list))
14
+ end
15
+
16
+ it 'allows search' do
17
+ expect_generic_capsule_search(
18
+ params: { 'search' => 'search' }, returns: {})
19
+
20
+ run_cmd(%w(capsule list --search search))
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,32 @@
1
+ require File.join(File.dirname(__FILE__), '../test_helper')
2
+
3
+ describe 'create content-credentials' do
4
+ before do
5
+ @cmd = %w(content-credentials create)
6
+ @base_params = ["--organization-id=#{org_id}", "--name=#{name}"]
7
+ end
8
+
9
+ let(:org_id) { 1 }
10
+ let(:name) { 'sslcert' }
11
+ let(:cert) { File.join(File.dirname(__FILE__), 'data', 'test_cert.json') }
12
+
13
+ it 'Creates a SSL Content Credential' do
14
+ params = ["--path=#{cert}", '--content-type=cert']
15
+
16
+ api_expects(:content_credentials, :create, 'Create a Content Credential')
17
+
18
+ expected_result = success_result("Content Credential created.\n")
19
+ result = run_cmd(@cmd + @base_params + params)
20
+ assert_cmd(expected_result, result)
21
+ end
22
+
23
+ it 'Create a GPG Key Content Credential' do
24
+ params = ["--path=#{cert}", '--content-type=gpg_key']
25
+
26
+ api_expects(:content_credentials, :create, 'Create a Content Credential')
27
+
28
+ expected_result = success_result("Content Credential created.\n")
29
+ result = run_cmd(@cmd + @base_params + params)
30
+ assert_cmd(expected_result, result)
31
+ end
32
+ end
@@ -0,0 +1,43 @@
1
+ {
2
+ "name":"test_cert",
3
+ "content_type":"cert",
4
+ "content":"hi",
5
+ "id":2,
6
+ "organization_id":1,
7
+ "organization":{
8
+ "name":"org2",
9
+ "label":"org2",
10
+ "id":1
11
+ },
12
+ "created_at":"2020-01-28 09:30:54 -0500",
13
+ "updated_at":"2020-01-28 09:30:54 -0500",
14
+ "gpg_key_products":[
15
+
16
+ ],
17
+ "gpg_key_repos":[
18
+
19
+ ],
20
+ "ssl_ca_products":[
21
+
22
+ ],
23
+ "ssl_ca_root_repos":[
24
+
25
+ ],
26
+ "ssl_client_products":[
27
+
28
+ ],
29
+ "ssl_client_root_repos":[
30
+
31
+ ],
32
+ "ssl_key_products":[
33
+
34
+ ],
35
+ "ssl_key_root_repos":[
36
+
37
+ ],
38
+ "permissions":{
39
+ "view_content_credenials":true,
40
+ "edit_content_credenials":true,
41
+ "destroy_content_credenials":true
42
+ }
43
+ }
@@ -0,0 +1,50 @@
1
+ require File.join(File.dirname(__FILE__), '../test_helper')
2
+ require File.join(File.dirname(__FILE__), '../product/product_helpers')
3
+
4
+ def expect_credentials_search(org_id, name, id)
5
+ api_expects(:content_credentials, :index, 'List content credentials')
6
+ .with_params('name' => name, 'organization_id' => org_id)
7
+ .returns(index_response([{'id' => id}]))
8
+ end
9
+
10
+ describe "get content-credentials info" do
11
+ include ProductHelpers
12
+
13
+ before do
14
+ @cmd = %w(content-credentials info)
15
+ end
16
+
17
+ let(:org_id) { 1 }
18
+ let(:product_id) { 2 }
19
+ let(:key_id) { 3 }
20
+
21
+ it "Shows information about a content credental" do
22
+ params = ["--organization-id=#{org_id}", "--name=test_key"]
23
+
24
+ expect_credentials_search(org_id, 'test_key', key_id)
25
+
26
+ ex = api_expects(:content_credentials, :show, "Get info") do |par|
27
+ par["id"] == key_id
28
+ end
29
+
30
+ ex.returns({})
31
+
32
+ result = run_cmd(@cmd + params)
33
+ assert_equal(result.exit_code, 0)
34
+ end
35
+
36
+ it "Shows information about a key with organization-id and key name" do
37
+ params = ["--name=test_key", "--organization-id=#{org_id}"]
38
+
39
+ expect_credentials_search(org_id, "test_key", key_id)
40
+
41
+ ex2 = api_expects(:content_credentials, :show, "Get info") do |par|
42
+ par["id"] == key_id
43
+ end
44
+
45
+ ex2.returns({})
46
+
47
+ result = run_cmd(@cmd + params)
48
+ assert_equal(result.exit_code, 0)
49
+ end
50
+ end
@@ -0,0 +1,66 @@
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 credentials' do
5
+ include LifecycleEnvironmentHelpers
6
+
7
+ before do
8
+ @cmd = %w(content-credentials 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 keys" do
30
+ params = ["--organization-id=#{org_id}"]
31
+
32
+ ex = api_expects(:content_credentials, :index, 'Organization content credentials 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
+
39
+ expected_result = success_result("---|------|-------------
40
+ ID | NAME | CONTENT TYPE
41
+ ---|------|-------------
42
+ ")
43
+
44
+ result = run_cmd(@cmd + params)
45
+ assert_cmd(expected_result, result)
46
+ end
47
+
48
+ it "lists the keys by content-type" do
49
+ params = ['--content-type=gpg', "--organization-id=#{org_id}"]
50
+
51
+ ex = api_expects(:content_credentials, :index, 'content-type') do |par|
52
+ par['organization_id'] == org_id && par['page'] == 1 &&
53
+ par['per_page'] == 1000
54
+ end
55
+
56
+ ex.returns(empty_response)
57
+
58
+ expected_result = CommandExpectation.new("---|------|-------------
59
+ ID | NAME | CONTENT TYPE
60
+ ---|------|-------------
61
+ ")
62
+
63
+ result = run_cmd(@cmd + params)
64
+ assert_cmd(expected_result, result)
65
+ end
66
+ end