fog-core 2.1.2 → 2.5.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.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +2 -0
  3. data/.github/dependabot.yml +10 -0
  4. data/.github/workflows/ci.yml +32 -0
  5. data/.rubocop.yml +16 -12
  6. data/.rubocop_todo.yml +724 -0
  7. data/Gemfile +1 -1
  8. data/README.md +2 -1
  9. data/Rakefile +2 -14
  10. data/SECURITY.md +6 -0
  11. data/changelog.md +80 -6
  12. data/fog-core.gemspec +12 -9
  13. data/lib/fog/compute/models/server.rb +7 -3
  14. data/lib/fog/compute.rb +3 -3
  15. data/lib/fog/core/association.rb +1 -0
  16. data/lib/fog/core/attributes/default.rb +7 -0
  17. data/lib/fog/core/attributes.rb +28 -3
  18. data/lib/fog/core/cache.rb +58 -55
  19. data/lib/fog/core/collection.rb +9 -3
  20. data/lib/fog/core/connection.rb +1 -1
  21. data/lib/fog/core/current_machine.rb +1 -1
  22. data/lib/fog/core/errors.rb +1 -1
  23. data/lib/fog/core/logger.rb +5 -2
  24. data/lib/fog/core/mock.rb +7 -2
  25. data/lib/fog/core/model.rb +34 -5
  26. data/lib/fog/core/provider.rb +33 -10
  27. data/lib/fog/core/scp.rb +16 -11
  28. data/lib/fog/core/service.rb +5 -5
  29. data/lib/fog/core/services_mixin.rb +36 -16
  30. data/lib/fog/core/ssh.rb +4 -2
  31. data/lib/fog/core/stringify_keys.rb +0 -2
  32. data/lib/fog/core/time.rb +2 -2
  33. data/lib/fog/core/uuid.rb +2 -8
  34. data/lib/fog/core/version.rb +1 -1
  35. data/lib/fog/core/wait_for.rb +2 -1
  36. data/lib/fog/core/wait_for_defaults.rb +2 -0
  37. data/lib/fog/core.rb +57 -59
  38. data/lib/fog/formatador.rb +9 -8
  39. data/lib/fog/schema/data_validator.rb +1 -0
  40. data/lib/fog/storage.rb +15 -16
  41. data/lib/fog/test_helpers/collection_helper.rb +2 -0
  42. data/lib/fog/test_helpers/formats_helper.rb +2 -2
  43. data/lib/fog/test_helpers/helper.rb +3 -3
  44. data/lib/fog/test_helpers/minitest/assertions.rb +1 -1
  45. data/lib/fog/test_helpers/minitest/expectations.rb +1 -1
  46. data/lib/fog/test_helpers/mock_helper.rb +84 -84
  47. data/lib/fog/test_helpers/succeeds_helper.rb +2 -2
  48. data/lib/fog/test_helpers/types_helper.rb +1 -0
  49. data/lib/tasks/test_task.rb +4 -5
  50. metadata +57 -86
  51. data/.github/stale.yml +0 -17
  52. data/.travis.yml +0 -39
  53. data/spec/compute/models/server_spec.rb +0 -229
  54. data/spec/compute_spec.rb +0 -95
  55. data/spec/connection_spec.rb +0 -105
  56. data/spec/core/cache_spec.rb +0 -191
  57. data/spec/core/model_spec.rb +0 -36
  58. data/spec/core/stringify_keys_spec.rb +0 -38
  59. data/spec/core/whitelist_keys_spec.rb +0 -36
  60. data/spec/credentials_spec.rb +0 -88
  61. data/spec/current_machine_spec.rb +0 -36
  62. data/spec/fake_app/fake_service.rb +0 -18
  63. data/spec/fake_app/models/collection.rb +0 -5
  64. data/spec/fake_app/models/model.rb +0 -2
  65. data/spec/fake_app/requests/request.rb +0 -11
  66. data/spec/fog_attribute_spec.rb +0 -549
  67. data/spec/formatador_spec.rb +0 -154
  68. data/spec/identity_spec.rb +0 -95
  69. data/spec/mocking_spec.rb +0 -84
  70. data/spec/service_spec.rb +0 -201
  71. data/spec/spec_helper.rb +0 -19
  72. data/spec/storage_spec.rb +0 -112
  73. data/spec/test_helpers/formats_helper_spec.rb +0 -121
  74. data/spec/test_helpers/schema_validator_spec.rb +0 -101
  75. data/spec/timeout_spec.rb +0 -20
  76. data/spec/utils_spec.rb +0 -29
  77. data/spec/uuid_spec.rb +0 -11
  78. data/spec/wait_for_spec.rb +0 -30
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.2
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evan Light
8
8
  - Wesley Beary
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-09-04 00:00:00.000000000 Z
12
+ date: 2024-08-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: builder
@@ -26,49 +26,55 @@ dependencies:
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
- name: mime-types
29
+ name: excon
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">="
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '0'
34
+ version: '0.71'
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'
41
+ version: '0.71'
42
42
  - !ruby/object:Gem::Dependency
43
- name: excon
43
+ name: formatador
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - "~>"
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0.2'
49
+ - - "<"
47
50
  - !ruby/object:Gem::Version
48
- version: '0.58'
51
+ version: '2.0'
49
52
  type: :runtime
50
53
  prerelease: false
51
54
  version_requirements: !ruby/object:Gem::Requirement
52
55
  requirements:
53
- - - "~>"
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '0.2'
59
+ - - "<"
54
60
  - !ruby/object:Gem::Version
55
- version: '0.58'
61
+ version: '2.0'
56
62
  - !ruby/object:Gem::Dependency
57
- name: formatador
63
+ name: mime-types
58
64
  requirement: !ruby/object:Gem::Requirement
59
65
  requirements:
60
- - - "~>"
66
+ - - ">="
61
67
  - !ruby/object:Gem::Version
62
- version: '0.2'
68
+ version: '0'
63
69
  type: :runtime
64
70
  prerelease: false
65
71
  version_requirements: !ruby/object:Gem::Requirement
66
72
  requirements:
67
- - - "~>"
73
+ - - ">="
68
74
  - !ruby/object:Gem::Version
69
- version: '0.2'
75
+ version: '0'
70
76
  - !ruby/object:Gem::Dependency
71
- name: tins
77
+ name: minitest
72
78
  requirement: !ruby/object:Gem::Requirement
73
79
  requirements:
74
80
  - - ">="
@@ -82,7 +88,7 @@ dependencies:
82
88
  - !ruby/object:Gem::Version
83
89
  version: '0'
84
90
  - !ruby/object:Gem::Dependency
85
- name: coveralls
91
+ name: minitest-stub-const
86
92
  requirement: !ruby/object:Gem::Requirement
87
93
  requirements:
88
94
  - - ">="
@@ -96,7 +102,7 @@ dependencies:
96
102
  - !ruby/object:Gem::Version
97
103
  version: '0'
98
104
  - !ruby/object:Gem::Dependency
99
- name: minitest
105
+ name: pry
100
106
  requirement: !ruby/object:Gem::Requirement
101
107
  requirements:
102
108
  - - ">="
@@ -110,7 +116,7 @@ dependencies:
110
116
  - !ruby/object:Gem::Version
111
117
  version: '0'
112
118
  - !ruby/object:Gem::Dependency
113
- name: minitest-stub-const
119
+ name: rake
114
120
  requirement: !ruby/object:Gem::Requirement
115
121
  requirements:
116
122
  - - ">="
@@ -124,7 +130,7 @@ dependencies:
124
130
  - !ruby/object:Gem::Version
125
131
  version: '0'
126
132
  - !ruby/object:Gem::Dependency
127
- name: pry
133
+ name: rubocop
128
134
  requirement: !ruby/object:Gem::Requirement
129
135
  requirements:
130
136
  - - ">="
@@ -138,7 +144,7 @@ dependencies:
138
144
  - !ruby/object:Gem::Version
139
145
  version: '0'
140
146
  - !ruby/object:Gem::Dependency
141
- name: rake
147
+ name: rubocop-minitest
142
148
  requirement: !ruby/object:Gem::Requirement
143
149
  requirements:
144
150
  - - ">="
@@ -152,7 +158,7 @@ dependencies:
152
158
  - !ruby/object:Gem::Version
153
159
  version: '0'
154
160
  - !ruby/object:Gem::Dependency
155
- name: rubocop
161
+ name: rubocop-rake
156
162
  requirement: !ruby/object:Gem::Requirement
157
163
  requirements:
158
164
  - - ">="
@@ -179,6 +185,20 @@ dependencies:
179
185
  - - ">="
180
186
  - !ruby/object:Gem::Version
181
187
  version: '0'
188
+ - !ruby/object:Gem::Dependency
189
+ name: tins
190
+ requirement: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ type: :development
196
+ prerelease: false
197
+ version_requirements: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
182
202
  - !ruby/object:Gem::Dependency
183
203
  name: yard
184
204
  requirement: !ruby/object:Gem::Requirement
@@ -201,16 +221,19 @@ executables: []
201
221
  extensions: []
202
222
  extra_rdoc_files: []
203
223
  files:
204
- - ".github/stale.yml"
224
+ - ".github/FUNDING.yml"
225
+ - ".github/dependabot.yml"
226
+ - ".github/workflows/ci.yml"
205
227
  - ".gitignore"
206
228
  - ".rubocop.yml"
207
- - ".travis.yml"
229
+ - ".rubocop_todo.yml"
208
230
  - CONTRIBUTING.md
209
231
  - CONTRIBUTORS.md
210
232
  - Gemfile
211
233
  - LICENSE.md
212
234
  - README.md
213
235
  - Rakefile
236
+ - SECURITY.md
214
237
  - changelog.md
215
238
  - fog-core.gemspec
216
239
  - lib/fog/account.rb
@@ -290,37 +313,12 @@ files:
290
313
  - lib/fog/volume.rb
291
314
  - lib/fog/vpn.rb
292
315
  - lib/tasks/test_task.rb
293
- - spec/compute/models/server_spec.rb
294
- - spec/compute_spec.rb
295
- - spec/connection_spec.rb
296
- - spec/core/cache_spec.rb
297
- - spec/core/model_spec.rb
298
- - spec/core/stringify_keys_spec.rb
299
- - spec/core/whitelist_keys_spec.rb
300
- - spec/credentials_spec.rb
301
- - spec/current_machine_spec.rb
302
- - spec/fake_app/fake_service.rb
303
- - spec/fake_app/models/collection.rb
304
- - spec/fake_app/models/model.rb
305
- - spec/fake_app/requests/request.rb
306
- - spec/fog_attribute_spec.rb
307
- - spec/formatador_spec.rb
308
- - spec/identity_spec.rb
309
- - spec/mocking_spec.rb
310
- - spec/service_spec.rb
311
- - spec/spec_helper.rb
312
- - spec/storage_spec.rb
313
- - spec/test_helpers/formats_helper_spec.rb
314
- - spec/test_helpers/schema_validator_spec.rb
315
- - spec/timeout_spec.rb
316
- - spec/utils_spec.rb
317
- - spec/uuid_spec.rb
318
- - spec/wait_for_spec.rb
319
316
  homepage: https://github.com/fog/fog-core
320
317
  licenses:
321
318
  - MIT
322
- metadata: {}
323
- post_install_message:
319
+ metadata:
320
+ rubygems_mfa_required: 'true'
321
+ post_install_message:
324
322
  rdoc_options: []
325
323
  require_paths:
326
324
  - lib
@@ -328,42 +326,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
328
326
  requirements:
329
327
  - - ">="
330
328
  - !ruby/object:Gem::Version
331
- version: 2.0.0
329
+ version: '2.0'
332
330
  required_rubygems_version: !ruby/object:Gem::Requirement
333
331
  requirements:
334
332
  - - ">="
335
333
  - !ruby/object:Gem::Version
336
334
  version: '0'
337
335
  requirements: []
338
- rubyforge_project:
339
- rubygems_version: 2.7.6
340
- signing_key:
336
+ rubygems_version: 3.4.10
337
+ signing_key:
341
338
  specification_version: 4
342
339
  summary: Shared classes and tests for fog providers and services.
343
- test_files:
344
- - spec/compute/models/server_spec.rb
345
- - spec/compute_spec.rb
346
- - spec/connection_spec.rb
347
- - spec/core/cache_spec.rb
348
- - spec/core/model_spec.rb
349
- - spec/core/stringify_keys_spec.rb
350
- - spec/core/whitelist_keys_spec.rb
351
- - spec/credentials_spec.rb
352
- - spec/current_machine_spec.rb
353
- - spec/fake_app/fake_service.rb
354
- - spec/fake_app/models/collection.rb
355
- - spec/fake_app/models/model.rb
356
- - spec/fake_app/requests/request.rb
357
- - spec/fog_attribute_spec.rb
358
- - spec/formatador_spec.rb
359
- - spec/identity_spec.rb
360
- - spec/mocking_spec.rb
361
- - spec/service_spec.rb
362
- - spec/spec_helper.rb
363
- - spec/storage_spec.rb
364
- - spec/test_helpers/formats_helper_spec.rb
365
- - spec/test_helpers/schema_validator_spec.rb
366
- - spec/timeout_spec.rb
367
- - spec/utils_spec.rb
368
- - spec/uuid_spec.rb
369
- - spec/wait_for_spec.rb
340
+ test_files: []
data/.github/stale.yml DELETED
@@ -1,17 +0,0 @@
1
- # Number of days of inactivity before an issue becomes stale
2
- daysUntilStale: 60
3
- # Number of days of inactivity before a stale issue is closed
4
- daysUntilClose: 7
5
- # Issues with these labels will never be considered stale
6
- exemptLabels:
7
- - pinned
8
- - security
9
- # Label to use when marking an issue as stale
10
- staleLabel: wontfix
11
- # Comment to post when marking an issue as stale. Set to `false` to disable
12
- markComment: >
13
- This issue has been automatically marked stale due to inactivity.
14
- It will be closed if no further activity occurs.
15
- Thank you for your contributions.
16
- # Comment to post when closing a stale issue. Set to `false` to disable
17
- closeComment: false
data/.travis.yml DELETED
@@ -1,39 +0,0 @@
1
- language: ruby
2
-
3
- rvm:
4
- - 2.0
5
- - 2.1
6
- - 2.2
7
- - 2.3
8
- - 2.4
9
- - jruby-head
10
-
11
- sudo: false
12
- dist: trusty
13
-
14
- script: bundle exec rake travis
15
-
16
- matrix:
17
- fast_finish: true
18
- include:
19
- - rvm: 2.1
20
- gemfile: Gemfile
21
- env: COVERAGE=true
22
- - rvm: jruby-head
23
- gemfile: Gemfile
24
- allow_failures:
25
- - rvm: jruby-head
26
- - rvm: jruby9k
27
-
28
- notifications:
29
- email: false
30
- irc:
31
- channels:
32
- - "irc.freenode.org#ruby-fog"
33
- template:
34
- - "[#%{build_number}] %{message} %{build_url}"
35
- - "[#%{build_number}] %{commit} on %{branch} by %{author}"
36
- - "[#%{build_number}] %{compare_url}"
37
- on_success: always
38
- on_failure: always
39
- use_notice: false
@@ -1,229 +0,0 @@
1
- require "spec_helper"
2
- require "fog/compute/models/server"
3
-
4
- describe Fog::Compute::Server do
5
- before do
6
- @server = Fog::Compute::Server.new
7
- end
8
-
9
- describe "#sshable?" do
10
- describe "when the server is not ready" do
11
- it "is false" do
12
- @server.stub(:ready?, false) do
13
- refute @server.sshable?
14
- end
15
- end
16
- end
17
-
18
- describe "when the server is ready" do
19
- describe "when the ssh_ip_address is nil" do
20
- it "is false" do
21
- @server.stub(:ready?, true) do
22
- @server.stub(:ssh_ip_address, nil) do
23
- refute @server.sshable?
24
- end
25
- end
26
- end
27
- end
28
-
29
-
30
- describe "when the ssh_ip_address exists" do
31
- # Define these constants which would be imported by net-ssh once loaded
32
- module Net
33
- module SSH
34
- class AuthenticationFailed < RuntimeError
35
- end
36
- class Disconnect < RuntimeError
37
- end
38
- end
39
- end
40
-
41
- describe "and ssh times out" do
42
- it "is false" do
43
- @server.stub(:ready?, true) do
44
- @server.stub(:ssh_ip_address, "10.0.0.1") do
45
- raises_timeout = lambda { |_time| raise Timeout::Error.new }
46
- Timeout.stub(:timeout, raises_timeout) do
47
- refute @server.sshable?
48
- end
49
- end
50
- end
51
- end
52
- end
53
-
54
- describe "and it raises Net::SSH::AuthenticationFailed" do
55
- it "is false" do
56
- @server.stub(:ready?, true) do
57
- @server.stub(:ssh_ip_address, "10.0.0.1") do
58
- raise_error = lambda { |_cmd, _options| raise Net::SSH::AuthenticationFailed.new }
59
- @server.stub(:ssh, raise_error) do
60
- refute @server.sshable?
61
- end
62
- end
63
- end
64
- end
65
-
66
- it "resets SSH timeout" do
67
- @server.instance_variable_set(:@sshable_timeout, 8)
68
- @server.stub(:ready?, true) do
69
- @server.stub(:ssh_ip_address, "10.0.0.1") do
70
- raise_error = lambda { |_cmd, _options| raise Net::SSH::AuthenticationFailed.new }
71
- @server.stub(:ssh, raise_error) do
72
- @server.sshable?
73
- assert_nil @server.instance_variable_get(:@sshable_timeout), nil
74
- end
75
- end
76
- end
77
- end
78
- end
79
-
80
- describe "and it raises Net::SSH::Disconnect" do
81
- it "is false" do
82
- @server.stub(:ready?, true) do
83
- @server.stub(:ssh_ip_address, "10.0.0.1") do
84
- raise_error = lambda { |_cmd, _options| raise Net::SSH::Disconnect.new }
85
- @server.stub(:ssh, raise_error) do
86
- refute @server.sshable?
87
- end
88
- end
89
- end
90
- end
91
-
92
- it "resets SSH timeout" do
93
- @server.instance_variable_set(:@sshable_timeout, 8)
94
- @server.stub(:ready?, true) do
95
- @server.stub(:ssh_ip_address, "10.0.0.1") do
96
- raise_error = lambda { |_cmd, _options| raise Net::SSH::Disconnect.new }
97
- @server.stub(:ssh, raise_error) do
98
- @server.sshable?
99
- assert_nil @server.instance_variable_get(:@sshable_timeout), nil
100
- end
101
- end
102
- end
103
- end
104
- end
105
-
106
- describe "and it raises SystemCallError" do
107
- it "is false" do
108
- @server.stub(:ready?, true) do
109
- @server.stub(:ssh_ip_address, "10.0.0.1") do
110
- raise_error = lambda { |_cmd, _options| raise SystemCallError.new("message, 0") }
111
- @server.stub(:ssh, raise_error) do
112
- refute @server.sshable?
113
- end
114
- end
115
- end
116
- end
117
-
118
- it "does not increase SSH timeout" do
119
- @server.stub(:ready?, true) do
120
- @server.stub(:ssh_ip_address, "10.0.0.1") do
121
- raise_error = lambda { |_cmd, _options| raise SystemCallError.new("message, 0") }
122
- @server.stub(:ssh, raise_error) do
123
- @server.sshable?
124
- assert_equal @server.instance_variable_get(:@sshable_timeout), 8
125
- end
126
- end
127
- end
128
- end
129
- end
130
-
131
- describe "and ssh completes within the designated timeout" do
132
- it "is true" do
133
- @server.stub(:ready?, true) do
134
- @server.stub(:ssh_ip_address, "10.0.0.1") do
135
- @server.stub(:ssh, "datum") do
136
- assert @server.sshable?
137
- end
138
- end
139
- end
140
- end
141
- end
142
-
143
- describe "when called successively" do
144
- describe "and ssh times out" do
145
- it "increases the timeout factor by 1.5" do
146
- @server.stub(:ready?, true) do
147
- @server.stub(:ssh_ip_address, "10.0.0.1") do
148
- raises_timeout = lambda do |time|
149
- assert(time == 8)
150
- raise Timeout::Error.new
151
- end
152
- Timeout.stub(:timeout, raises_timeout) do
153
- refute @server.sshable?
154
- end
155
-
156
- raises_timeout = lambda do |time|
157
- assert_equal(12, time)
158
- raise Timeout::Error.new
159
- end
160
- Timeout.stub(:timeout, raises_timeout) do
161
- refute @server.sshable?
162
- end
163
- end
164
- end
165
- end
166
-
167
- it "does not increase timeout beyond 60s" do
168
- @server.stub(:ready?, true) do
169
- @server.stub(:ssh_ip_address, "10.0.0.1") do
170
- raises_timeout = lambda { |_time| raise Timeout::Error.new }
171
- Timeout.stub(:timeout, raises_timeout) do
172
- 5.times { refute @server.sshable? }
173
- end
174
-
175
- raises_timeout = lambda do |time|
176
- assert_equal(60, time)
177
- raise Timeout::Error.new
178
- end
179
- Timeout.stub(:timeout, raises_timeout) do
180
- refute @server.sshable?
181
- end
182
-
183
- raises_timeout = lambda do |time|
184
- assert_equal(60, time)
185
- raise Timeout::Error.new
186
- end
187
- Timeout.stub(:timeout, raises_timeout) do
188
- refute @server.sshable?
189
- end
190
- end
191
- end
192
- end
193
-
194
- describe "when ssh eventually succeeds" do
195
- it "resets the timeout to the initial value" do
196
- @server.stub(:ready?, true) do
197
- @server.stub(:ssh_ip_address, "10.0.0.1") do
198
- raises_timeout = lambda do |time|
199
- assert(time == 8)
200
- raise Timeout::Error.new
201
- end
202
- Timeout.stub(:timeout, raises_timeout) do
203
- refute @server.sshable?
204
- end
205
-
206
- @server.stub(:ssh, "datum") do
207
- assert @server.sshable?
208
- end
209
-
210
- raises_timeout = lambda do |time|
211
- assert_equal(8, time)
212
- raise Timeout::Error.new
213
- end
214
- Timeout.stub(:timeout, raises_timeout) do
215
- refute @server.sshable?
216
- end
217
- end
218
- end
219
- end
220
- end
221
-
222
- end
223
- end
224
-
225
- end
226
- end
227
-
228
- end
229
- end
data/spec/compute_spec.rb DELETED
@@ -1,95 +0,0 @@
1
- require "spec_helper"
2
-
3
- module Fog
4
- module Compute
5
- def self.require(*_args); end
6
- end
7
- end
8
-
9
- describe "Fog::Compute" do
10
- describe "#new" do
11
- module Fog
12
- module TheRightWay
13
- extend Provider
14
- service(:compute, "Compute")
15
- end
16
- end
17
-
18
- module Fog
19
- module TheRightWay
20
- class Compute
21
- def initialize(_args); end
22
- end
23
- end
24
- end
25
-
26
- it "instantiates an instance of Fog::Compute::<Provider> from the :provider keyword arg" do
27
- compute = Fog::Compute.new(:provider => :therightway)
28
- assert_instance_of(Fog::TheRightWay::Compute, compute)
29
- end
30
-
31
- module Fog
32
- module TheWrongWay
33
- extend Provider
34
- service(:compute, "Compute")
35
- end
36
- end
37
-
38
- module Fog
39
- module Compute
40
- class TheWrongWay
41
- def initialize(_args); end
42
- end
43
- end
44
- end
45
-
46
- it "instantiates an instance of Fog::<Provider>::Compute from the :provider keyword arg" do
47
- compute = Fog::Compute.new(:provider => :thewrongway)
48
- assert_instance_of(Fog::Compute::TheWrongWay, compute)
49
- end
50
-
51
- module Fog
52
- module BothWays
53
- extend Provider
54
- service(:compute, "Compute")
55
- end
56
- end
57
-
58
- module Fog
59
- module BothWays
60
- class Compute
61
- attr_reader :args
62
- def initialize(args)
63
- @args = args
64
- end
65
- end
66
- end
67
- end
68
-
69
- module Fog
70
- module Compute
71
- class BothWays
72
- def initialize(_args); end
73
- end
74
- end
75
- end
76
-
77
- describe "when both Fog::Compute::<Provider> and Fog::<Provider>::Compute exist" do
78
- it "prefers Fog::<Provider>::Compute" do
79
- compute = Fog::Compute.new(:provider => :bothways)
80
- assert_instance_of(Fog::BothWays::Compute, compute)
81
- end
82
- end
83
-
84
- it "passes the supplied keyword args less :provider to Fog::Compute::<Provider>#new" do
85
- compute = Fog::Compute.new(:provider => :bothways, :extra => :stuff)
86
- assert_equal({ :extra => :stuff }, compute.args)
87
- end
88
-
89
- it "raises ArgumentError when given a :provider where a Fog::Compute::Provider that does not exist" do
90
- assert_raises(ArgumentError) do
91
- Fog::Compute.new(:provider => :wat)
92
- end
93
- end
94
- end
95
- end