hammer_cli_katello 1.5.2 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,7 +2,7 @@ require File.join(File.dirname(__FILE__), '../test_helper')
2
2
 
3
3
  describe 'create content-credentials' do
4
4
  before do
5
- @cmd = %w(alternate-content-sources create)
5
+ @cmd = %w(alternate-content-source create)
6
6
  end
7
7
 
8
8
  let(:name) { 'pizza' }
@@ -7,7 +7,7 @@ describe 'delete an acs' do
7
7
  api_expects(:alternate_content_sources, :destroy, 'delete acs').
8
8
  with_params('id' => id)
9
9
 
10
- command = %W(alternate-content-sources delete --id #{id})
10
+ command = %W(alternate-content-source delete --id #{id})
11
11
  assert_equal(0, run_cmd(command).exit_code)
12
12
  end
13
13
  end
@@ -3,7 +3,7 @@ require 'hammer_cli_katello/associating_commands'
3
3
 
4
4
  describe 'get acs info' do
5
5
  before do
6
- @cmd = %w(alternate-content-sources info)
6
+ @cmd = %w(alternate-content-source info)
7
7
  end
8
8
 
9
9
  it 'shows acs info by id' do
@@ -14,20 +14,17 @@ describe 'get acs info' do
14
14
  'name' => 'Pizza ACS',
15
15
  'label' => 'Pizza ACS',
16
16
  'base_url' => 'https://proxy.example.com',
17
- 'alternate_content_source_type' => 'custom',
18
17
  'content_type' => 'yum',
18
+ 'alternate_content_source_type' => 'custom',
19
+ 'subpaths' => [
20
+ 'test/repo1'
21
+ ],
19
22
  'smart_proxies' => {
20
23
  'id' => 1,
21
24
  'name' => 'centos7.example.com',
22
25
  'url' => 'https://centos7.example.com:9090',
23
- 'created_at' => '2022-05-09T17:40:21.007Z',
24
- 'updated_at' => '2022-05-09T17:40:21.007Z',
25
- 'expired_logs' => 0,
26
26
  'download_policy' => 'on_demand'
27
- },
28
- 'subpaths' => [
29
- 'test/repo1'
30
- ]
27
+ }
31
28
  )
32
29
  result = run_cmd(@cmd + params)
33
30
  # rubocop:disable Style/WordArray
@@ -35,18 +32,60 @@ describe 'get acs info' do
35
32
  ['Name', 'Pizza ACS'],
36
33
  ['Label', 'Pizza ACS'],
37
34
  ['Base URL', 'https://proxy.example.com'],
35
+ ['Content type', 'yum'],
38
36
  ['Alternate content source type', 'custom'],
37
+ ['Subpaths', ''],
38
+ ['', 'test/repo1'],
39
+ ['Smart proxies', ''],
40
+ ['Id', '1'],
41
+ ['Name', 'centos7.example.com'],
42
+ ['URL', 'https://centos7.example.com:9090'],
43
+ ['Download policy', 'on_demand']]
44
+
45
+ # rubocop:enable Style/WordArray
46
+ expected_results = expected_fields.map { |field| success_result(FieldMatcher.new(*field)) }
47
+ expected_results.each { |expected| assert_cmd(expected, result) }
48
+ end
49
+
50
+ it 'shows simplified acs info by id' do
51
+ params = ['--id=2']
52
+ ex = api_expects(:alternate_content_sources, :show, 'Get info')
53
+ ex.returns(
54
+ 'id' => 2,
55
+ 'name' => 'Pizza ACS',
56
+ 'label' => 'Pizza ACS',
57
+ 'content_type' => 'yum',
58
+ 'alternate_content_source_type' => 'simplified',
59
+ 'products' => {
60
+ 'id' => 999,
61
+ 'organization_id' => 9,
62
+ 'name' => 'Buttermilk Biscuits',
63
+ 'label' => 'Buttermilk_Biscuits'
64
+ },
65
+ 'smart_proxies' => {
66
+ 'id' => 1,
67
+ 'name' => 'centos7.example.com',
68
+ 'url' => 'https://centos7.example.com:9090',
69
+ 'download_policy' => 'on_demand'
70
+ }
71
+ )
72
+ result = run_cmd(@cmd + params)
73
+ # rubocop:disable Style/WordArray
74
+ expected_fields = [['ID', '2'],
75
+ ['Name', 'Pizza ACS'],
76
+ ['Label', 'Pizza ACS'],
39
77
  ['Content type', 'yum'],
78
+ ['Alternate content source type', 'simplified'],
79
+ ['Products', ''],
80
+ ['Id', '999'],
81
+ ['Organization ID', '9'],
82
+ ['Name', 'Buttermilk Biscuits'],
83
+ ['Label', 'Buttermilk_Biscuits'],
40
84
  ['Smart proxies', ''],
41
85
  ['Id', '1'],
42
86
  ['Name', 'centos7.example.com'],
43
87
  ['URL', 'https://centos7.example.com:9090'],
44
- ['Created at', '2022-05-09T17:40:21.007Z'],
45
- ['Updated at', '2022-05-09T17:40:21.007Z'],
46
- ['Expired logs', '0'],
47
- ['Download policy', 'on_demand'],
48
- ['Subpaths', ''],
49
- ['', 'test/repo1']]
88
+ ['Download policy', 'on_demand']]
50
89
 
51
90
  # rubocop:enable Style/WordArray
52
91
  expected_results = expected_fields.map { |field| success_result(FieldMatcher.new(*field)) }
@@ -2,7 +2,7 @@ require File.join(File.dirname(__FILE__), '../test_helper')
2
2
 
3
3
  describe 'listing acs' do
4
4
  before do
5
- @cmd = %w(alternate-content-sources list)
5
+ @cmd = %w(alternate-content-source list)
6
6
  end
7
7
 
8
8
  let(:empty_response) do
@@ -2,7 +2,7 @@ require File.join(File.dirname(__FILE__), '../test_helper')
2
2
 
3
3
  describe 'listing acs' do
4
4
  before do
5
- @cmd = %w(alternate-content-sources update)
5
+ @cmd = %w(alternate-content-source update)
6
6
  end
7
7
 
8
8
  let(:id) { 1 }
@@ -27,9 +27,9 @@ describe 'content-export complete version' do
27
27
 
28
28
  let(:export_history) do
29
29
  {
30
- "id": 1000,
31
- "path": "/tmp",
32
- "metadata": {}
30
+ "id" => 1000,
31
+ "path" => "/tmp",
32
+ "metadata" => {}
33
33
  }
34
34
  end
35
35
 
@@ -57,6 +57,24 @@ describe 'content-export complete version' do
57
57
  assert_equal(HammerCLI::EX_OK, result.exit_code)
58
58
  end
59
59
 
60
+ it "performs export with required options and async for syncable format" do
61
+ params = [
62
+ "--id=#{content_view_version_id}",
63
+ '--format=syncable',
64
+ '--async'
65
+ ]
66
+ expects_repositories_in_version(content_view_version_id)
67
+ ex = api_expects(:content_exports, :version)
68
+ ex.returns(response)
69
+
70
+ result = run_cmd(@cmd + params)
71
+
72
+ assert_equal("Content view version is being exported in task #{task_id}.\n"\
73
+ + "Once the task completes the listing files may be generated with the command:"\
74
+ + "\n hammer content-export generate-listing --task-id #{task_id}\n", result.out)
75
+ assert_equal(HammerCLI::EX_OK, result.exit_code)
76
+ end
77
+
60
78
  it "performs export with required options" do
61
79
  params = [
62
80
  "--id=#{content_view_version_id}",
@@ -78,6 +96,33 @@ describe 'content-export complete version' do
78
96
  assert_equal(HammerCLI::EX_OK, result.exit_code)
79
97
  end
80
98
 
99
+ it "performs export with format" do
100
+ params = [
101
+ "--id=#{content_view_version_id}",
102
+ '--format=syncable'
103
+ ]
104
+ expects_repositories_in_version(content_view_version_id)
105
+ ex = api_expects(:content_exports, :version)
106
+ ex.returns(response)
107
+
108
+ expect_foreman_task(task_id).at_least_once
109
+ path = "/foo/bar"
110
+ syncable_export_history = {
111
+ "id" => 1000,
112
+ "path" => path,
113
+ "metadata" => {"format" => "syncable"}
114
+ }
115
+ HammerCLIKatello::ContentExportComplete::VersionCommand.
116
+ any_instance.
117
+ expects(:fetch_export_history).
118
+ returns(syncable_export_history)
119
+
120
+ result = run_cmd(@cmd + params)
121
+ assert_match(/Generated/, result.out)
122
+ assert_match(path, result.out)
123
+ assert_equal(HammerCLI::EX_OK, result.exit_code)
124
+ end
125
+
81
126
  it 'fails on missing required params' do
82
127
  params = [
83
128
  '--boo-id=2'
@@ -0,0 +1,62 @@
1
+ require File.join(File.dirname(__FILE__), '../../test_helper')
2
+ require 'hammer_cli_katello/content_export'
3
+
4
+ describe('content-export generate-listing') do
5
+ include ForemanTaskHelpers
6
+
7
+ before do
8
+ @cmd = %w(content-export generate-listing)
9
+ @params = []
10
+ @export_history_id = 100
11
+ @path = '/tmp'
12
+ @export_history = {
13
+ 'id' => @export_history_id,
14
+ 'path' => @path,
15
+ 'metadata' => {'format' => 'syncable'}
16
+ }
17
+ @task_id = SecureRandom.uuid
18
+ end
19
+
20
+ let(:cmd) { @cmd + @params }
21
+ let(:result) { run_cmd(cmd) }
22
+
23
+ describe('given an export history id') do
24
+ it('loads export history by id') do
25
+ @params = ["--id=#{@export_history_id}"]
26
+
27
+ HammerCLIKatello::ContentExport::GenerateListingCommand.
28
+ any_instance.
29
+ expects(:fetch_export_history).
30
+ returns(@export_history)
31
+ assert_match(/Generated/, result.out)
32
+ assert_match(@path, result.out)
33
+ end
34
+ end
35
+
36
+ describe('given a task id') do
37
+ it('loads export history based on the task') do
38
+ @params = ["--task-id=#{@task_id}"]
39
+
40
+ HammerCLIKatello::ContentExport::GenerateListingCommand.
41
+ any_instance.
42
+ expects(:reload_task).
43
+ returns('id' => 'taskid')
44
+
45
+ HammerCLIKatello::ContentExport::GenerateListingCommand.
46
+ any_instance.
47
+ expects(:fetch_export_history).
48
+ returns(@export_history)
49
+
50
+ assert_match(/Generated/, result.out)
51
+ assert_match(@path, result.out)
52
+ end
53
+ end
54
+
55
+ describe('given no arguments') do
56
+ it('tells the user to verify the arguments') do
57
+ expected = "Error: No export history was found. Verify the value given for "\
58
+ + "--task-id or --id\n"
59
+ assert_equal(expected, result.err)
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,39 @@
1
+ require File.join(File.dirname(__FILE__), '../../test_helper')
2
+
3
+ describe 'host enabled-repositories listing' do
4
+ before do
5
+ @cmd = %w(host subscription enabled-repositories)
6
+ end
7
+
8
+ let(:host_id) { 1 }
9
+ let(:empty_response) do
10
+ {
11
+ "total" => 0,
12
+ "subtotal" => 0,
13
+ "page" => "1",
14
+ "per_page" => "1000",
15
+ "error" => nil,
16
+ "search" => nil,
17
+ "sort" => {
18
+ "by" => nil,
19
+ "order" => nil
20
+ },
21
+ "results" => []
22
+ }
23
+ end
24
+
25
+ it 'allows listing by host' do
26
+ params = ["--host-id=#{host_id}"]
27
+ ex = api_expects(:host_subscriptions,
28
+ :enabled_repositories, 'host subscription enabled-repositories')
29
+ ex.returns(empty_response)
30
+ # rubocop:disable Layout/LineLength
31
+ expected_result = success_result("---|------|-------|--------------|----------|-----------------|-------------------|----------------------|------------------|-------------
32
+ ID | NAME | LABEL | CONTENT TYPE | CHECKSUM | CONTENT VIEW ID | CONTENT VIEW NAME | CONTENT VIEW VERSION | ENVIRONMENT NAME | PRODUCT NAME
33
+ ---|------|-------|--------------|----------|-----------------|-------------------|----------------------|------------------|-------------
34
+ ")
35
+ # rubocop:enable Layout/LineLength
36
+ result = run_cmd(@cmd + params)
37
+ assert_cmd(expected_result, result)
38
+ end
39
+ end
@@ -0,0 +1,29 @@
1
+ require File.join(File.dirname(__FILE__), '../../test_helper')
2
+
3
+ describe 'simple-content-access status' do
4
+ before do
5
+ @cmd = %w(simple-content-access status)
6
+ end
7
+
8
+ let(:organization_id) { 3 }
9
+
10
+ it 'list status with required options' do
11
+ params = ["--organization-id=#{organization_id}"]
12
+ api_expects(:simple_content_access, :status).
13
+ with_params('organization_id' => organization_id).
14
+ returns('simple_content_access' => true)
15
+
16
+ run_cmd(@cmd + params)
17
+ end
18
+
19
+ it 'fails on missing required params' do
20
+ params = []
21
+ result = run_cmd(@cmd + params)
22
+ # rubocop:disable Layout/LineLength
23
+ expected_error = 'Could not find organization, please set one of options --organization-id, --organization, --organization-title, --organization-label.'
24
+ # rubocop:enable Layout/LineLength
25
+
26
+ assert_equal(result.exit_code, HammerCLI::EX_SOFTWARE)
27
+ assert_equal(result.err[/#{expected_error}/], expected_error)
28
+ end
29
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hammer_cli_katello
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.2
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Price
@@ -35,62 +35,62 @@ authors:
35
35
  autorequire:
36
36
  bindir: bin
37
37
  cert_chain: []
38
- date: 2022-07-06 00:00:00.000000000 Z
38
+ date: 2022-08-01 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: hammer_cli_foreman
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - '>='
44
+ - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: '0'
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - '>='
51
+ - - ">="
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: hammer_cli_foreman_tasks
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - '>='
58
+ - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: '0'
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - '>='
65
+ - - ">="
66
66
  - !ruby/object:Gem::Version
67
67
  version: '0'
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: rake
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - '>='
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
75
  type: :development
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - '>='
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
81
  version: '0'
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: thor
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - '>='
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
89
  type: :development
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - '>='
93
+ - - ">="
94
94
  - !ruby/object:Gem::Version
95
95
  version: '0'
96
96
  - !ruby/object:Gem::Dependency
@@ -111,56 +111,56 @@ dependencies:
111
111
  name: minitest-spec-context
112
112
  requirement: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - '>='
114
+ - - ">="
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
117
  type: :development
118
118
  prerelease: false
119
119
  version_requirements: !ruby/object:Gem::Requirement
120
120
  requirements:
121
- - - '>='
121
+ - - ">="
122
122
  - !ruby/object:Gem::Version
123
123
  version: '0'
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: simplecov
126
126
  requirement: !ruby/object:Gem::Requirement
127
127
  requirements:
128
- - - '>='
128
+ - - ">="
129
129
  - !ruby/object:Gem::Version
130
130
  version: '0'
131
131
  type: :development
132
132
  prerelease: false
133
133
  version_requirements: !ruby/object:Gem::Requirement
134
134
  requirements:
135
- - - '>='
135
+ - - ">="
136
136
  - !ruby/object:Gem::Version
137
137
  version: '0'
138
138
  - !ruby/object:Gem::Dependency
139
139
  name: mocha
140
140
  requirement: !ruby/object:Gem::Requirement
141
141
  requirements:
142
- - - '>='
142
+ - - ">="
143
143
  - !ruby/object:Gem::Version
144
144
  version: '0'
145
145
  type: :development
146
146
  prerelease: false
147
147
  version_requirements: !ruby/object:Gem::Requirement
148
148
  requirements:
149
- - - '>='
149
+ - - ">="
150
150
  - !ruby/object:Gem::Version
151
151
  version: '0'
152
152
  - !ruby/object:Gem::Dependency
153
153
  name: ci_reporter
154
154
  requirement: !ruby/object:Gem::Requirement
155
155
  requirements:
156
- - - '>='
156
+ - - ">="
157
157
  - !ruby/object:Gem::Version
158
158
  version: '0'
159
159
  type: :development
160
160
  prerelease: false
161
161
  version_requirements: !ruby/object:Gem::Requirement
162
162
  requirements:
163
- - - '>='
163
+ - - ">="
164
164
  - !ruby/object:Gem::Version
165
165
  version: '0'
166
166
  - !ruby/object:Gem::Dependency
@@ -181,14 +181,14 @@ dependencies:
181
181
  name: rubocop-checkstyle_formatter
182
182
  requirement: !ruby/object:Gem::Requirement
183
183
  requirements:
184
- - - '>='
184
+ - - ">="
185
185
  - !ruby/object:Gem::Version
186
186
  version: '0'
187
187
  type: :development
188
188
  prerelease: false
189
189
  version_requirements: !ruby/object:Gem::Requirement
190
190
  requirements:
191
- - - '>='
191
+ - - ">="
192
192
  - !ruby/object:Gem::Version
193
193
  version: '0'
194
194
  description: Hammer-CLI-Katello is a plugin for Hammer to provide connectivity to
@@ -360,6 +360,7 @@ files:
360
360
  - test/functional/content_export/complete/repository_test.rb
361
361
  - test/functional/content_export/complete/version_test.rb
362
362
  - test/functional/content_export/content_export_helpers.rb
363
+ - test/functional/content_export/generate_listing_test.rb
363
364
  - test/functional/content_export/generate_metadata_test.rb
364
365
  - test/functional/content_export/incremental/library_test.rb
365
366
  - test/functional/content_export/incremental/repository_test.rb
@@ -423,6 +424,7 @@ files:
423
424
  - test/functional/host/subscription/attach_test.rb
424
425
  - test/functional/host/subscription/auto_attach_test.rb
425
426
  - test/functional/host/subscription/content_override_test.rb
427
+ - test/functional/host/subscription/enabled_repositories_test.rb
426
428
  - test/functional/host/subscription/product_content_test.rb
427
429
  - test/functional/host/subscription/register_test.rb
428
430
  - test/functional/host/subscription/remove_test.rb
@@ -489,6 +491,7 @@ files:
489
491
  - test/functional/search_helpers.rb
490
492
  - test/functional/simple_content_access/disable_test.rb
491
493
  - test/functional/simple_content_access/enable_test.rb
494
+ - test/functional/simple_content_access/status_test.rb
492
495
  - test/functional/srpm/list_test.rb
493
496
  - test/functional/subscription/list_test.rb
494
497
  - test/functional/sync_plan/create_test.rb
@@ -514,17 +517,16 @@ require_paths:
514
517
  - lib
515
518
  required_ruby_version: !ruby/object:Gem::Requirement
516
519
  requirements:
517
- - - '>='
520
+ - - ">="
518
521
  - !ruby/object:Gem::Version
519
522
  version: '0'
520
523
  required_rubygems_version: !ruby/object:Gem::Requirement
521
524
  requirements:
522
- - - '>='
525
+ - - ">="
523
526
  - !ruby/object:Gem::Version
524
527
  version: '0'
525
528
  requirements: []
526
- rubyforge_project:
527
- rubygems_version: 2.0.14.1
529
+ rubygems_version: 3.1.6
528
530
  signing_key:
529
531
  specification_version: 4
530
532
  summary: Katello commands for Hammer
@@ -592,6 +594,7 @@ test_files:
592
594
  - test/functional/content_export/complete/repository_test.rb
593
595
  - test/functional/content_export/complete/version_test.rb
594
596
  - test/functional/content_export/content_export_helpers.rb
597
+ - test/functional/content_export/generate_listing_test.rb
595
598
  - test/functional/content_export/generate_metadata_test.rb
596
599
  - test/functional/content_export/incremental/library_test.rb
597
600
  - test/functional/content_export/incremental/repository_test.rb
@@ -655,6 +658,7 @@ test_files:
655
658
  - test/functional/host/subscription/attach_test.rb
656
659
  - test/functional/host/subscription/auto_attach_test.rb
657
660
  - test/functional/host/subscription/content_override_test.rb
661
+ - test/functional/host/subscription/enabled_repositories_test.rb
658
662
  - test/functional/host/subscription/product_content_test.rb
659
663
  - test/functional/host/subscription/register_test.rb
660
664
  - test/functional/host/subscription/remove_test.rb
@@ -721,6 +725,7 @@ test_files:
721
725
  - test/functional/search_helpers.rb
722
726
  - test/functional/simple_content_access/disable_test.rb
723
727
  - test/functional/simple_content_access/enable_test.rb
728
+ - test/functional/simple_content_access/status_test.rb
724
729
  - test/functional/srpm/list_test.rb
725
730
  - test/functional/subscription/list_test.rb
726
731
  - test/functional/sync_plan/create_test.rb