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.
- checksums.yaml +4 -4
- data/lib/hammer_cli_katello/acs.rb +82 -0
- data/lib/hammer_cli_katello/activation_key.rb +8 -2
- data/lib/hammer_cli_katello/content_export.rb +39 -0
- data/lib/hammer_cli_katello/content_export_helper.rb +64 -6
- data/lib/hammer_cli_katello/host_subscription.rb +32 -0
- data/lib/hammer_cli_katello/organization.rb +4 -0
- data/lib/hammer_cli_katello/repository.rb +1 -1
- data/lib/hammer_cli_katello/simple_content_access.rb +10 -0
- data/lib/hammer_cli_katello/version.rb +1 -1
- data/lib/hammer_cli_katello.rb +5 -0
- 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/4.3/foreman_api.json +1 -0
- data/test/data/4.4/foreman_api.json +1 -0
- data/test/data/4.5/foreman_api.json +1 -0
- data/test/data/4.6/foreman_api.json +1 -0
- data/test/data/Readme.md +5 -0
- data/test/functional/acs/create_test.rb +27 -0
- data/test/functional/acs/delete_test.rb +13 -0
- data/test/functional/acs/info_test.rb +94 -0
- data/test/functional/acs/list_test.rb +62 -0
- data/test/functional/acs/update_test.rb +23 -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/repository_test.rb +226 -0
- data/test/functional/content_export/complete/version_test.rb +297 -0
- data/test/functional/content_export/content_export_helpers.rb +33 -0
- data/test/functional/content_export/generate_listing_test.rb +62 -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/repository_test.rb +212 -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_units/info_test.rb +29 -0
- data/test/functional/content_units/list_test.rb +106 -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 +75 -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 +26 -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/enabled_repositories_test.rb +39 -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/cdn_configuration_test.rb +45 -0
- data/test/functional/organization/delete_test.rb +26 -0
- data/test/functional/organization/info_test.rb +45 -0
- data/test/functional/organization/organization_helpers.rb +10 -0
- data/test/functional/package/list_test.rb +160 -0
- data/test/functional/package_group/list_test.rb +38 -0
- data/test/functional/ping_test.rb +61 -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/reclaim_space_test.rb +105 -0
- data/test/functional/repository/remove_content_test.rb +108 -0
- data/test/functional/repository/repository_helpers.rb +18 -0
- data/test/functional/repository/republish_test.rb +37 -0
- data/test/functional/repository/synchronize_test.rb +57 -0
- data/test/functional/repository/update_test.rb +150 -0
- data/test/functional/repository/upload_test.rb +368 -0
- data/test/functional/repository_set/available_repositories_test.rb +18 -0
- data/test/functional/repository_set/disable_test.rb +48 -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/simple_content_access/status_test.rb +29 -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 +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
|