fog-core 2.1.0 → 2.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.
Files changed (85) hide show
  1. checksums.yaml +5 -5
  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/CONTRIBUTING.md +5 -1
  8. data/Gemfile +1 -1
  9. data/README.md +2 -1
  10. data/Rakefile +2 -14
  11. data/SECURITY.md +6 -0
  12. data/changelog.md +241 -141
  13. data/fog-core.gemspec +13 -9
  14. data/lib/fog/account.rb +0 -16
  15. data/lib/fog/billing.rb +0 -11
  16. data/lib/fog/compute/models/server.rb +7 -3
  17. data/lib/fog/compute.rb +3 -25
  18. data/lib/fog/core/association.rb +1 -0
  19. data/lib/fog/core/attributes/default.rb +7 -0
  20. data/lib/fog/core/attributes.rb +42 -5
  21. data/lib/fog/core/cache.rb +58 -55
  22. data/lib/fog/core/collection.rb +9 -3
  23. data/lib/fog/core/connection.rb +4 -6
  24. data/lib/fog/core/current_machine.rb +1 -1
  25. data/lib/fog/core/errors.rb +1 -1
  26. data/lib/fog/core/logger.rb +5 -2
  27. data/lib/fog/core/mock.rb +7 -2
  28. data/lib/fog/core/model.rb +34 -5
  29. data/lib/fog/core/provider.rb +37 -4
  30. data/lib/fog/core/scp.rb +16 -11
  31. data/lib/fog/core/service.rb +5 -5
  32. data/lib/fog/core/services_mixin.rb +62 -10
  33. data/lib/fog/core/ssh.rb +49 -25
  34. data/lib/fog/core/stringify_keys.rb +0 -2
  35. data/lib/fog/core/time.rb +2 -2
  36. data/lib/fog/core/uuid.rb +2 -8
  37. data/lib/fog/core/version.rb +3 -1
  38. data/lib/fog/core/wait_for.rb +2 -1
  39. data/lib/fog/core/wait_for_defaults.rb +2 -0
  40. data/lib/fog/core.rb +57 -59
  41. data/lib/fog/dns.rb +0 -11
  42. data/lib/fog/formatador.rb +9 -8
  43. data/lib/fog/monitoring.rb +0 -11
  44. data/lib/fog/network.rb +0 -12
  45. data/lib/fog/schema/data_validator.rb +1 -0
  46. data/lib/fog/storage.rb +15 -30
  47. data/lib/fog/support.rb +0 -12
  48. data/lib/fog/test_helpers/collection_helper.rb +2 -0
  49. data/lib/fog/test_helpers/formats_helper.rb +2 -2
  50. data/lib/fog/test_helpers/helper.rb +3 -3
  51. data/lib/fog/test_helpers/minitest/assertions.rb +1 -1
  52. data/lib/fog/test_helpers/minitest/expectations.rb +1 -1
  53. data/lib/fog/test_helpers/mock_helper.rb +84 -84
  54. data/lib/fog/test_helpers/succeeds_helper.rb +2 -2
  55. data/lib/fog/test_helpers/types_helper.rb +1 -0
  56. data/lib/fog/vpn.rb +0 -12
  57. data/lib/tasks/test_task.rb +4 -5
  58. metadata +58 -85
  59. data/.travis.yml +0 -39
  60. data/spec/compute/models/server_spec.rb +0 -229
  61. data/spec/compute_spec.rb +0 -95
  62. data/spec/connection_spec.rb +0 -105
  63. data/spec/core/cache_spec.rb +0 -191
  64. data/spec/core/model_spec.rb +0 -36
  65. data/spec/core/stringify_keys_spec.rb +0 -38
  66. data/spec/core/whitelist_keys_spec.rb +0 -36
  67. data/spec/credentials_spec.rb +0 -88
  68. data/spec/current_machine_spec.rb +0 -36
  69. data/spec/fake_app/fake_service.rb +0 -18
  70. data/spec/fake_app/models/collection.rb +0 -5
  71. data/spec/fake_app/models/model.rb +0 -2
  72. data/spec/fake_app/requests/request.rb +0 -11
  73. data/spec/fog_attribute_spec.rb +0 -549
  74. data/spec/formatador_spec.rb +0 -154
  75. data/spec/identity_spec.rb +0 -95
  76. data/spec/mocking_spec.rb +0 -84
  77. data/spec/service_spec.rb +0 -201
  78. data/spec/spec_helper.rb +0 -19
  79. data/spec/storage_spec.rb +0 -114
  80. data/spec/test_helpers/formats_helper_spec.rb +0 -121
  81. data/spec/test_helpers/schema_validator_spec.rb +0 -101
  82. data/spec/timeout_spec.rb +0 -20
  83. data/spec/utils_spec.rb +0 -29
  84. data/spec/uuid_spec.rb +0 -11
  85. 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.0
4
+ version: 2.6.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-03-10 00:00:00.000000000 Z
12
+ date: 2024-10-25 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: '1.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'
41
+ version: '1.0'
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,15 +221,19 @@ executables: []
201
221
  extensions: []
202
222
  extra_rdoc_files: []
203
223
  files:
224
+ - ".github/FUNDING.yml"
225
+ - ".github/dependabot.yml"
226
+ - ".github/workflows/ci.yml"
204
227
  - ".gitignore"
205
228
  - ".rubocop.yml"
206
- - ".travis.yml"
229
+ - ".rubocop_todo.yml"
207
230
  - CONTRIBUTING.md
208
231
  - CONTRIBUTORS.md
209
232
  - Gemfile
210
233
  - LICENSE.md
211
234
  - README.md
212
235
  - Rakefile
236
+ - SECURITY.md
213
237
  - changelog.md
214
238
  - fog-core.gemspec
215
239
  - lib/fog/account.rb
@@ -289,37 +313,13 @@ files:
289
313
  - lib/fog/volume.rb
290
314
  - lib/fog/vpn.rb
291
315
  - lib/tasks/test_task.rb
292
- - spec/compute/models/server_spec.rb
293
- - spec/compute_spec.rb
294
- - spec/connection_spec.rb
295
- - spec/core/cache_spec.rb
296
- - spec/core/model_spec.rb
297
- - spec/core/stringify_keys_spec.rb
298
- - spec/core/whitelist_keys_spec.rb
299
- - spec/credentials_spec.rb
300
- - spec/current_machine_spec.rb
301
- - spec/fake_app/fake_service.rb
302
- - spec/fake_app/models/collection.rb
303
- - spec/fake_app/models/model.rb
304
- - spec/fake_app/requests/request.rb
305
- - spec/fog_attribute_spec.rb
306
- - spec/formatador_spec.rb
307
- - spec/identity_spec.rb
308
- - spec/mocking_spec.rb
309
- - spec/service_spec.rb
310
- - spec/spec_helper.rb
311
- - spec/storage_spec.rb
312
- - spec/test_helpers/formats_helper_spec.rb
313
- - spec/test_helpers/schema_validator_spec.rb
314
- - spec/timeout_spec.rb
315
- - spec/utils_spec.rb
316
- - spec/uuid_spec.rb
317
- - spec/wait_for_spec.rb
318
316
  homepage: https://github.com/fog/fog-core
319
317
  licenses:
320
318
  - MIT
321
- metadata: {}
322
- post_install_message:
319
+ metadata:
320
+ changelog_uri: https://github.com/fog/fog-core/blob/master/changelog.md
321
+ rubygems_mfa_required: 'true'
322
+ post_install_message:
323
323
  rdoc_options: []
324
324
  require_paths:
325
325
  - lib
@@ -327,42 +327,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
327
327
  requirements:
328
328
  - - ">="
329
329
  - !ruby/object:Gem::Version
330
- version: 2.0.0
330
+ version: '2.0'
331
331
  required_rubygems_version: !ruby/object:Gem::Requirement
332
332
  requirements:
333
333
  - - ">="
334
334
  - !ruby/object:Gem::Version
335
335
  version: '0'
336
336
  requirements: []
337
- rubyforge_project:
338
- rubygems_version: 2.6.11
339
- signing_key:
337
+ rubygems_version: 3.5.18
338
+ signing_key:
340
339
  specification_version: 4
341
340
  summary: Shared classes and tests for fog providers and services.
342
- test_files:
343
- - spec/compute/models/server_spec.rb
344
- - spec/compute_spec.rb
345
- - spec/connection_spec.rb
346
- - spec/core/cache_spec.rb
347
- - spec/core/model_spec.rb
348
- - spec/core/stringify_keys_spec.rb
349
- - spec/core/whitelist_keys_spec.rb
350
- - spec/credentials_spec.rb
351
- - spec/current_machine_spec.rb
352
- - spec/fake_app/fake_service.rb
353
- - spec/fake_app/models/collection.rb
354
- - spec/fake_app/models/model.rb
355
- - spec/fake_app/requests/request.rb
356
- - spec/fog_attribute_spec.rb
357
- - spec/formatador_spec.rb
358
- - spec/identity_spec.rb
359
- - spec/mocking_spec.rb
360
- - spec/service_spec.rb
361
- - spec/spec_helper.rb
362
- - spec/storage_spec.rb
363
- - spec/test_helpers/formats_helper_spec.rb
364
- - spec/test_helpers/schema_validator_spec.rb
365
- - spec/timeout_spec.rb
366
- - spec/utils_spec.rb
367
- - spec/uuid_spec.rb
368
- - spec/wait_for_spec.rb
341
+ test_files: []
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 Compute
20
- class TheRightWay
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::Compute::TheRightWay, 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 TheWrongWay
40
- class Compute
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::TheWrongWay::Compute, 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
- def initialize(_args); end
62
- end
63
- end
64
- end
65
-
66
- module Fog
67
- module Compute
68
- class BothWays
69
- attr_reader :args
70
- def initialize(args)
71
- @args = args
72
- 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::Compute::<Provider>" do
79
- compute = Fog::Compute.new(:provider => :bothways)
80
- assert_instance_of(Fog::Compute::BothWays, 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