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.
- checksums.yaml +4 -4
- data/lib/hammer_cli_katello/foreman_search_options_creators.rb +0 -12
- data/lib/hammer_cli_katello/host_collection.rb +6 -0
- data/lib/hammer_cli_katello/host_errata.rb +1 -1
- data/lib/hammer_cli_katello/repository.rb +0 -27
- data/lib/hammer_cli_katello/version.rb +1 -1
- data/test/data/2.5/foreman_api.json +1 -0
- data/test/data/3.0/foreman_api.json +1 -0
- data/test/data/3.10/foreman_api.json +1 -0
- data/test/data/3.11/foreman_api.json +1 -0
- data/test/data/3.12/foreman_api.json +1 -0
- data/test/data/3.13/foreman_api.json +1 -0
- data/test/data/3.14/foreman_api.json +1 -0
- data/test/data/3.15/foreman_api.json +1 -0
- data/test/data/3.16/foreman_api.json +1 -0
- data/test/data/3.17/foreman_api.json +1 -0
- data/test/data/3.18/foreman_api.json +1 -0
- data/test/data/3.19/foreman_api.json +1 -0
- data/test/data/3.2/foreman_api.json +1 -0
- data/test/data/3.4/foreman_api.json +1 -0
- data/test/data/3.5/foreman_api.json +1 -0
- data/test/data/3.6/foreman_api.json +1 -0
- data/test/data/3.7/foreman_api.json +1 -0
- data/test/data/3.8/foreman_api.json +1 -0
- data/test/data/3.9/foreman_api.json +1 -0
- data/test/data/4.0/foreman_api.json +1 -0
- data/test/data/4.1/foreman_api.json +1 -0
- data/test/data/Readme.md +5 -0
- data/test/functional/activation_key/add_host_collection_test.rb +62 -0
- data/test/functional/activation_key/content_override_test.rb +92 -0
- data/test/functional/activation_key/create_test.rb +33 -0
- data/test/functional/activation_key/data/activation_key.json +17 -0
- data/test/functional/activation_key/info_test.rb +29 -0
- data/test/functional/activation_key/list_test.rb +68 -0
- data/test/functional/activation_key/product_content_test.rb +23 -0
- data/test/functional/activation_key/remove_host_collection_test.rb +62 -0
- data/test/functional/activation_key/subscriptions_test.rb +74 -0
- data/test/functional/activation_key/update_test.rb +26 -0
- data/test/functional/apipie_helper_test.rb +31 -0
- data/test/functional/capsule/capsule_helpers.rb +13 -0
- data/test/functional/capsule/content/add_lifecycle_environment_test.rb +40 -0
- data/test/functional/capsule/content/cancel_synchronization_test.rb +42 -0
- data/test/functional/capsule/content/capsule_content_helpers.rb +24 -0
- data/test/functional/capsule/content/data/library_env.json +47 -0
- data/test/functional/capsule/content/data/sync_status.json +6 -0
- data/test/functional/capsule/content/data/sync_tasks.json +62 -0
- data/test/functional/capsule/content/info_test.rb +61 -0
- data/test/functional/capsule/content/lifecycle_environments_test.rb +19 -0
- data/test/functional/capsule/content/remove_lifecycle_environment_test.rb +40 -0
- data/test/functional/capsule/content/synchronization_status_test.rb +107 -0
- data/test/functional/capsule/info_test.rb +25 -0
- data/test/functional/capsule/list_test.rb +24 -0
- data/test/functional/content_credentials/create_test.rb +32 -0
- data/test/functional/content_credentials/data/test_cert.json +43 -0
- data/test/functional/content_credentials/info_test.rb +50 -0
- data/test/functional/content_credentials/list_test.rb +66 -0
- data/test/functional/content_export/complete/library_test.rb +155 -0
- data/test/functional/content_export/complete/version_test.rb +252 -0
- data/test/functional/content_export/content_export_helpers.rb +26 -0
- data/test/functional/content_export/generate_metadata_test.rb +64 -0
- data/test/functional/content_export/incremental/library_test.rb +172 -0
- data/test/functional/content_export/incremental/version_test.rb +268 -0
- data/test/functional/content_export/list_test.rb +64 -0
- data/test/functional/content_import/library_test.rb +85 -0
- data/test/functional/content_import/list_test.rb +65 -0
- data/test/functional/content_import/metadata.json +1 -0
- data/test/functional/content_import/version_test.rb +85 -0
- data/test/functional/content_view/add_content_view_version_test.rb +88 -0
- data/test/functional/content_view/add_repository_test.rb +21 -0
- data/test/functional/content_view/component/add_test.rb +177 -0
- data/test/functional/content_view/component/list_test.rb +55 -0
- data/test/functional/content_view/component/remove_test.rb +107 -0
- data/test/functional/content_view/component/update_test.rb +134 -0
- data/test/functional/content_view/content_view_helpers.rb +20 -0
- data/test/functional/content_view/copy_test.rb +53 -0
- data/test/functional/content_view/create_test.rb +34 -0
- data/test/functional/content_view/delete_test.rb +62 -0
- data/test/functional/content_view/filter/create_test.rb +57 -0
- data/test/functional/content_view/filter/delete_test.rb +90 -0
- data/test/functional/content_view/filter/info_test.rb +89 -0
- data/test/functional/content_view/filter/list_test.rb +98 -0
- data/test/functional/content_view/filter/update_test.rb +91 -0
- data/test/functional/content_view/list_test.rb +68 -0
- data/test/functional/content_view/publish_test.rb +24 -0
- data/test/functional/content_view/purge_test.rb +97 -0
- data/test/functional/content_view/remove_content_view_version_test.rb +88 -0
- data/test/functional/content_view/remove_test.rb +79 -0
- data/test/functional/content_view/update_test.rb +53 -0
- data/test/functional/content_view/version/incremental_update_test.rb +108 -0
- data/test/functional/content_view/version/list_test.rb +44 -0
- data/test/functional/content_view/version/promote_test.rb +34 -0
- data/test/functional/content_view/version/republish_repositories_test.rb +34 -0
- data/test/functional/content_view/version/update_test.rb +48 -0
- data/test/functional/erratum/erratum_helpers.rb +91 -0
- data/test/functional/erratum/info_test.rb +29 -0
- data/test/functional/erratum/list_test.rb +108 -0
- data/test/functional/file/file_helpers.rb +13 -0
- data/test/functional/file/info_test.rb +162 -0
- data/test/functional/file/list_test.rb +112 -0
- data/test/functional/filter_rule/create_test.rb +99 -0
- data/test/functional/filter_rule/delete_test.rb +104 -0
- data/test/functional/filter_rule/filter_rule_helpers.rb +12 -0
- data/test/functional/filter_rule/info_test.rb +104 -0
- data/test/functional/filter_rule/list_test.rb +91 -0
- data/test/functional/filter_rule/update_test.rb +104 -0
- data/test/functional/host/errata/apply_test.rb +45 -0
- data/test/functional/host/errata/info_test.rb +27 -0
- data/test/functional/host/errata/list_test.rb +49 -0
- data/test/functional/host/errata/recalculate_test.rb +40 -0
- data/test/functional/host/extensions/create_test.rb +95 -0
- data/test/functional/host/extensions/data/host.json +320 -0
- data/test/functional/host/extensions/data/host_list.json +117 -0
- data/test/functional/host/extensions/info_test.rb +35 -0
- data/test/functional/host/extensions/list_test.rb +21 -0
- data/test/functional/host/extensions/update_test.rb +70 -0
- data/test/functional/host/host_helpers.rb +8 -0
- data/test/functional/host/subscription/attach_test.rb +54 -0
- data/test/functional/host/subscription/auto_attach_test.rb +35 -0
- data/test/functional/host/subscription/content_override_test.rb +96 -0
- data/test/functional/host/subscription/product_content_test.rb +27 -0
- data/test/functional/host/subscription/register_test.rb +53 -0
- data/test/functional/host/subscription/remove_test.rb +52 -0
- data/test/functional/host/subscription/unregister_test.rb +37 -0
- data/test/functional/host/traces/list_test.rb +37 -0
- data/test/functional/host/traces/resolve_test.rb +31 -0
- data/test/functional/host_collection/add_host_test.rb +90 -0
- data/test/functional/host_collection/content_api_expectations.rb +35 -0
- data/test/functional/host_collection/content_install_test.rb +62 -0
- data/test/functional/host_collection/content_remove_test.rb +37 -0
- data/test/functional/host_collection/content_update_test.rb +37 -0
- data/test/functional/host_collection/copy_test.rb +64 -0
- data/test/functional/host_collection/create_test.rb +54 -0
- data/test/functional/host_collection/delete_test.rb +57 -0
- data/test/functional/host_collection/hosts_test.rb +39 -0
- data/test/functional/host_collection/info_test.rb +57 -0
- data/test/functional/host_collection/list_test.rb +63 -0
- data/test/functional/host_collection/remove_host_test.rb +90 -0
- data/test/functional/host_collection/update_test.rb +57 -0
- data/test/functional/hostgroup/create_test.rb +112 -0
- data/test/functional/hostgroup/data/hostgroup.json +50 -0
- data/test/functional/hostgroup/info_test.rb +33 -0
- data/test/functional/hostgroup/update_test.rb +120 -0
- data/test/functional/lifecycle_environment/create_test.rb +14 -0
- data/test/functional/lifecycle_environment/lifecycle_environment_helpers.rb +18 -0
- data/test/functional/lifecycle_environment/list_test.rb +38 -0
- data/test/functional/lifecycle_environment/update_test.rb +14 -0
- data/test/functional/local_helper_test.rb +30 -0
- data/test/functional/module_stream/info_test.rb +58 -0
- data/test/functional/module_stream/list_test.rb +53 -0
- data/test/functional/organization/delete_test.rb +26 -0
- data/test/functional/organization/info_test.rb +22 -0
- data/test/functional/organization/organization_helpers.rb +10 -0
- data/test/functional/package/list_test.rb +158 -0
- data/test/functional/package_group/list_test.rb +38 -0
- data/test/functional/ping_test.rb +59 -0
- data/test/functional/product/create_test.rb +54 -0
- data/test/functional/product/delete_test.rb +41 -0
- data/test/functional/product/info_test.rb +33 -0
- data/test/functional/product/list_test.rb +58 -0
- data/test/functional/product/product_helpers.rb +24 -0
- data/test/functional/product/remove_sync_plan_test.rb +35 -0
- data/test/functional/product/set_sync_plan_test.rb +49 -0
- data/test/functional/product/update_proxy.rb +48 -0
- data/test/functional/product/update_test.rb +46 -0
- data/test/functional/repository/create_test.rb +21 -0
- data/test/functional/repository/delete_test.rb +95 -0
- data/test/functional/repository/info_test.rb +156 -0
- data/test/functional/repository/list_test.rb +68 -0
- data/test/functional/repository/remove_content_test.rb +108 -0
- data/test/functional/repository/repository_helpers.rb +18 -0
- data/test/functional/repository/synchronize_test.rb +57 -0
- data/test/functional/repository/update_test.rb +149 -0
- data/test/functional/repository/upload_test.rb +345 -0
- data/test/functional/repository_set/available_repositories_test.rb +18 -0
- data/test/functional/repository_set/disable_test.rb +42 -0
- data/test/functional/repository_set/enable_test.rb +42 -0
- data/test/functional/repository_set/info_test.rb +17 -0
- data/test/functional/repository_set/list_test.rb +18 -0
- data/test/functional/repository_set/repository_set_helpers.rb +20 -0
- data/test/functional/search_helpers.rb +17 -0
- data/test/functional/simple_content_access/disable_test.rb +48 -0
- data/test/functional/simple_content_access/enable_test.rb +46 -0
- data/test/functional/srpm/list_test.rb +92 -0
- data/test/functional/subscription/list_test.rb +86 -0
- data/test/functional/sync_plan/create_test.rb +60 -0
- data/test/functional/sync_plan/delete_test.rb +46 -0
- data/test/functional/sync_plan/info_test.rb +37 -0
- data/test/functional/sync_plan/list_test.rb +31 -0
- data/test/functional/sync_plan/sync_plan_helpers.rb +8 -0
- data/test/functional/sync_plan/update_test.rb +44 -0
- data/test/functional/test_helper.rb +24 -0
- data/test/task_helper.rb +7 -0
- data/test/test_helper.rb +38 -0
- data/test/unit/id_name_options_validator_test.rb +96 -0
- data/test/unit/id_resolver_test.rb +58 -0
- data/test/unit/messages_test.rb +7 -0
- data/test/unit/search_options_creators_test.rb +145 -0
- metadata +388 -6
@@ -0,0 +1,88 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
require_relative '../organization/organization_helpers'
|
3
|
+
require_relative '../content_view/content_view_helpers'
|
4
|
+
require 'hammer_cli_katello/content_view'
|
5
|
+
|
6
|
+
module HammerCLIKatello
|
7
|
+
describe ContentView::RemoveContentViewVersionCommand do
|
8
|
+
include OrganizationHelpers
|
9
|
+
include ContentViewHelpers
|
10
|
+
|
11
|
+
it 'allows minimal options' do
|
12
|
+
ex = api_expects(:content_views, :show) do |p|
|
13
|
+
p[:id] == '1'
|
14
|
+
end
|
15
|
+
ex.returns('id' => 1, 'component_ids' => [1, 3, 6])
|
16
|
+
api_expects(:content_views, :update) do |p|
|
17
|
+
p['id'] == '1' && p['component_ids'] == %w(1 3)
|
18
|
+
end
|
19
|
+
run_cmd(%w(content-view remove-version --id 1 --content-view-version-id 6))
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'resolves content view version ID' do
|
23
|
+
ex = api_expects(:content_view_versions, :index) do |p|
|
24
|
+
p['content_view_id'] == 3 && p['version'] == '2.1'
|
25
|
+
end
|
26
|
+
ex.returns(index_response([{'id' => 6}]))
|
27
|
+
ex.returns('id' => 1, 'component_ids' => [1, 3, 6])
|
28
|
+
ex = api_expects(:content_views, :show) do |p|
|
29
|
+
p[:id] == '1'
|
30
|
+
end
|
31
|
+
ex.returns('id' => 1, 'component_ids' => [1, 3])
|
32
|
+
api_expects(:content_views, :update) do |p|
|
33
|
+
p['id'] == '1' && p['component_ids'] == %w(1 3)
|
34
|
+
end
|
35
|
+
run_cmd(%w(content-view remove-version --id 1 --content-view-id 3 --content-view-version 2.1))
|
36
|
+
end
|
37
|
+
|
38
|
+
describe 'OrganizationOptions' do
|
39
|
+
it 'requires organization if content view name is supplied' do
|
40
|
+
api_expects_no_call
|
41
|
+
result = run_cmd(%w(content-view remove-version --name cv1))
|
42
|
+
assert(result.err[/--organization-id, --organization, --organization-label is required/],
|
43
|
+
"Organization option requirements are validated")
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'allows organization id' do
|
47
|
+
expect_content_view_search('1', 'cv2', 2)
|
48
|
+
ex = api_expects(:content_views, :show) do |p|
|
49
|
+
p[:id] == 2
|
50
|
+
end
|
51
|
+
ex.returns('id' => 2, 'component_ids' => [1, 2, 3])
|
52
|
+
api_expects(:content_views, :update) do |p|
|
53
|
+
p['id'] == 2 && p['component_ids'] == %w(1 2)
|
54
|
+
end
|
55
|
+
run_cmd(%w(content-view remove-version --name cv2 --organization-id 1
|
56
|
+
--content-view-version-id 3))
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'allows organization name' do
|
60
|
+
expect_organization_search('org1', 1)
|
61
|
+
expect_content_view_search(1, 'cv2', 2)
|
62
|
+
ex = api_expects(:content_views, :show) do |p|
|
63
|
+
p[:id] == 2
|
64
|
+
end
|
65
|
+
ex.returns('id' => 2, 'component_ids' => [1, 2, 3])
|
66
|
+
api_expects(:content_views, :update) do |p|
|
67
|
+
p['id'] == 2 && p['component_ids'] == %w(1 2)
|
68
|
+
end
|
69
|
+
run_cmd(%w(content-view remove-version --name cv2 --organization org1
|
70
|
+
--content-view-version-id 3))
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'allows organization label' do
|
74
|
+
expect_organization_search('org1', 1, field: 'label')
|
75
|
+
expect_content_view_search(1, 'cv2', 2)
|
76
|
+
ex = api_expects(:content_views, :show) do |p|
|
77
|
+
p[:id] == 2
|
78
|
+
end
|
79
|
+
ex.returns('id' => 2, 'component_ids' => [1, 2, 3])
|
80
|
+
api_expects(:content_views, :update) do |p|
|
81
|
+
p['id'] == 2 && p['component_ids'] == %w(1 2)
|
82
|
+
end
|
83
|
+
run_cmd(%w(content-view remove-version --name cv2 --organization-label org1
|
84
|
+
--content-view-version-id 3))
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
require 'hammer_cli_katello/content_view'
|
3
|
+
|
4
|
+
module HammerCLIKatello
|
5
|
+
describe ContentView::RemoveCommand do
|
6
|
+
include ForemanTaskHelpers
|
7
|
+
|
8
|
+
describe 'content view version options' do
|
9
|
+
it 'allows removing versions by ID' do
|
10
|
+
ex = api_expects(:content_views, :remove) do |p|
|
11
|
+
p['id'] == 1 && p['content_view_version_ids'] == %w(6 7 8)
|
12
|
+
end
|
13
|
+
ex.returns(id: '9')
|
14
|
+
|
15
|
+
expect_foreman_task('9')
|
16
|
+
|
17
|
+
run_cmd(%w(content-view remove --id 1 --content-view-version-ids 6,7,8))
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'allows removing versions by version number' do
|
21
|
+
versions = %w(6.0 7.0 8.0)
|
22
|
+
ids = [6, 7, 8]
|
23
|
+
|
24
|
+
api_expects(:content_view_versions, :index).with_params(
|
25
|
+
'search' => %(version = "#{versions.join('" or version = "')}"),
|
26
|
+
'content_view_id' => 1
|
27
|
+
).returns(index_response(ids.map { |v| { 'id' => v } }))
|
28
|
+
|
29
|
+
api_expects(:content_views, :remove).with_params(
|
30
|
+
'id' => 1, 'content_view_version_ids' => ids
|
31
|
+
).returns(id: '9')
|
32
|
+
|
33
|
+
expect_foreman_task('9')
|
34
|
+
|
35
|
+
run_cmd(%w(content-view remove --id 1 --content-view-versions 6.0,7.0,8.0))
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe 'environment options' do
|
40
|
+
it 'allows removing versions by ID' do
|
41
|
+
ex = api_expects(:content_views, :remove) do |p|
|
42
|
+
p['id'] == 1 && p['environment_ids'] == %w(6 7 8)
|
43
|
+
end
|
44
|
+
ex.returns(id: '9')
|
45
|
+
|
46
|
+
expect_foreman_task('9')
|
47
|
+
|
48
|
+
run_cmd(%w(content-view remove --id 1 --environment-ids 6,7,8))
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'requires organization options when removing environments by name' do
|
52
|
+
api_expects_no_call
|
53
|
+
|
54
|
+
run_cmd(%w(content-view remove --id 1 --environments env6,env7,env8))
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'allows removing environments by name' do
|
58
|
+
environment_ids = [6, 7, 8]
|
59
|
+
all_environment_ids = [3, 4, 5, 6, 7, 8]
|
60
|
+
|
61
|
+
ex = api_expects(:lifecycle_environments, :index) do |p|
|
62
|
+
p['organization_id'] == '1'
|
63
|
+
end
|
64
|
+
ex.returns(index_response(all_environment_ids.map do |id|
|
65
|
+
{'id' => id, 'name' => "env#{id}"}
|
66
|
+
end))
|
67
|
+
|
68
|
+
ex = api_expects(:content_views, :remove) do |p|
|
69
|
+
p['id'] == 1 && p['environment_ids'] == environment_ids
|
70
|
+
end
|
71
|
+
ex.returns(id: '9')
|
72
|
+
|
73
|
+
expect_foreman_task('9')
|
74
|
+
|
75
|
+
run_cmd(%w(content-view remove --id 1 --environments env6,env7,env8 --organization-id 1))
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
require_relative '../organization/organization_helpers'
|
3
|
+
require_relative '../content_view/content_view_helpers'
|
4
|
+
require 'hammer_cli_katello/content_view'
|
5
|
+
|
6
|
+
module HammerCLIKatello
|
7
|
+
describe ContentView::UpdateCommand do
|
8
|
+
include OrganizationHelpers
|
9
|
+
include ContentViewHelpers
|
10
|
+
|
11
|
+
it 'allows minimal options' do
|
12
|
+
api_expects(:content_views, :update) do |p|
|
13
|
+
p['id'] == 2
|
14
|
+
end
|
15
|
+
run_cmd(%w(content-view update --id 2))
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'OrganizationOptions' do
|
19
|
+
it 'requires organization if content view name is supplied' do
|
20
|
+
api_expects_no_call
|
21
|
+
result = run_cmd(%w(content-view update --name cv2))
|
22
|
+
assert(result.err[/--organization-id, --organization, --organization-label is required/],
|
23
|
+
"Organization option requirements are validated")
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'allows organization id' do
|
27
|
+
expect_content_view_search('1', 'cv2', 2)
|
28
|
+
api_expects(:content_views, :update) do |p|
|
29
|
+
p['id'] == 2
|
30
|
+
end
|
31
|
+
run_cmd(%w(content-view update --name cv2 --organization-id 1))
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'allows organization name' do
|
35
|
+
expect_organization_search('org1', 1)
|
36
|
+
expect_content_view_search(1, 'cv2', 2)
|
37
|
+
api_expects(:content_views, :update) do |p|
|
38
|
+
p['id'] == 2
|
39
|
+
end
|
40
|
+
run_cmd(%w(content-view update --name cv2 --organization org1))
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'allows organization label' do
|
44
|
+
expect_organization_search('org1', 1, field: 'label')
|
45
|
+
expect_content_view_search(1, 'cv2', 2)
|
46
|
+
api_expects(:content_views, :update) do |p|
|
47
|
+
p['id'] == 2
|
48
|
+
end
|
49
|
+
run_cmd(%w(content-view update --name cv2 --organization-label org1))
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../../test_helper')
|
2
|
+
require File.join(File.dirname(__FILE__), '../../organization/organization_helpers')
|
3
|
+
require File.join(File.dirname(__FILE__),
|
4
|
+
'../../lifecycle_environment/lifecycle_environment_helpers')
|
5
|
+
|
6
|
+
describe 'content-view version incremental-update' do
|
7
|
+
include OrganizationHelpers
|
8
|
+
include LifecycleEnvironmentHelpers
|
9
|
+
include ForemanTaskHelpers
|
10
|
+
|
11
|
+
before do
|
12
|
+
@cmd = %w(content-view version incremental-update)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "performs incremental update with no updates" do
|
16
|
+
params = ['--errata-ids=FOO2012', '--lifecycle-environment-ids=1,2,3',
|
17
|
+
'--content-view-version-id=5']
|
18
|
+
|
19
|
+
ex = api_expects(:content_view_versions, :incremental_update, 'Incremental Update') do |par|
|
20
|
+
par['update_hosts'].nil? &&
|
21
|
+
par[:content_view_version_environments][0][:environment_ids] == %w(1 2 3) &&
|
22
|
+
par[:content_view_version_environments][0][:content_view_version_id] == 5 &&
|
23
|
+
par['add_content']['errata_ids'] == ['FOO2012']
|
24
|
+
end
|
25
|
+
ex.returns('id' => '3', 'state' => 'stopped')
|
26
|
+
|
27
|
+
expect_foreman_task('3')
|
28
|
+
|
29
|
+
result = run_cmd(@cmd + params)
|
30
|
+
assert_equal(result.exit_code, 0)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "performs incremental update with update all hosts" do
|
34
|
+
params = ['--update-all-hosts=true', '--errata-ids=FOO2012',
|
35
|
+
'--lifecycle-environment-ids=1,2,3', '--content-view-version-id=5']
|
36
|
+
|
37
|
+
ex = api_expects(:content_view_versions, :incremental_update, 'Incremental Update') do |par|
|
38
|
+
par['update_hosts']['included'][:search] == '' &&
|
39
|
+
par[:content_view_version_environments][0][:environment_ids] == %w(1 2 3) &&
|
40
|
+
par[:content_view_version_environments][0][:content_view_version_id] == 5 &&
|
41
|
+
par['add_content']['errata_ids'] == ['FOO2012']
|
42
|
+
end
|
43
|
+
ex.returns('id' => '3', 'state' => 'stopped')
|
44
|
+
|
45
|
+
expect_foreman_task('3')
|
46
|
+
|
47
|
+
result = run_cmd(@cmd + params)
|
48
|
+
assert_equal(result.exit_code, 0)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "performs incremental update with no environment" do
|
52
|
+
params = ['--update-all-hosts=true', '--errata-ids=FOO2012', '--content-view-version-id=5']
|
53
|
+
|
54
|
+
ex = api_expects(:content_view_versions, :incremental_update, 'Incremental Update') do |par|
|
55
|
+
par['update_hosts']['included'][:search] == '' &&
|
56
|
+
par[:content_view_version_environments][0][:environment_ids].nil? &&
|
57
|
+
par[:content_view_version_environments][0][:content_view_version_id] == 5 &&
|
58
|
+
par['add_content']['errata_ids'] == ['FOO2012']
|
59
|
+
end
|
60
|
+
ex.returns('id' => '3', 'state' => 'stopped')
|
61
|
+
|
62
|
+
expect_foreman_task('3')
|
63
|
+
|
64
|
+
result = run_cmd(@cmd + params)
|
65
|
+
assert_equal(result.exit_code, 0)
|
66
|
+
end
|
67
|
+
|
68
|
+
it "performs incremental update with names" do
|
69
|
+
params = ['--update-all-hosts=true', '--errata-ids=FOO2012',
|
70
|
+
'--lifecycle-environments=trump,cruz,bernie',
|
71
|
+
'--content-view-version-id=5', '--organization=USA']
|
72
|
+
|
73
|
+
expect_organization_search('USA', 5)
|
74
|
+
expect_lifecycle_environments_request(5, [{'name' => 'trump', 'id' => 1},
|
75
|
+
{'name' => 'cruz', 'id' => 2},
|
76
|
+
{'name' => 'bernie', 'id' => 3}])
|
77
|
+
|
78
|
+
ex = api_expects(:content_view_versions, :incremental_update, 'Incremental Update') do |par|
|
79
|
+
par['update_hosts']['included'][:search] == '' &&
|
80
|
+
par[:content_view_version_environments][0][:environment_ids] == [1, 2, 3] &&
|
81
|
+
par[:content_view_version_environments][0][:content_view_version_id] == 5 &&
|
82
|
+
par['add_content']['errata_ids'] == ['FOO2012']
|
83
|
+
end
|
84
|
+
ex.returns('id' => '3', 'state' => 'stopped')
|
85
|
+
|
86
|
+
expect_foreman_task('3')
|
87
|
+
|
88
|
+
result = run_cmd(@cmd + params)
|
89
|
+
assert_equal(result.exit_code, 0)
|
90
|
+
end
|
91
|
+
|
92
|
+
it "performs incremental update with packages" do
|
93
|
+
params = ['--content-view-version-id=5', '--packages=bla', '--lifecycle-environment-ids=1']
|
94
|
+
|
95
|
+
expect_generic_search(
|
96
|
+
:packages, params: {search: "name = \"bla\""}, returns: {'id' => 15}
|
97
|
+
)
|
98
|
+
|
99
|
+
ex = api_expects(:content_view_versions, :incremental_update, 'Incremental Update') do |par|
|
100
|
+
par[:content_view_version_environments][0][:content_view_version_id] == 5 &&
|
101
|
+
par["add_content"]["package_ids"] == [15]
|
102
|
+
end
|
103
|
+
ex.returns('id' => '3', 'state' => 'stopped')
|
104
|
+
expect_foreman_task('3')
|
105
|
+
result = run_cmd(@cmd + params)
|
106
|
+
assert_equal(result.exit_code, 0)
|
107
|
+
end
|
108
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require_relative '../../test_helper'
|
2
|
+
require 'hammer_cli_katello/content_view_version'
|
3
|
+
|
4
|
+
module HammerCLIKatello
|
5
|
+
describe ContentViewVersion::ListCommand do
|
6
|
+
it 'allows minimal options' do
|
7
|
+
api_expects(:content_view_versions, :index)
|
8
|
+
|
9
|
+
run_cmd(%w(content-view version list))
|
10
|
+
end
|
11
|
+
|
12
|
+
describe 'allows organization' do
|
13
|
+
it 'id' do
|
14
|
+
api_expects(:content_view_versions, :index) do |p|
|
15
|
+
p['organization_id'] == 1
|
16
|
+
end
|
17
|
+
|
18
|
+
run_cmd(%w(content-view version list --organization-id 1))
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'name' do
|
22
|
+
api_expects(:organizations, :index) { |par| par[:search] == "name = \"org1\"" }
|
23
|
+
.at_least_once.returns(index_response([{'id' => 1}]))
|
24
|
+
|
25
|
+
api_expects(:content_view_versions, :index) do |p|
|
26
|
+
p['organization_id'] == 1
|
27
|
+
end
|
28
|
+
|
29
|
+
run_cmd(%w(content-view version list --organization org1))
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'label' do
|
33
|
+
api_expects(:organizations, :index) { |par| par[:search] == "label = \"org1\"" }
|
34
|
+
.at_least_once.returns(index_response([{'id' => 1}]))
|
35
|
+
|
36
|
+
api_expects(:content_view_versions, :index) do |p|
|
37
|
+
p['organization_id'] == 1
|
38
|
+
end
|
39
|
+
|
40
|
+
run_cmd(%w(content-view version list --organization-label org1))
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require_relative '../../test_helper'
|
2
|
+
|
3
|
+
module HammerCLIKatello
|
4
|
+
describe ContentViewVersion::PromoteCommand do
|
5
|
+
it 'allows promoting a content view' do
|
6
|
+
ex = api_expects(:organizations, :index) do |p|
|
7
|
+
p[:search] == "name = \"org1\""
|
8
|
+
end
|
9
|
+
ex.at_least_once.returns(index_response([{'id' => 1}]))
|
10
|
+
|
11
|
+
ex = api_expects(:content_views, :index) do |p|
|
12
|
+
p['name'] == 'cv' && p['organization_id'] == 1
|
13
|
+
end
|
14
|
+
ex.returns(index_response([{'id' => 3}]))
|
15
|
+
|
16
|
+
ex = api_expects(:content_view_versions, :index) do |p|
|
17
|
+
p['version'] == '1' && p['content_view_id'] == 3
|
18
|
+
end
|
19
|
+
ex.returns(index_response([{'id' => 6}]))
|
20
|
+
|
21
|
+
ex = api_expects(:lifecycle_environments, :index) do |p|
|
22
|
+
p['organization_id'] == 1 && p['name'] == 'test'
|
23
|
+
end
|
24
|
+
ex.returns(index_response([{'id' => 9}]))
|
25
|
+
|
26
|
+
api_expects(:content_view_versions, :promote) do |p|
|
27
|
+
p['id'] == 6 && p['environment_ids'] == [9]
|
28
|
+
end
|
29
|
+
|
30
|
+
run_cmd(%w(content-view version promote --organization org1 --content-view cv
|
31
|
+
--to-lifecycle-environment test --version 1 --async))
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require_relative '../../test_helper'
|
2
|
+
|
3
|
+
module HammerCLIKatello
|
4
|
+
describe ContentViewVersion::RepublishRepositoriesCommand do
|
5
|
+
include ForemanTaskHelpers
|
6
|
+
include OrganizationHelpers
|
7
|
+
|
8
|
+
it 'allows republishing repositories on a content view version' do
|
9
|
+
expect_organization_search('org1', 1)
|
10
|
+
|
11
|
+
ex = api_expects(:content_views, :index) do |p|
|
12
|
+
p['name'] == 'cv' && p['organization_id'] == 1
|
13
|
+
end
|
14
|
+
ex.returns(index_response([{'id' => 3}]))
|
15
|
+
|
16
|
+
ex = api_expects(:content_view_versions, :index) do |p|
|
17
|
+
p['version'] == '1' && p['content_view_id'] == 3
|
18
|
+
end
|
19
|
+
ex.returns(index_response([{'id' => 6}]))
|
20
|
+
|
21
|
+
ex = api_expects(:content_view_versions, :republish_repositories) do |p|
|
22
|
+
p['id'] == 6
|
23
|
+
end
|
24
|
+
ex.returns('state' => 'pending', 'id' => '3')
|
25
|
+
|
26
|
+
expect_foreman_task('3')
|
27
|
+
|
28
|
+
result = run_cmd(%w(content-view version republish-repositories --organization org1
|
29
|
+
--content-view cv --version 1))
|
30
|
+
|
31
|
+
assert_equal(result.exit_code, 0)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require_relative '../../test_helper'
|
2
|
+
require 'hammer_cli_katello/content_view_version'
|
3
|
+
|
4
|
+
module HammerCLIKatello
|
5
|
+
describe ContentViewVersion::UpdateCommand do
|
6
|
+
include OrganizationHelpers
|
7
|
+
it 'allows minimal options' do
|
8
|
+
ex = api_expects(:content_view_versions, :update).with_params('description' => 'pizza')
|
9
|
+
ex.returns('id' => '2', 'description' => 'pizza')
|
10
|
+
|
11
|
+
result = run_cmd(%w(content-view version update --id 2 --description pizza))
|
12
|
+
assert_equal(result.exit_code, 0)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe 'content view options' do
|
17
|
+
it 'allows content view id with one version' do
|
18
|
+
ex = api_expects(:content_view_versions, :index)
|
19
|
+
ex.returns('id' => '1', 'content_view' => [{'id' => '2'}])
|
20
|
+
|
21
|
+
ex = api_expects(:content_view_versions, :update).with_params('description' => 'pizza')
|
22
|
+
ex.returns('id' => '1', 'description' => 'pizza', 'content_view' => [{'id' => '2'}])
|
23
|
+
|
24
|
+
result = run_cmd(%w(content-view version update --description pizza --content-view-id 2))
|
25
|
+
assert_equal(result.exit_code, 0)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'allows content view id with multiple versions' do
|
29
|
+
ex = api_expects(:content_view_versions, :index)
|
30
|
+
ex.returns('id' => '2', 'content_view' => [{'id' => '3'}])
|
31
|
+
|
32
|
+
ex = api_expects(:content_view_versions, :update).with_params('description' => 'pizza')
|
33
|
+
ex.returns('id' => '2', 'description' => 'pizza', 'content_view' => [{'id' => '3'}])
|
34
|
+
|
35
|
+
result = run_cmd(%w(content-view version update --description pizza
|
36
|
+
--content-view-id 3 --version 2))
|
37
|
+
assert_equal(result.exit_code, 0)
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'blocks update without description' do
|
41
|
+
ex = api_expects(:content_view_versions, :index)
|
42
|
+
ex.returns('id' => '1', 'content_view' => [{'id' => '2'}])
|
43
|
+
|
44
|
+
result = run_cmd(%w(content-view version update --content-view-id 2))
|
45
|
+
assert_equal(result.exit_code, 64)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
module ErratumHelpers
|
2
|
+
# rubocop:disable MethodLength
|
3
|
+
def make_erratum_response(with_packages = true, with_module_streams = true)
|
4
|
+
packs = with_packages ? packages : []
|
5
|
+
if with_module_streams
|
6
|
+
module_streams = [
|
7
|
+
{
|
8
|
+
"name" => module_stream[:name],
|
9
|
+
"stream" => module_stream[:stream],
|
10
|
+
"version" => "20180730223407",
|
11
|
+
"context" => "deadbeef",
|
12
|
+
"arch" => "noarch",
|
13
|
+
"id" => 4,
|
14
|
+
"packages" => packs
|
15
|
+
}
|
16
|
+
]
|
17
|
+
else
|
18
|
+
module_streams = []
|
19
|
+
end
|
20
|
+
{
|
21
|
+
"id" => 6,
|
22
|
+
"pulp_id" => "a4999071-2e2a-4293-9a72-219924032633",
|
23
|
+
"title" => "Duck_Kangaroo_Erratum",
|
24
|
+
"errata_id" => "RHEA-2012:0059",
|
25
|
+
"issued" => "2018-01-27",
|
26
|
+
"updated" => "2018-07-20",
|
27
|
+
"severity" => "",
|
28
|
+
"description" => "Duck_Kangaro_Erratum description",
|
29
|
+
"solution" => "",
|
30
|
+
"summary" => "",
|
31
|
+
"reboot_suggested" => false,
|
32
|
+
"uuid" => "a4999071-2e2a-4293-9a72-219924032633",
|
33
|
+
"name" => "Duck_Kangaroo_Erratum",
|
34
|
+
"type" => "enhancement",
|
35
|
+
"cves" => [],
|
36
|
+
"bugs" => [],
|
37
|
+
"hosts_available_count" => 0,
|
38
|
+
"hosts_applicable_count" => 0,
|
39
|
+
"packages" => packages,
|
40
|
+
"module_streams" => module_streams
|
41
|
+
}
|
42
|
+
end
|
43
|
+
|
44
|
+
def packages
|
45
|
+
["kangaroo-0.3-1.noarch", "bar"]
|
46
|
+
end
|
47
|
+
|
48
|
+
def module_stream
|
49
|
+
{name: "MyMOdule", stream: "cool-100"}
|
50
|
+
end
|
51
|
+
|
52
|
+
def erratum_id
|
53
|
+
"1"
|
54
|
+
end
|
55
|
+
|
56
|
+
def host_id
|
57
|
+
1
|
58
|
+
end
|
59
|
+
|
60
|
+
def verify_module_packages_and_orphan_packages(result)
|
61
|
+
result_out = result.out
|
62
|
+
# output looks like
|
63
|
+
# => "Title: Duck_Kangaroo_Erratum\n
|
64
|
+
# Description: Duck_Kangaro_Erratum description\n
|
65
|
+
# ID: 6
|
66
|
+
# \nErrata ID: RHEA-2012:0059\nReboot Suggested: false\n
|
67
|
+
# Updated: 2018-07-20\nIssued: 2018-01-27\nSolution:
|
68
|
+
# \nPackages: kangaroo-0.3-1.noarch
|
69
|
+
#\nModule Streams: \n 1) Name: kangaroo\n Stream: 0
|
70
|
+
# \n Packages: kangaroo-0.3-1.noarch\n\n
|
71
|
+
module_streams_out = result_out.slice(result_out.index("Module Streams")..-1)
|
72
|
+
package_out = result_out.slice(0..result_out.index("Module Streams"))
|
73
|
+
|
74
|
+
assert_includes(module_streams_out, "Name")
|
75
|
+
assert_includes(module_streams_out, module_stream[:name])
|
76
|
+
assert_includes(module_streams_out, "Stream")
|
77
|
+
assert_includes(module_streams_out, module_stream[:stream])
|
78
|
+
assert_includes(module_streams_out, packages.first)
|
79
|
+
assert_includes(module_streams_out, packages.last)
|
80
|
+
|
81
|
+
assert_includes(package_out, packages.first)
|
82
|
+
assert_includes(package_out, packages.last)
|
83
|
+
end
|
84
|
+
|
85
|
+
def verify_no_modules_packages_with_orphan_packages(result)
|
86
|
+
result_out = result.out
|
87
|
+
refute_includes(result_out, "Module Streams")
|
88
|
+
assert_includes(result_out, packages.first)
|
89
|
+
assert_includes(result_out, packages.last)
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
require_relative 'erratum_helpers'
|
3
|
+
|
4
|
+
describe 'Erratum Info' do
|
5
|
+
include ErratumHelpers
|
6
|
+
|
7
|
+
before do
|
8
|
+
@cmd = %w(erratum info)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "prints module package info on run" do
|
12
|
+
api_expects(:errata, :show)
|
13
|
+
.with_params('id' => erratum_id)
|
14
|
+
.returns(make_erratum_response)
|
15
|
+
params = ["--id=#{erratum_id}"]
|
16
|
+
result = run_cmd(@cmd + params)
|
17
|
+
verify_module_packages_and_orphan_packages(result)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "prints package info on run" do
|
21
|
+
api_expects(:errata, :show)
|
22
|
+
.with_params('id' => erratum_id)
|
23
|
+
.returns(make_erratum_response(true, false))
|
24
|
+
|
25
|
+
params = ["--id=#{erratum_id}"]
|
26
|
+
result = run_cmd(@cmd + params)
|
27
|
+
verify_no_modules_packages_with_orphan_packages(result)
|
28
|
+
end
|
29
|
+
end
|