fog-core 2.3.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +2 -0
  3. data/.github/workflows/ruby.yml +1 -1
  4. data/.github/workflows/stale.yml +1 -1
  5. data/.rubocop.yml +16 -12
  6. data/.rubocop_todo.yml +724 -0
  7. data/Gemfile +1 -1
  8. data/Rakefile +2 -14
  9. data/changelog.md +14 -0
  10. data/fog-core.gemspec +10 -7
  11. data/lib/fog/compute/models/server.rb +7 -3
  12. data/lib/fog/compute.rb +2 -2
  13. data/lib/fog/core/association.rb +1 -0
  14. data/lib/fog/core/attributes/default.rb +7 -0
  15. data/lib/fog/core/attributes.rb +28 -3
  16. data/lib/fog/core/cache.rb +58 -55
  17. data/lib/fog/core/collection.rb +9 -3
  18. data/lib/fog/core/connection.rb +1 -1
  19. data/lib/fog/core/current_machine.rb +1 -1
  20. data/lib/fog/core/errors.rb +1 -1
  21. data/lib/fog/core/logger.rb +2 -2
  22. data/lib/fog/core/mock.rb +6 -1
  23. data/lib/fog/core/model.rb +34 -5
  24. data/lib/fog/core/provider.rb +7 -7
  25. data/lib/fog/core/scp.rb +15 -11
  26. data/lib/fog/core/service.rb +4 -4
  27. data/lib/fog/core/services_mixin.rb +9 -9
  28. data/lib/fog/core/ssh.rb +3 -2
  29. data/lib/fog/core/stringify_keys.rb +0 -2
  30. data/lib/fog/core/time.rb +2 -2
  31. data/lib/fog/core/uuid.rb +2 -8
  32. data/lib/fog/core/version.rb +1 -1
  33. data/lib/fog/core/wait_for.rb +2 -1
  34. data/lib/fog/core/wait_for_defaults.rb +2 -0
  35. data/lib/fog/core.rb +57 -58
  36. data/lib/fog/formatador.rb +7 -6
  37. data/lib/fog/schema/data_validator.rb +1 -0
  38. data/lib/fog/storage.rb +15 -15
  39. data/lib/fog/test_helpers/collection_helper.rb +2 -0
  40. data/lib/fog/test_helpers/formats_helper.rb +2 -2
  41. data/lib/fog/test_helpers/helper.rb +3 -3
  42. data/lib/fog/test_helpers/minitest/assertions.rb +1 -1
  43. data/lib/fog/test_helpers/minitest/expectations.rb +1 -1
  44. data/lib/fog/test_helpers/mock_helper.rb +84 -84
  45. data/lib/fog/test_helpers/types_helper.rb +1 -0
  46. data/lib/tasks/test_task.rb +2 -2
  47. data/spec/compute/models/server_spec.rb +7 -7
  48. data/spec/compute_spec.rb +6 -6
  49. data/spec/connection_spec.rb +11 -9
  50. data/spec/core/cache_spec.rb +51 -15
  51. data/spec/core/collection_spec.rb +24 -0
  52. data/spec/core/model_spec.rb +36 -3
  53. data/spec/core/stringify_keys_spec.rb +3 -3
  54. data/spec/core/whitelist_keys_spec.rb +2 -2
  55. data/spec/current_machine_spec.rb +2 -2
  56. data/spec/fog_attribute_spec.rb +183 -163
  57. data/spec/formatador_spec.rb +7 -7
  58. data/spec/identity_spec.rb +6 -6
  59. data/spec/mocking_spec.rb +3 -3
  60. data/spec/service_spec.rb +19 -19
  61. data/spec/spec_helper.rb +3 -8
  62. data/spec/storage_spec.rb +6 -6
  63. data/spec/test_helpers/formats_helper_spec.rb +8 -8
  64. data/spec/test_helpers/schema_validator_spec.rb +8 -8
  65. data/spec/utils_spec.rb +6 -6
  66. data/spec/wait_for_spec.rb +2 -2
  67. metadata +44 -53
data/lib/fog/core/scp.rb CHANGED
@@ -22,19 +22,23 @@ module Fog
22
22
  end
23
23
 
24
24
  def upload(local_path, remote_path, upload_options = {})
25
- self.class.data[@address] << { :username => @username,
26
- :options => @options,
27
- :local_path => local_path,
28
- :remote_path => remote_path,
29
- :upload_options => upload_options }
25
+ self.class.data[@address] << {
26
+ username: @username,
27
+ options: @options,
28
+ local_path: local_path,
29
+ remote_path: remote_path,
30
+ upload_options: upload_options
31
+ }
30
32
  end
31
33
 
32
34
  def download(remote_path, local_path, download_options = {})
33
- self.class.data[@address] << { :username => @username,
34
- :options => @options,
35
- :remote_path => remote_path,
36
- :local_path => local_path,
37
- :download_options => download_options }
35
+ self.class.data[@address] << {
36
+ username: @username,
37
+ options: @options,
38
+ remote_path: remote_path,
39
+ local_path: local_path,
40
+ download_options: download_options
41
+ }
38
42
  end
39
43
  end
40
44
 
@@ -64,7 +68,7 @@ module Fog
64
68
 
65
69
  @address = address
66
70
  @username = username
67
- @options = { :paranoid => false, :verify_host_key => :never }.merge(options)
71
+ @options = { paranoid: false, verify_host_key: :never }.merge(options)
68
72
  @options.delete(:paranoid) if Net::SSH::VALID_OPTIONS.include? :verify_host_key
69
73
  @options[:verify_host_key] = false unless Net::SSH::Verifiers.const_defined?(:Never)
70
74
  end
@@ -11,7 +11,7 @@ module Fog
11
11
 
12
12
  module NoLeakInspector
13
13
  def inspect
14
- "#<#{self.class}:#{object_id} #{(instance_variables - service.secrets).map { |iv| [iv, instance_variable_get(iv).inspect].join("=") }.join(" ")}>"
14
+ "#<#{self.class}:#{object_id} #{(instance_variables - service.secrets).map { |iv| [iv, instance_variable_get(iv).inspect].join('=') }.join(' ')}>"
15
15
  end
16
16
  end
17
17
 
@@ -119,7 +119,7 @@ module Fog
119
119
  # @deprecated
120
120
  def fetch_credentials(_options)
121
121
  # attempt to load credentials from config file
122
- Fog.credentials.reject { |key, _value| !(recognized | requirements).include?(key) }
122
+ Fog.credentials.select { |key, _value| (recognized | requirements).include?(key) }
123
123
  rescue ::Fog::Errors::LoadError
124
124
  # if there are no configured credentials, do nothing
125
125
  {}
@@ -241,13 +241,13 @@ module Fog
241
241
  missing = requirements - keys
242
242
 
243
243
  unless missing.empty?
244
- raise ArgumentError, "Missing required arguments: #{missing.join(", ")}"
244
+ raise ArgumentError, "Missing required arguments: #{missing.join(', ')}"
245
245
  end
246
246
 
247
247
  unless recognizes.empty?
248
248
  unrecognized = options.keys - requirements - recognized
249
249
  unless unrecognized.empty?
250
- Fog::Logger.warning("Unrecognized arguments: #{unrecognized.join(", ")}")
250
+ Fog::Logger.warning("Unrecognized arguments: #{unrecognized.join(', ')}")
251
251
  end
252
252
  end
253
253
  end
@@ -1,12 +1,12 @@
1
1
  module Fog
2
2
  module ServicesMixin
3
- E_SERVICE_PROVIDER_CONSTANT = <<-EOS.gsub(/\s+/, ' ').strip.freeze
3
+ E_SERVICE_PROVIDER_CONSTANT = <<-EOS.gsub(/\s+/, " ").strip.freeze
4
4
  Falling back to deprecated constant Fog::%<service>s::%<provider>s. The
5
5
  preferred format of service provider constants has changed from
6
6
  service::provider to provider::service. Please update this service
7
7
  provider to use the preferred format.
8
8
  EOS
9
- E_SERVICE_PROVIDER_PATH = <<-EOS.gsub(/\s+/, ' ').strip.freeze
9
+ E_SERVICE_PROVIDER_PATH = <<-EOS.gsub(/\s+/, " ").strip.freeze
10
10
  Falling back to deprecated path fog/%<service>s/%<provider>s. The
11
11
  preferred file path format has changed from service/provider to
12
12
  provider/service. Please update this service provider to use the preferred
@@ -14,7 +14,7 @@ module Fog
14
14
  EOS
15
15
 
16
16
  def [](provider)
17
- new(:provider => provider)
17
+ new(provider: provider)
18
18
  end
19
19
 
20
20
  def new(attributes)
@@ -75,22 +75,22 @@ module Fog
75
75
  def check_provider_alias(provider)
76
76
  case provider
77
77
  when :baremetalcloud
78
- Fog::Logger.deprecation(':baremetalcloud is deprecated. Use :bare_metal_cloud instead!')
78
+ Fog::Logger.deprecation(":baremetalcloud is deprecated. Use :bare_metal_cloud instead!")
79
79
  :bare_metal_cloud
80
80
  when :gogrid
81
- Fog::Logger.deprecation(':gogrid is deprecated. Use :go_grid instead!')
81
+ Fog::Logger.deprecation(":gogrid is deprecated. Use :go_grid instead!")
82
82
  :go_grid
83
83
  when :internetarchive
84
- Fog::Logger.deprecation(':internetarchive is deprecated. Use :internet_archive instead!')
84
+ Fog::Logger.deprecation(":internetarchive is deprecated. Use :internet_archive instead!")
85
85
  :internet_archive
86
86
  when :new_servers
87
- Fog::Logger.deprecation(':new_servers is deprecated. Use :bare_metal_cloud instead!')
87
+ Fog::Logger.deprecation(":new_servers is deprecated. Use :bare_metal_cloud instead!")
88
88
  :bare_metal_cloud
89
89
  when :stormondemand
90
- Fog::Logger.deprecation(':stormondemand is deprecated. Use :storm_on_demand instead!')
90
+ Fog::Logger.deprecation(":stormondemand is deprecated. Use :storm_on_demand instead!")
91
91
  :storm_on_demand
92
92
  when :vclouddirector
93
- Fog::Logger.deprecation(':vclouddirector is deprecated. Use :vcloud_director instead!')
93
+ Fog::Logger.deprecation(":vclouddirector is deprecated. Use :vcloud_director instead!")
94
94
  :vcloud_director
95
95
  else provider
96
96
  end
data/lib/fog/core/ssh.rb CHANGED
@@ -28,7 +28,7 @@ module Fog
28
28
  end
29
29
 
30
30
  def run(commands, &_blk)
31
- self.class.data[@address] << { :commands => commands, :username => @username, :options => @options }
31
+ self.class.data[@address] << { commands: commands, username: @username, options: @options }
32
32
  end
33
33
  end
34
34
 
@@ -61,6 +61,7 @@ module Fog
61
61
 
62
62
  channel.on_extended_data do |_ch, type, data|
63
63
  next unless type == 1
64
+
64
65
  result.stderr << data
65
66
  yield ["", data] if blk
66
67
  end
@@ -116,7 +117,7 @@ module Fog
116
117
 
117
118
  # net-ssh has deprecated :paranoid in favor of :verify_host_key
118
119
  # https://github.com/net-ssh/net-ssh/pull/524
119
- opts = { :paranoid => false, :verify_host_key => :never }.merge(options)
120
+ opts = { paranoid: false, verify_host_key: :never }.merge(options)
120
121
  if Net::SSH::VALID_OPTIONS.include? :verify_host_key
121
122
  opts.delete(:paranoid)
122
123
  end
@@ -7,8 +7,6 @@ module Fog
7
7
  end
8
8
  end
9
9
 
10
- private
11
-
12
10
  # http://devblog.avdi.org/2009/11/20/hash-transforms-in-ruby/
13
11
  def self.transform_hash(original, &block)
14
12
  original.reduce({}) do |result, (key, value)|
data/lib/fog/core/time.rb CHANGED
@@ -2,8 +2,8 @@ require "time"
2
2
 
3
3
  module Fog
4
4
  class Time < ::Time
5
- DAYS = %w(Sun Mon Tue Wed Thu Fri Sat)
6
- MONTHS = %w(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
5
+ DAYS = %w(Sun Mon Tue Wed Thu Fri Sat).freeze
6
+ MONTHS = %w(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec).freeze
7
7
 
8
8
  def self.now
9
9
  at(::Time.now - offset)
data/lib/fog/core/uuid.rb CHANGED
@@ -4,16 +4,10 @@ module Fog
4
4
  class UUID
5
5
  class << self
6
6
  def uuid
7
- if supported?
8
- SecureRandom.uuid
9
- else
10
- ary = SecureRandom.random_bytes(16).unpack("NnnnnN")
11
- ary[2] = (ary[2] & 0x0fff) | 0x4000
12
- ary[3] = (ary[3] & 0x3fff) | 0x8000
13
- "%08x-%04x-%04x-%04x-%04x%08x" % ary
14
- end
7
+ SecureRandom.uuid
15
8
  end
16
9
 
10
+ # :nodoc: This method is used by other plugins, so preserve it for the compatibility
17
11
  def supported?
18
12
  SecureRandom.respond_to?(:uuid)
19
13
  end
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module Core
3
- VERSION = "2.3.0"
3
+ VERSION = "2.4.0".freeze
4
4
  end
5
5
  end
@@ -8,9 +8,10 @@ module Fog
8
8
  if duration > timeout
9
9
  raise Errors::TimeoutError, "The specified wait_for timeout (#{timeout} seconds) was exceeded"
10
10
  end
11
+
11
12
  sleep(interval.respond_to?(:call) ? interval.call(retries += 1).to_f : interval.to_f)
12
13
  duration = Time.now - start
13
14
  end
14
- { :duration => duration }
15
+ { duration: duration }
15
16
  end
16
17
  end
@@ -22,6 +22,7 @@ module Fog
22
22
 
23
23
  def self.timeout=(timeout)
24
24
  raise ArgumentError, "timeout must be non-negative" unless timeout >= 0
25
+
25
26
  @timeout = timeout
26
27
  end
27
28
 
@@ -33,6 +34,7 @@ module Fog
33
34
 
34
35
  def self.max_interval=(interval)
35
36
  raise ArgumentError, "interval must be non-negative" unless interval >= 0
37
+
36
38
  @max_interval = interval
37
39
  end
38
40
  end
data/lib/fog/core.rb CHANGED
@@ -11,67 +11,66 @@ require "timeout"
11
11
  require "ipaddr"
12
12
 
13
13
  # internal core dependencies
14
- require File.expand_path('../core/version', __FILE__)
14
+ require File.expand_path("core/version", __dir__)
15
15
 
16
16
  # Mixins
17
- require File.expand_path('../core/services_mixin', __FILE__)
17
+ require File.expand_path("core/services_mixin", __dir__)
18
18
 
19
- require File.expand_path('../core/attributes', __FILE__)
20
- require File.expand_path('../core/attributes/default', __FILE__)
21
- require File.expand_path('../core/attributes/array', __FILE__)
22
- require File.expand_path('../core/attributes/boolean', __FILE__)
23
- require File.expand_path('../core/attributes/float', __FILE__)
24
- require File.expand_path('../core/attributes/integer', __FILE__)
25
- require File.expand_path('../core/attributes/string', __FILE__)
26
- require File.expand_path('../core/attributes/time', __FILE__)
27
- require File.expand_path('../core/attributes/timestamp', __FILE__)
28
- require File.expand_path('../core/associations/default', __FILE__)
29
- require File.expand_path('../core/associations/many_identities', __FILE__)
30
- require File.expand_path('../core/associations/many_models', __FILE__)
31
- require File.expand_path('../core/associations/one_model', __FILE__)
32
- require File.expand_path('../core/associations/one_identity', __FILE__)
33
- require File.expand_path('../core/collection', __FILE__)
34
- require File.expand_path('../core/association', __FILE__)
35
- require File.expand_path('../core/connection', __FILE__)
36
- require File.expand_path('../core/credentials', __FILE__)
37
- require File.expand_path('../core/current_machine', __FILE__)
38
- require File.expand_path('../core/deprecation', __FILE__)
39
- require File.expand_path('../core/errors', __FILE__)
40
- require File.expand_path('../core/hmac', __FILE__)
41
- require File.expand_path('../core/logger', __FILE__)
42
- require File.expand_path('../core/model', __FILE__)
43
- require File.expand_path('../core/mock', __FILE__)
44
- require File.expand_path('../core/provider', __FILE__)
45
- require File.expand_path('../core/service', __FILE__)
46
- require File.expand_path('../core/ssh', __FILE__)
47
- require File.expand_path('../core/scp', __FILE__)
48
- require File.expand_path('../core/time', __FILE__)
49
- require File.expand_path('../core/utils', __FILE__)
50
- require File.expand_path('../core/wait_for', __FILE__)
51
- require File.expand_path('../core/wait_for_defaults', __FILE__)
52
- require File.expand_path('../core/uuid', __FILE__)
53
- require File.expand_path('../core/stringify_keys', __FILE__)
54
- require File.expand_path('../core/whitelist_keys', __FILE__)
55
-
56
- require File.expand_path('../account', __FILE__)
57
- require File.expand_path('../baremetal', __FILE__)
58
- require File.expand_path('../billing', __FILE__)
59
- require File.expand_path('../cdn', __FILE__)
60
- require File.expand_path('../compute', __FILE__)
61
- require File.expand_path('../dns', __FILE__)
62
- require File.expand_path('../identity', __FILE__)
63
- require File.expand_path('../image', __FILE__)
64
- require File.expand_path('../introspection', __FILE__)
65
- require File.expand_path('../metering', __FILE__)
66
- require File.expand_path('../monitoring', __FILE__)
67
- require File.expand_path('../nfv', __FILE__)
68
- require File.expand_path('../network', __FILE__)
69
- require File.expand_path('../orchestration', __FILE__)
70
- require File.expand_path('../storage', __FILE__)
71
- require File.expand_path('../support', __FILE__)
72
- require File.expand_path('../volume', __FILE__)
73
- require File.expand_path('../vpn', __FILE__)
19
+ require File.expand_path("core/attributes", __dir__)
20
+ require File.expand_path("core/attributes/default", __dir__)
21
+ require File.expand_path("core/attributes/array", __dir__)
22
+ require File.expand_path("core/attributes/boolean", __dir__)
23
+ require File.expand_path("core/attributes/float", __dir__)
24
+ require File.expand_path("core/attributes/integer", __dir__)
25
+ require File.expand_path("core/attributes/string", __dir__)
26
+ require File.expand_path("core/attributes/time", __dir__)
27
+ require File.expand_path("core/attributes/timestamp", __dir__)
28
+ require File.expand_path("core/associations/default", __dir__)
29
+ require File.expand_path("core/associations/many_identities", __dir__)
30
+ require File.expand_path("core/associations/many_models", __dir__)
31
+ require File.expand_path("core/associations/one_model", __dir__)
32
+ require File.expand_path("core/associations/one_identity", __dir__)
33
+ require File.expand_path("core/collection", __dir__)
34
+ require File.expand_path("core/association", __dir__)
35
+ require File.expand_path("core/connection", __dir__)
36
+ require File.expand_path("core/credentials", __dir__)
37
+ require File.expand_path("core/current_machine", __dir__)
38
+ require File.expand_path("core/deprecation", __dir__)
39
+ require File.expand_path("core/errors", __dir__)
40
+ require File.expand_path("core/hmac", __dir__)
41
+ require File.expand_path("core/logger", __dir__)
42
+ require File.expand_path("core/model", __dir__)
43
+ require File.expand_path("core/mock", __dir__)
44
+ require File.expand_path("core/provider", __dir__)
45
+ require File.expand_path("core/service", __dir__)
46
+ require File.expand_path("core/ssh", __dir__)
47
+ require File.expand_path("core/scp", __dir__)
48
+ require File.expand_path("core/time", __dir__)
49
+ require File.expand_path("core/utils", __dir__)
50
+ require File.expand_path("core/wait_for", __dir__)
51
+ require File.expand_path("core/wait_for_defaults", __dir__)
52
+ require File.expand_path("core/uuid", __dir__)
53
+ require File.expand_path("core/stringify_keys", __dir__)
54
+ require File.expand_path("core/whitelist_keys", __dir__)
74
55
 
56
+ require File.expand_path("account", __dir__)
57
+ require File.expand_path("baremetal", __dir__)
58
+ require File.expand_path("billing", __dir__)
59
+ require File.expand_path("cdn", __dir__)
60
+ require File.expand_path("compute", __dir__)
61
+ require File.expand_path("dns", __dir__)
62
+ require File.expand_path("identity", __dir__)
63
+ require File.expand_path("image", __dir__)
64
+ require File.expand_path("introspection", __dir__)
65
+ require File.expand_path("metering", __dir__)
66
+ require File.expand_path("monitoring", __dir__)
67
+ require File.expand_path("nfv", __dir__)
68
+ require File.expand_path("network", __dir__)
69
+ require File.expand_path("orchestration", __dir__)
70
+ require File.expand_path("storage", __dir__)
71
+ require File.expand_path("support", __dir__)
72
+ require File.expand_path("volume", __dir__)
73
+ require File.expand_path("vpn", __dir__)
75
74
 
76
75
  # Utility
77
- require File.expand_path('../formatador', __FILE__)
76
+ require File.expand_path("formatador", __dir__)
@@ -9,7 +9,7 @@ module Fog
9
9
  Thread.current[:formatador] ||= ::Formatador.new
10
10
  end
11
11
 
12
- def self.format(object, opts = { :include_nested => true })
12
+ def self.format(object, opts = { include_nested: true })
13
13
  string = init_string(object)
14
14
  indent { string << object_string(object, opts) }
15
15
  string << "#{indentation}>"
@@ -32,11 +32,9 @@ module Fog
32
32
  end
33
33
 
34
34
  def self.redisplay_progressbar(current, total, options = {})
35
- ::Formatador.redisplay_progressbar(current, total, options = {})
35
+ ::Formatador.redisplay_progressbar(current, total, options)
36
36
  end
37
37
 
38
- private
39
-
40
38
  def self.indent(&block)
41
39
  formatador.indent(&block)
42
40
  end
@@ -50,13 +48,14 @@ module Fog
50
48
  end
51
49
 
52
50
  def self.object_string(object, opts)
53
- string = "#{attribute_string(object)}"
54
- string << "#{nested_objects_string(object)}" if opts[:include_nested]
51
+ string = attribute_string(object).to_s
52
+ string << nested_objects_string(object).to_s if opts[:include_nested]
55
53
  string
56
54
  end
57
55
 
58
56
  def self.attribute_string(object)
59
57
  return "" unless object.class.respond_to?(:attributes)
58
+
60
59
  if object.class.attributes.empty?
61
60
  ""
62
61
  else
@@ -68,6 +67,7 @@ module Fog
68
67
  nested = ""
69
68
  return nested if object.respond_to?(:empty) and object.empty?
70
69
  return nested unless object.is_a?(Enumerable)
70
+
71
71
  nested = "#{indentation}[\n"
72
72
  indent { nested << indentation + inspect_object(object) }
73
73
  nested << "#{indentation}\n#{indentation}]\n"
@@ -82,6 +82,7 @@ module Fog
82
82
 
83
83
  def self.inspect_object(object)
84
84
  return "" unless object.is_a?(Enumerable)
85
+
85
86
  object.map { |o| indentation + o.inspect }.join(", \n#{indentation}")
86
87
  end
87
88
  end
@@ -106,6 +106,7 @@ module Fog
106
106
  case validator
107
107
  when Array
108
108
  return false if value.is_a?(Hash)
109
+
109
110
  value.respond_to?(:all?) && value.all? { |x| validate_value(validator[0], x, options) }
110
111
  when Symbol
111
112
  value.respond_to? validator
data/lib/fog/storage.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  begin
2
2
  # Use mime/types/columnar if available, for reduced memory usage
3
- require 'mime/types/columnar'
3
+ require "mime/types/columnar"
4
4
  rescue LoadError
5
- require 'mime/types'
5
+ require "mime/types"
6
6
  end
7
7
 
8
8
  module Fog
@@ -24,18 +24,18 @@ module Fog
24
24
  if body.respond_to?(:encoding)
25
25
  original_encoding = body.encoding
26
26
  body = body.dup if body.frozen?
27
- body = body.force_encoding('BINARY')
27
+ body = body.force_encoding("BINARY")
28
28
  end
29
29
 
30
30
  size = if body.respond_to?(:bytesize)
31
- body.bytesize
32
- elsif body.respond_to?(:size)
33
- body.size
34
- elsif body.respond_to?(:stat)
35
- body.stat.size
36
- else
37
- 0
38
- end
31
+ body.bytesize
32
+ elsif body.respond_to?(:size)
33
+ body.size
34
+ elsif body.respond_to?(:stat)
35
+ body.stat.size
36
+ else
37
+ 0
38
+ end
39
39
 
40
40
  if body.respond_to?(:encoding)
41
41
  body.force_encoding(original_encoding)
@@ -55,10 +55,10 @@ module Fog
55
55
 
56
56
  def self.parse_data(data)
57
57
  {
58
- :body => data,
59
- :headers => {
60
- "Content-Length" => get_body_size(data),
61
- "Content-Type" => get_content_type(data)
58
+ body: data,
59
+ headers: {
60
+ "Content-Length" => get_body_size(data),
61
+ "Content-Type" => get_content_type(data)
62
62
  # "Content-MD5" => Base64.encode64(Digest::MD5.digest(metadata[:body])).strip
63
63
  }
64
64
  }
@@ -35,6 +35,7 @@ def collection_tests(collection, params = {}, mocks_implemented = true)
35
35
 
36
36
  methods.each do |enum_method|
37
37
  next unless collection.respond_to?(enum_method)
38
+
38
39
  tests("##{enum_method}").succeeds do
39
40
  block_called = false
40
41
  collection.send(enum_method) { block_called = true }
@@ -44,6 +45,7 @@ def collection_tests(collection, params = {}, mocks_implemented = true)
44
45
 
45
46
  %w(max_by min_by).each do |enum_method|
46
47
  next unless collection.respond_to?(enum_method)
48
+
47
49
  tests("##{enum_method}").succeeds do
48
50
  block_called = false
49
51
  collection.send(enum_method) do
@@ -60,9 +60,9 @@ module Shindo
60
60
  def formats(format, strict = true)
61
61
  test("has proper format") do
62
62
  if strict
63
- options = { :allow_extra_keys => false, :allow_optional_rules => true }
63
+ options = { allow_extra_keys: false, allow_optional_rules: true }
64
64
  else
65
- options = { :allow_extra_keys => true, :allow_optional_rules => true }
65
+ options = { allow_extra_keys: true, allow_optional_rules: true }
66
66
  end
67
67
  validator = Fog::Schema::DataValidator.new
68
68
  valid = validator.validate(yield, format, options)
@@ -1,11 +1,11 @@
1
1
  require "excon"
2
2
 
3
- ENV["FOG_RC"] = ENV["FOG_RC"] || File.expand_path("../.fog", __FILE__)
3
+ ENV["FOG_RC"] = ENV["FOG_RC"] || File.expand_path(".fog", __dir__)
4
4
  ENV["FOG_CREDENTIAL"] = ENV["FOG_CREDENTIAL"] || "default"
5
5
 
6
- Excon.defaults.merge!(:debug_request => true, :debug_response => true)
6
+ Excon.defaults.merge!(debug_request: true, debug_response: true)
7
7
 
8
- LOREM = <<HERE
8
+ LOREM = <<HERE.freeze
9
9
  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
10
10
  incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
11
11
  nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
@@ -1,6 +1,6 @@
1
1
  require "fog/schema/data_validator"
2
2
 
3
- module MiniTest::Assertions
3
+ module Minitest::Assertions
4
4
  # Compares a hash's structure against a reference schema hash and returns true
5
5
  # when they match. Fog::Schema::Datavalidator is used for the validation.
6
6
  def assert_match_schema(actual, schema, message = nil, options = {})
@@ -1,3 +1,3 @@
1
- module MiniTest::Expectations
1
+ module Minitest::Expectations
2
2
  infect_an_assertion :assert_match_schema, :must_match_schema, :reverse
3
3
  end