hammer_cli_foreman 3.5.0 → 3.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/config/foreman.yml +6 -0
  3. data/doc/release_notes.md +7 -0
  4. data/lib/hammer_cli_foreman/api/authenticator.rb +20 -0
  5. data/lib/hammer_cli_foreman/api/basic_auth.rb +71 -0
  6. data/lib/hammer_cli_foreman/api/connection.rb +3 -2
  7. data/lib/hammer_cli_foreman/api/interactive_basic_auth.rb +3 -62
  8. data/lib/hammer_cli_foreman/api/interactive_basic_auth_external.rb +17 -0
  9. data/lib/hammer_cli_foreman/api/session_authenticator_wrapper.rb +2 -2
  10. data/lib/hammer_cli_foreman/auth.rb +21 -0
  11. data/lib/hammer_cli_foreman/compute_resource/ovirt.rb +1 -1
  12. data/lib/hammer_cli_foreman/config_report.rb +1 -1
  13. data/lib/hammer_cli_foreman/smart_proxy.rb +1 -1
  14. data/lib/hammer_cli_foreman/version.rb +1 -1
  15. data/locale/ca/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  16. data/locale/de/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  17. data/locale/en/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  18. data/locale/en_GB/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  19. data/locale/es/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  20. data/locale/fr/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  21. data/locale/it/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  22. data/locale/ja/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  23. data/locale/ko/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  24. data/locale/pt_BR/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  25. data/locale/ru/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  26. data/locale/zh_CN/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  27. data/locale/zh_TW/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  28. data/test/unit/api/interactive_basic_auth_test.rb +2 -1
  29. metadata +79 -77
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 006d4b4eed7a0555a9094223fcbf0310fbf45787fa879f96426b7420a3fd8207
4
- data.tar.gz: 78bb6049eae38f6793a420461c5ee8772eac699d538e33d331d01f12ab236178
3
+ metadata.gz: b0498fc381643ec00359362e585a879ae2e6ef425f8546b6b1f1245ce4dd2891
4
+ data.tar.gz: 060dfe82dbe23fec7a3a84d89e8077c756c5e87aced3617a5b8923c8a2827967
5
5
  SHA512:
6
- metadata.gz: 1a66faf43bc97309b2e98ddbf9aeb9dc9f5bd6a768326d305692819ac4c76bcb4d9def107795823b5df9192993f691ea608a31c9af003c0fcad4cbb57e8c09a1
7
- data.tar.gz: a873297a23beb5e95f8bd1a232e836a5b914af82836f90e33722ab8a7162f55396c17c93955d50929bbed95b3fe7c1b0cc48907b918c465a247d7ab22d511b90
6
+ metadata.gz: d913007afab58dbc5b387f3536215f2e1ce9fd7190eb1fbd7e494ee30e6bba325045d864e1f0d1326690922715a506fd44c7df1f5e6ec1340ade26425580e5e2
7
+ data.tar.gz: ec80e3b7f0386b4786830e0e676ea172ea3472b4ecd771aae5c3239720cd5bcf34846e91e5cda1a816e6f5d864269a72b202ad1b1a164769661584f7dbac7da6
data/config/foreman.yml CHANGED
@@ -3,6 +3,7 @@
3
3
  :enable_module: true
4
4
 
5
5
  # Your foreman server address
6
+ # For development try using http with the fully domain name.
6
7
  :host: 'https://localhost/'
7
8
 
8
9
  # Credentials. You'll be asked for them interactively if you leave them blank here
@@ -13,6 +14,11 @@
13
14
  :username: 'admin'
14
15
  #:password: 'example'
15
16
 
17
+ # Basic Auth External:
18
+ #:default_auth_type: 'Basic_Auth_External'
19
+ #:username: 'admin'
20
+ #:password: 'example'
21
+
16
22
  # Oauth using the Password Grant Flow:
17
23
  # This authentication method requires sessions to be enabled, uncomment the following
18
24
  # lines to use this authentication method.
data/doc/release_notes.md CHANGED
@@ -1,5 +1,12 @@
1
1
  Release notes
2
2
  =============
3
+ ### 3.6.0 (2023-02-23)
4
+ * Support basic auth for external sources, [#11317](http://projects.theforeman.org/issues/11317)
5
+ * Remove underscore from labels ([PR #608](https://github.com/theforeman/hammer-cli-foreman/pull/608)), [#35904](http://projects.theforeman.org/issues/35904)
6
+ * Update foreman.yml - add a comment on defining the server address in a development environment ([PR #602](https://github.com/theforeman/hammer-cli-foreman/pull/602))
7
+ * Fix typo in ovirt disk interface names
8
+ * Bump to 3.6.0-develop
9
+
3
10
  ### 3.5.0 (2022-10-31)
4
11
  * Extract gce related info ([PR #606](https://github.com/theforeman/hammer-cli-foreman/pull/606)), [#35659](http://projects.theforeman.org/issues/35659)
5
12
  * Change auth endpoint for negotiation, [#35473](http://projects.theforeman.org/issues/35473)
@@ -13,6 +13,8 @@ module HammerCLIForeman
13
13
  void_auth
14
14
  elsif auth_type == AUTH_TYPES[:basic_auth]
15
15
  basic_auth
16
+ elsif auth_type == AUTH_TYPES[:basic_auth_external]
17
+ basic_auth_external
16
18
  elsif auth_type == AUTH_TYPES[:negotiate]
17
19
  negotiate_auth
18
20
  elsif auth_type == AUTH_TYPES[:oauth_password_grant]
@@ -45,6 +47,24 @@ module HammerCLIForeman
45
47
  end
46
48
  end
47
49
 
50
+ def basic_auth_external
51
+ if HammerCLIForeman::Sessions.enabled?
52
+ authenticator = InteractiveBasicAuthExternal.new(
53
+ settings.get(:_params, :username) || ENV['FOREMAN_USERNAME'],
54
+ settings.get(:_params, :password) || ENV['FOREMAN_PASSWORD'],
55
+ uri
56
+ )
57
+ SessionAuthenticatorWrapper.new(authenticator, uri, auth_type)
58
+ else
59
+ username = settings.get(:_params, :username) || ENV['FOREMAN_USERNAME'] || settings.get(:foreman, :username)
60
+ password = settings.get(:_params, :password) || ENV['FOREMAN_PASSWORD']
61
+ if password.nil? && (username == settings.get(:foreman, :username))
62
+ password = settings.get(:foreman, :password)
63
+ end
64
+ InteractiveBasicAuthExternal.new(username, password, uri)
65
+ end
66
+ end
67
+
48
68
  def negotiate_auth
49
69
  return unless HammerCLIForeman::Sessions.enabled?
50
70
 
@@ -0,0 +1,71 @@
1
+ module HammerCLIForeman
2
+ module Api
3
+ module BasicAuth
4
+ def authenticate(request, args)
5
+ if HammerCLI.interactive?
6
+ get_user
7
+ get_password
8
+ end
9
+ super
10
+ end
11
+
12
+ def error(ex)
13
+ return unless ex.is_a?(RestClient::Unauthorized)
14
+
15
+ clear
16
+ default_message = _('Invalid username or password.')
17
+ message = begin
18
+ response_msg = JSON.parse(ex.response.body)['error']
19
+ response_msg.is_a?(Hash) ? response_msg['message'] : response_msg
20
+ rescue
21
+ end
22
+ return UnauthorizedError.new(default_message) unless message
23
+
24
+ UnauthorizedError.new("#{message}\n#{default_message}")
25
+ end
26
+
27
+ def status
28
+ unless @user.nil? || @password.nil?
29
+ _("Using configured credentials for user '%s'.") % @user
30
+ else
31
+ _('Credentials are not configured.')
32
+ end
33
+ end
34
+
35
+ def user(ask = nil)
36
+ @user ||= ask && get_user
37
+ end
38
+
39
+ def password(ask = nil)
40
+ @password ||= ask && get_password
41
+ end
42
+
43
+ def set_credentials(user, password)
44
+ @user = user
45
+ @password = password
46
+ end
47
+
48
+ def clear
49
+ set_credentials(nil, nil)
50
+ end
51
+
52
+ private
53
+
54
+ def get_user
55
+ @user ||= ask_user(_('[Foreman] Username:%s') % ' ')
56
+ end
57
+
58
+ def get_password
59
+ @password ||= ask_user(_("[Foreman] Password for %{user}:%{wsp}") % { user: @user, wsp: ' ' }, true)
60
+ end
61
+
62
+ def ask_user(prompt, silent = false)
63
+ if silent
64
+ HammerCLI.interactive_output.ask(prompt) { |q| q.echo = false }
65
+ else
66
+ HammerCLI.interactive_output.ask(prompt)
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -1,6 +1,7 @@
1
1
  require 'hammer_cli_foreman/api/session_authenticator_wrapper'
2
2
  require 'hammer_cli_foreman/api/authenticator'
3
3
  require 'hammer_cli_foreman/api/interactive_basic_auth'
4
+ require 'hammer_cli_foreman/api/interactive_basic_auth_external'
4
5
  require 'hammer_cli_foreman/api/negotiate_auth'
5
6
  require 'hammer_cli_foreman/api/oauth/authentication_code_grant'
6
7
  require 'hammer_cli_foreman/api/oauth/password_grant'
@@ -11,6 +12,7 @@ module HammerCLIForeman
11
12
  CONNECTION_NAME = 'foreman'
12
13
  AUTH_TYPES = {
13
14
  basic_auth: 'Basic_Auth',
15
+ basic_auth_external: 'Basic_Auth_External',
14
16
  negotiate: 'Negotiate_Auth',
15
17
  oauth_authentication_code_grant: 'Oauth_Authentication_Code_Grant',
16
18
  oauth_password_grant: 'Oauth_Password_Grant'
@@ -44,8 +46,7 @@ module HammerCLIForeman
44
46
 
45
47
  protected
46
48
 
47
- def default_auth_type(settings)
48
- return AUTH_TYPES[:basic_auth] unless HammerCLIForeman::Sessions.enabled?
49
+ def default_auth_type(_settings)
49
50
  HammerCLI::Settings.get(:foreman, :default_auth_type) || AUTH_TYPES[:basic_auth]
50
51
  end
51
52
 
@@ -1,68 +1,9 @@
1
+ require 'hammer_cli_foreman/api/basic_auth'
2
+
1
3
  module HammerCLIForeman
2
4
  module Api
3
5
  class InteractiveBasicAuth < ApipieBindings::Authenticators::BasicAuth
4
- def authenticate(request, args)
5
- if HammerCLI.interactive?
6
- get_user
7
- get_password
8
- end
9
- super
10
- end
11
-
12
- def error(ex)
13
- if ex.is_a?(RestClient::Unauthorized)
14
- self.clear
15
- message = _('Invalid username or password.')
16
- begin
17
- message = JSON.parse(ex.response.body)['error']['message']
18
- rescue
19
- end
20
- UnauthorizedError.new(message)
21
- end
22
- end
23
-
24
- def status
25
- unless @user.nil? || @password.nil?
26
- _("Using configured credentials for user '%s'.") % @user
27
- else
28
- _("Credentials are not configured.")
29
- end
30
- end
31
-
32
- def user(ask=nil)
33
- @user ||= ask && get_user
34
- end
35
-
36
- def password(ask=nil)
37
- @password ||= ask && get_password
38
- end
39
-
40
- def set_credentials(user, password)
41
- @user = user
42
- @password = password
43
- end
44
-
45
- def clear
46
- set_credentials(nil, nil)
47
- end
48
-
49
- private
50
-
51
- def get_user
52
- @user ||= ask_user(_("[Foreman] Username:%s") % " ")
53
- end
54
-
55
- def get_password
56
- @password ||= ask_user(_("[Foreman] Password for %{user}:%{wsp}") % {:user => @user, :wsp => " "}, true)
57
- end
58
-
59
- def ask_user(prompt, silent=false)
60
- if silent
61
- HammerCLI.interactive_output.ask(prompt) { |q| q.echo = false }
62
- else
63
- HammerCLI.interactive_output.ask(prompt)
64
- end
65
- end
6
+ include HammerCLIForeman::Api::BasicAuth
66
7
  end
67
8
  end
68
9
  end
@@ -0,0 +1,17 @@
1
+ require 'hammer_cli_foreman/api/basic_auth'
2
+
3
+ module HammerCLIForeman
4
+ module Api
5
+ class InteractiveBasicAuthExternal < ApipieBindings::Authenticators::BasicAuthExternal
6
+ include HammerCLIForeman::Api::BasicAuth
7
+
8
+ def initialize(user, password, foreman_url)
9
+ super(user, password, "#{foreman_url}/api/users/extlogin", HammerCLI::SSLOptions.new.get_options(foreman_url))
10
+ end
11
+
12
+ def session_id
13
+ auth_cookie&.delete_prefix('_session_id=')
14
+ end
15
+ end
16
+ end
17
+ end
@@ -80,7 +80,7 @@ module HammerCLIForeman
80
80
 
81
81
  def user(ask=nil)
82
82
  return unless @authenticator.respond_to?(:user)
83
- if @auth_type == AUTH_TYPES[:basic_auth]
83
+ if [AUTH_TYPES[:basic_auth], AUTH_TYPES[:basic_auth_external]].include?(@auth_type)
84
84
  @authenticator.user(ask)
85
85
  elsif @auth_type == AUTH_TYPES[:oauth_authentication_code_grant] ||
86
86
  @auth_type = AUTH_TYPES[:oauth_password_grant]
@@ -93,7 +93,7 @@ module HammerCLIForeman
93
93
  end
94
94
 
95
95
  def set_auth_params(*args)
96
- if @auth_type == AUTH_TYPES[:basic_auth]
96
+ if [AUTH_TYPES[:basic_auth], AUTH_TYPES[:basic_auth_external]].include?(@auth_type)
97
97
  @authenticator.set_credentials(*args)
98
98
  elsif @auth_type == AUTH_TYPES[:oauth_authentication_code_grant] ||
99
99
  @auth_type == AUTH_TYPES[:oauth_password_grant]
@@ -28,6 +28,27 @@ module HammerCLIForeman
28
28
  end
29
29
  end
30
30
 
31
+ class BasicExternal < HammerCLI::AbstractCommand
32
+ extend HammerCLIForeman::Authenticate::Login
33
+
34
+ command_name 'basic-external'
35
+ desc _('Authenticate against external source (IPA/PAM) with credentials')
36
+
37
+ option ['-u', '--username'], 'USERNAME', _('Username to access the remote system')
38
+ option ['-p', '--password'], 'PASSWORD', _('Password to access the remote system')
39
+
40
+ def execute
41
+ Basic.execute_with_params(
42
+ AUTH_TYPES[:basic_auth_external],
43
+ option_username || HammerCLI::Settings.get('_params', 'username'),
44
+ option_password || HammerCLI::Settings.get('_params', 'password')
45
+ )
46
+ logged_user = HammerCLIForeman.foreman_api_connection.authenticator.user
47
+ print_message(_("Successfully logged in as '%s'.") % logged_user)
48
+ HammerCLI::EX_OK
49
+ end
50
+ end
51
+
31
52
  class Negotiate < HammerCLI::AbstractCommand
32
53
  extend HammerCLIForeman::Authenticate::Login
33
54
 
@@ -40,7 +40,7 @@ module HammerCLIForeman
40
40
  ['bootable', _('Boolean, set 1 for bootable, only one volume can be bootable')],
41
41
  ['preallocate', _('Boolean, set 1 to preallocate')],
42
42
  ['wipe_after_delete', _('Boolean, set 1 to wipe disk after delete')],
43
- ['interface', _('Disk interface name, must be ide, virto or virto_scsi')]
43
+ ['interface', _('Disk interface name, must be ide, virtio or virtio_scsi')]
44
44
  ]
45
45
  end
46
46
 
@@ -45,7 +45,7 @@ module HammerCLIForeman
45
45
  label _("Report metrics") do
46
46
  from "metrics" do
47
47
  from "time" do
48
- field :config_retrieval, _("config_retrieval")
48
+ field :config_retrieval, _("config retrieval")
49
49
  field :exec, _("exec")
50
50
  field :file, _("file")
51
51
  field :package, _("package")
@@ -26,7 +26,7 @@ module HammerCLIForeman
26
26
  class InfoCommand < HammerCLIForeman::InfoCommand
27
27
  output ListCommand.output_definition do
28
28
  field :version, _("Version")
29
- field :hosts_count, _("Host_count")
29
+ field :hosts_count, _("Host count")
30
30
  collection :features, _("Features") do
31
31
  field :name, _('Name')
32
32
  field :version, _('Version')
@@ -1,5 +1,5 @@
1
1
  module HammerCLIForeman
2
2
  def self.version
3
- @version ||= Gem::Version.new "3.5.0"
3
+ @version ||= Gem::Version.new "3.6.0"
4
4
  end
5
5
  end
@@ -105,8 +105,9 @@ describe HammerCLIForeman::Api::InteractiveBasicAuth do
105
105
  response.stubs(:body).returns('{"error": {"message": "Unable to authenticate user admin"}}')
106
106
  ex.response = response
107
107
  new_ex = auth.error(ex)
108
+ expected = "Unable to authenticate user admin\nInvalid username or password."
108
109
 
109
- assert_equal 'Unable to authenticate user admin', new_ex.message
110
+ assert_equal expected, new_ex.message
110
111
  end
111
112
  end
112
113
 
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hammer_cli_foreman
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.0
4
+ version: 3.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomáš Strachota
8
8
  - Martin Bačovský
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-10-31 00:00:00.000000000 Z
12
+ date: 2023-02-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hammer_cli
@@ -17,28 +17,28 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 3.3.0
20
+ version: 3.6.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: 3.3.0
27
+ version: 3.6.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: apipie-bindings
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: 0.5.0
34
+ version: 0.6.0
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: 0.5.0
41
+ version: 0.6.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rest-client
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -75,19 +75,19 @@ dependencies:
75
75
  version: 2.2.1
76
76
  description: 'Foreman commands for Hammer CLI
77
77
 
78
- '
78
+ '
79
79
  email: tstracho@redhat.com
80
80
  executables: []
81
81
  extensions: []
82
82
  extra_rdoc_files:
83
+ - doc/configuration.md
84
+ - doc/developer_docs.md
85
+ - doc/host_create.md
83
86
  - doc/name_id_resolution.md
84
87
  - doc/option_builder.md
85
- - doc/using_hammer_cli_foreman_command.md
86
- - doc/developer_docs.md
87
88
  - doc/plugin.md
88
89
  - doc/testing.md
89
- - doc/configuration.md
90
- - doc/host_create.md
90
+ - doc/using_hammer_cli_foreman_command.md
91
91
  - doc/release_notes.md
92
92
  - README.md
93
93
  files:
@@ -106,8 +106,10 @@ files:
106
106
  - lib/hammer_cli_foreman.rb
107
107
  - lib/hammer_cli_foreman/api.rb
108
108
  - lib/hammer_cli_foreman/api/authenticator.rb
109
+ - lib/hammer_cli_foreman/api/basic_auth.rb
109
110
  - lib/hammer_cli_foreman/api/connection.rb
110
111
  - lib/hammer_cli_foreman/api/interactive_basic_auth.rb
112
+ - lib/hammer_cli_foreman/api/interactive_basic_auth_external.rb
111
113
  - lib/hammer_cli_foreman/api/negotiate_auth.rb
112
114
  - lib/hammer_cli_foreman/api/oauth/authentication_code_grant.rb
113
115
  - lib/hammer_cli_foreman/api/oauth/password_grant.rb
@@ -350,7 +352,7 @@ homepage: https://github.com/theforeman/hammer-cli-foreman
350
352
  licenses:
351
353
  - GPL-3.0+
352
354
  metadata: {}
353
- post_install_message:
355
+ post_install_message:
354
356
  rdoc_options: []
355
357
  require_paths:
356
358
  - lib
@@ -365,8 +367,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
365
367
  - !ruby/object:Gem::Version
366
368
  version: '0'
367
369
  requirements: []
368
- rubygems_version: 3.1.2
369
- signing_key:
370
+ rubygems_version: 3.1.6
371
+ signing_key:
370
372
  specification_version: 4
371
373
  summary: Foreman commands for Hammer
372
374
  test_files:
@@ -384,106 +386,106 @@ test_files:
384
386
  - test/data/1.24/foreman_api.json
385
387
  - test/data/2.0/foreman_api.json
386
388
  - test/data/2.1/foreman_api.json
387
- - test/data/README.md
388
389
  - test/data/2.4/foreman_api.json
389
390
  - test/data/2.5/foreman_api.json
390
391
  - test/data/3.1/foreman_api.json
391
392
  - test/data/3.4/foreman_api.json
393
+ - test/data/README.md
394
+ - test/functional/architecture_test.rb
395
+ - test/functional/associating_commands_test.rb
396
+ - test/functional/audit_test.rb
392
397
  - test/functional/auth_source_test.rb
398
+ - test/functional/bookmark_test.rb
393
399
  - test/functional/commands/list_test.rb
400
+ - test/functional/compute_attribute_test.rb
401
+ - test/functional/compute_profile_test.rb
402
+ - test/functional/compute_resource_test.rb
403
+ - test/functional/domain/create_test.rb
404
+ - test/functional/domain/update_test.rb
405
+ - test/functional/filter_test.rb
406
+ - test/functional/host_test.rb
394
407
  - test/functional/hostgroup/create_test.rb
395
408
  - test/functional/hostgroup/update_test.rb
396
- - test/functional/architecture_test.rb
397
- - test/functional/compute_attribute_test.rb
398
- - test/functional/ping_test.rb
399
- - test/functional/user_test.rb
400
- - test/functional/ssh_keys_test.rb
401
- - test/functional/subnet/update_test.rb
402
- - test/functional/subnet/create_test.rb
403
- - test/functional/test_helper.rb
409
+ - test/functional/http_proxy_test.rb
404
410
  - test/functional/location_test.rb
411
+ - test/functional/mail_notification_test.rb
405
412
  - test/functional/media_test.rb
413
+ - test/functional/model_test.rb
414
+ - test/functional/operating_system_test.rb
415
+ - test/functional/organization_test.rb
406
416
  - test/functional/partition_table_test.rb
407
417
  - test/functional/personal_access_token_test.rb
418
+ - test/functional/ping_test.rb
419
+ - test/functional/realm_test.rb
420
+ - test/functional/registration_test.rb
408
421
  - test/functional/report_template_test.rb
422
+ - test/functional/role_test.rb
409
423
  - test/functional/settings_test.rb
424
+ - test/functional/ssh_keys_test.rb
410
425
  - test/functional/status_test.rb
426
+ - test/functional/subnet/create_test.rb
427
+ - test/functional/subnet/update_test.rb
428
+ - test/functional/table_preference_test.rb
429
+ - test/functional/template_test.rb
430
+ - test/functional/test_helper.rb
411
431
  - test/functional/user_mail_notification_test.rb
412
- - test/functional/compute_resource_test.rb
413
- - test/functional/compute_profile_test.rb
414
- - test/functional/realm_test.rb
432
+ - test/functional/user_test.rb
415
433
  - test/functional/usergroup_test.rb
416
- - test/functional/organization_test.rb
417
434
  - test/functional/virtual_machine_test.rb
418
- - test/functional/domain/create_test.rb
419
- - test/functional/domain/update_test.rb
420
- - test/functional/filter_test.rb
421
- - test/functional/host_test.rb
422
- - test/functional/http_proxy_test.rb
423
- - test/functional/mail_notification_test.rb
424
- - test/functional/operating_system_test.rb
425
- - test/functional/template_test.rb
426
- - test/functional/associating_commands_test.rb
427
- - test/functional/audit_test.rb
428
- - test/functional/role_test.rb
429
- - test/functional/bookmark_test.rb
430
- - test/functional/model_test.rb
431
- - test/functional/registration_test.rb
432
- - test/functional/table_preference_test.rb
433
- - test/unit/api/void_auth_test.rb
434
- - test/unit/api/interactive_basic_auth_test.rb
435
+ - test/test_helper.rb
435
436
  - test/unit/api/oauth/oauth_authentication_code_grant_test.rb
436
437
  - test/unit/api/oauth/oauth_password_grant_test.rb
437
438
  - test/unit/api/session_authenticator_wrapper_test.rb
438
- - test/unit/test_output_adapter.rb
439
- - test/unit/host_test.rb
439
+ - test/unit/api/void_auth_test.rb
440
+ - test/unit/api/interactive_basic_auth_test.rb
441
+ - test/unit/api_test.rb
442
+ - test/unit/apipie_resource_mock.rb
443
+ - test/unit/architecture_test.rb
444
+ - test/unit/audit_test.rb
445
+ - test/unit/auth_source_external.rb
440
446
  - test/unit/auth_source_ldap_test.rb
441
- - test/unit/config_report_test.rb
447
+ - test/unit/bookmark_test.rb
448
+ - test/unit/commands_test.rb
449
+ - test/unit/common_parameter_test.rb
450
+ - test/unit/compute_profile_test.rb
442
451
  - test/unit/compute_resource_test.rb
452
+ - test/unit/config_report_test.rb
443
453
  - test/unit/data/test_api.json
444
454
  - test/unit/defaults_test.rb
445
- - test/unit/id_resolver_test.rb
455
+ - test/unit/dependency_resolver_test.rb
456
+ - test/unit/domain_test.rb
457
+ - test/unit/exception_handler_test.rb
446
458
  - test/unit/external_usergroup_test.rb
447
459
  - test/unit/fact_test.rb
460
+ - test/unit/filter_test.rb
461
+ - test/unit/helpers/command.rb
448
462
  - test/unit/helpers/fake_searchables.rb
449
463
  - test/unit/helpers/resource_disabled.rb
450
- - test/unit/helpers/command.rb
464
+ - test/unit/host_test.rb
465
+ - test/unit/hostgroup_test.rb
466
+ - test/unit/id_resolver_test.rb
451
467
  - test/unit/image_test.rb
452
468
  - test/unit/location_test.rb
453
- - test/unit/messages_test.rb
454
469
  - test/unit/mail_notification_test.rb
470
+ - test/unit/media_test.rb
471
+ - test/unit/messages_test.rb
472
+ - test/unit/model_test.rb
473
+ - test/unit/operating_system_test.rb
474
+ - test/unit/option_builders_test.rb
455
475
  - test/unit/option_sources/id_params_test.rb
456
476
  - test/unit/option_sources/ids_params_test.rb
457
477
  - test/unit/organization_test.rb
458
478
  - test/unit/output/formatters_test.rb
459
- - test/unit/common_parameter_test.rb
479
+ - test/unit/param_filters_test.rb
480
+ - test/unit/partition_table_test.rb
460
481
  - test/unit/realm_test.rb
482
+ - test/unit/role_test.rb
483
+ - test/unit/sessions_test.rb
461
484
  - test/unit/settings_test.rb
462
- - test/unit/usergroup_test.rb
485
+ - test/unit/smart_proxy_test.rb
463
486
  - test/unit/subnet_test.rb
487
+ - test/unit/template_test.rb
464
488
  - test/unit/test_helper.rb
489
+ - test/unit/test_output_adapter.rb
465
490
  - test/unit/user_test.rb
466
- - test/unit/param_filters_test.rb
467
- - test/unit/role_test.rb
468
- - test/unit/model_test.rb
469
- - test/unit/operating_system_test.rb
470
- - test/unit/option_builders_test.rb
471
- - test/unit/architecture_test.rb
472
- - test/unit/commands_test.rb
473
- - test/unit/audit_test.rb
474
- - test/unit/auth_source_external.rb
475
- - test/unit/dependency_resolver_test.rb
476
- - test/unit/exception_handler_test.rb
477
- - test/unit/filter_test.rb
478
- - test/unit/media_test.rb
479
- - test/unit/sessions_test.rb
480
- - test/unit/bookmark_test.rb
481
- - test/unit/hostgroup_test.rb
482
- - test/unit/api_test.rb
483
- - test/unit/apipie_resource_mock.rb
484
- - test/unit/compute_profile_test.rb
485
- - test/unit/partition_table_test.rb
486
- - test/unit/template_test.rb
487
- - test/unit/smart_proxy_test.rb
488
- - test/unit/domain_test.rb
489
- - test/test_helper.rb
491
+ - test/unit/usergroup_test.rb