fog-core 2.4.0 → 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.
- checksums.yaml +4 -4
- data/.github/FUNDING.yml +2 -0
- data/.github/dependabot.yml +2 -4
- data/.github/workflows/ci.yml +32 -0
- data/.rubocop.yml +1 -1
- data/README.md +2 -1
- data/SECURITY.md +6 -0
- data/changelog.md +12 -0
- data/fog-core.gemspec +1 -1
- data/lib/fog/compute.rb +1 -1
- data/lib/fog/core/mock.rb +1 -1
- data/lib/fog/core/provider.rb +1 -1
- data/lib/fog/core/service.rb +1 -1
- data/lib/fog/core/version.rb +1 -1
- data/lib/fog/core.rb +0 -1
- data/lib/fog/formatador.rb +3 -3
- data/lib/fog/storage.rb +0 -1
- data/lib/tasks/test_task.rb +2 -3
- metadata +5 -31
- data/.github/workflows/ruby.yml +0 -18
- data/.github/workflows/stale.yml +0 -9
- data/spec/compute/models/server_spec.rb +0 -229
- data/spec/compute_spec.rb +0 -95
- data/spec/connection_spec.rb +0 -107
- data/spec/core/cache_spec.rb +0 -227
- data/spec/core/collection_spec.rb +0 -24
- data/spec/core/model_spec.rb +0 -69
- data/spec/core/stringify_keys_spec.rb +0 -38
- data/spec/core/whitelist_keys_spec.rb +0 -36
- data/spec/credentials_spec.rb +0 -88
- data/spec/current_machine_spec.rb +0 -36
- data/spec/fake_app/fake_service.rb +0 -18
- data/spec/fake_app/models/collection.rb +0 -5
- data/spec/fake_app/models/model.rb +0 -2
- data/spec/fake_app/requests/request.rb +0 -11
- data/spec/fog_attribute_spec.rb +0 -569
- data/spec/formatador_spec.rb +0 -154
- data/spec/identity_spec.rb +0 -95
- data/spec/mocking_spec.rb +0 -84
- data/spec/service_spec.rb +0 -201
- data/spec/spec_helper.rb +0 -14
- data/spec/storage_spec.rb +0 -112
- data/spec/test_helpers/formats_helper_spec.rb +0 -121
- data/spec/test_helpers/schema_validator_spec.rb +0 -101
- data/spec/timeout_spec.rb +0 -20
- data/spec/utils_spec.rb +0 -29
- data/spec/uuid_spec.rb +0 -11
- data/spec/wait_for_spec.rb +0 -30
data/spec/formatador_spec.rb
DELETED
@@ -1,154 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Fog::Formatador do
|
4
|
-
describe "when object is Fog::Collection instance" do
|
5
|
-
before do
|
6
|
-
@member_class = Class.new(Fog::Model) do
|
7
|
-
attribute :name
|
8
|
-
|
9
|
-
def self.name
|
10
|
-
"MemberGadget"
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
@collection_class = Class.new(Fog::Collection) do
|
15
|
-
model @member_class
|
16
|
-
|
17
|
-
attribute :attr_one
|
18
|
-
attribute :attr_two
|
19
|
-
|
20
|
-
def self.name
|
21
|
-
"InspectionGadget"
|
22
|
-
end
|
23
|
-
|
24
|
-
def all
|
25
|
-
self
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
@collection = @collection_class.new(attr_one: "String", attr_two: 5)
|
30
|
-
@collection << @member_class.new(name: "Member name")
|
31
|
-
@expected = <<-EOS.gsub(/^ {6}/, "").chomp!
|
32
|
-
<InspectionGadget
|
33
|
-
attr_one="String",
|
34
|
-
attr_two=5
|
35
|
-
[
|
36
|
-
<MemberGadget
|
37
|
-
name="Member name"
|
38
|
-
>
|
39
|
-
]
|
40
|
-
>
|
41
|
-
EOS
|
42
|
-
end
|
43
|
-
|
44
|
-
it "returns formatted representation" do
|
45
|
-
Fog::Formatador.format(@collection).must_equal @expected
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
describe "when object is Fog::Collection without attributes" do
|
50
|
-
before do
|
51
|
-
@collection_class = Class.new(Fog::Collection) do
|
52
|
-
def all
|
53
|
-
self
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
@collection = @collection_class.new
|
58
|
-
@expected = <<-EOS.gsub(/^ {6}/, "").chomp!
|
59
|
-
<
|
60
|
-
[
|
61
|
-
|
62
|
-
]
|
63
|
-
>
|
64
|
-
EOS
|
65
|
-
end
|
66
|
-
|
67
|
-
it "returns formatted representation" do
|
68
|
-
Fog::Formatador.format(@collection).must_equal @expected
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
describe "when object has is Fog::Collection but ignoring nested objects" do
|
73
|
-
before do
|
74
|
-
@collection_class = Class.new(Fog::Collection) do
|
75
|
-
attribute :name
|
76
|
-
|
77
|
-
def all
|
78
|
-
self
|
79
|
-
end
|
80
|
-
end
|
81
|
-
@collection = @collection_class.new(name: "Name")
|
82
|
-
@collection << "this"
|
83
|
-
end
|
84
|
-
|
85
|
-
it "returns formatted representation" do
|
86
|
-
@expected = <<-EOS.gsub(/^ {6}/, "").chomp!
|
87
|
-
<
|
88
|
-
name="Name"
|
89
|
-
>
|
90
|
-
EOS
|
91
|
-
|
92
|
-
opts = { include_nested: false }
|
93
|
-
Fog::Formatador.format(@collection, opts).must_equal @expected
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
describe "when object is not enumerable" do
|
98
|
-
before do
|
99
|
-
@class = Class.new
|
100
|
-
@subject = @class.new
|
101
|
-
@expected = <<-EOS.gsub(/^ {6}/, "").chomp!
|
102
|
-
<
|
103
|
-
>
|
104
|
-
EOS
|
105
|
-
end
|
106
|
-
|
107
|
-
it "returns formatted representation" do
|
108
|
-
Fog::Formatador.format(@subject).must_equal @expected
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
describe "when object responds to non-enumerable '#map'" do
|
113
|
-
before do
|
114
|
-
@member = Class.new(Fog::Model) do
|
115
|
-
def self.name
|
116
|
-
"IPAddress"
|
117
|
-
end
|
118
|
-
|
119
|
-
# This map action is unrelated to Enumerable (See GH-138)
|
120
|
-
def map
|
121
|
-
raise "Do not call me when inspecting!"
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
@collection_class = Class.new(Fog::Collection) do
|
126
|
-
model @member
|
127
|
-
|
128
|
-
def self.name
|
129
|
-
"IPAddressCollection"
|
130
|
-
end
|
131
|
-
|
132
|
-
def all
|
133
|
-
self
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
@collection = @collection_class.new
|
138
|
-
@collection << @member.new
|
139
|
-
|
140
|
-
@expected = <<-EOS.gsub(/^ {6}/, "").chomp!
|
141
|
-
<IPAddressCollection
|
142
|
-
[
|
143
|
-
<IPAddress
|
144
|
-
>
|
145
|
-
]
|
146
|
-
>
|
147
|
-
EOS
|
148
|
-
end
|
149
|
-
|
150
|
-
it "returns formatted representation" do
|
151
|
-
Fog::Formatador.format(@collection).must_equal @expected
|
152
|
-
end
|
153
|
-
end
|
154
|
-
end
|
data/spec/identity_spec.rb
DELETED
@@ -1,95 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
module Fog
|
4
|
-
module Identity
|
5
|
-
def self.require(*_args); end
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
describe "Fog::Identity" do
|
10
|
-
describe "#new" do
|
11
|
-
module Fog
|
12
|
-
module TheRightWay
|
13
|
-
class Identity
|
14
|
-
def initialize(_args); end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
module Fog
|
20
|
-
module TheRightWay
|
21
|
-
extend Provider
|
22
|
-
service(:identity, "Identity")
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
it "instantiates an instance of Fog::Identity::<Provider> from the :provider keyword arg" do
|
27
|
-
identity = Fog::Identity.new(provider: :therightway)
|
28
|
-
assert_instance_of(Fog::TheRightWay::Identity, identity)
|
29
|
-
end
|
30
|
-
|
31
|
-
module Fog
|
32
|
-
module Identity
|
33
|
-
class TheWrongWay
|
34
|
-
def initialize(_args); end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
module Fog
|
40
|
-
module TheWrongWay
|
41
|
-
extend Provider
|
42
|
-
service(:identity, "Identity")
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
it "instantiates an instance of Fog::<Provider>::Identity from the :provider keyword arg" do
|
47
|
-
identity = Fog::Identity.new(provider: :thewrongway)
|
48
|
-
assert_instance_of(Fog::Identity::TheWrongWay, identity)
|
49
|
-
end
|
50
|
-
|
51
|
-
module Fog
|
52
|
-
module BothWays
|
53
|
-
class Identity
|
54
|
-
attr_reader :args
|
55
|
-
def initialize(args)
|
56
|
-
@args = args
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
module Fog
|
63
|
-
module Identity
|
64
|
-
class BothWays
|
65
|
-
def initialize(_args); end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
module Fog
|
71
|
-
module BothWays
|
72
|
-
extend Provider
|
73
|
-
service(:identity, "Identity")
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
describe "when both Fog::Identity::<Provider> and Fog::<Provider>::Identity exist" do
|
78
|
-
it "prefers Fog::Identity::<Provider>" do
|
79
|
-
identity = Fog::Identity.new(provider: :bothways)
|
80
|
-
assert_instance_of(Fog::BothWays::Identity, identity)
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
it "passes the supplied keyword args less :provider to Fog::Identity::<Provider>#new" do
|
85
|
-
identity = Fog::Identity.new(provider: :bothways, extra: :stuff)
|
86
|
-
assert_equal({ extra: :stuff }, identity.args)
|
87
|
-
end
|
88
|
-
|
89
|
-
it "raises ArgumentError when given a :provider where a Fog::Identity::Provider that does not exist" do
|
90
|
-
assert_raises(ArgumentError) do
|
91
|
-
Fog::Identity.new(provider: :wat)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
data/spec/mocking_spec.rb
DELETED
@@ -1,84 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe "Fog mocking" do
|
4
|
-
before do
|
5
|
-
@fog_was_mocked = Fog.mock?
|
6
|
-
Fog.unmock! if @fog_was_mocked
|
7
|
-
end
|
8
|
-
|
9
|
-
after do
|
10
|
-
Fog.mock! if @fog_was_mocked
|
11
|
-
end
|
12
|
-
|
13
|
-
describe "Fog.mock!" do
|
14
|
-
it "Fog.mock! returns true" do
|
15
|
-
assert_equal true, Fog.mock!
|
16
|
-
end
|
17
|
-
|
18
|
-
it "Fog.mock? without Fog.mock! returns false" do
|
19
|
-
assert_equal false, Fog.mock?
|
20
|
-
end
|
21
|
-
|
22
|
-
it "Fog.mock? with Fog.mock!" do
|
23
|
-
Fog.mock!
|
24
|
-
assert_equal true, Fog.mock?
|
25
|
-
end
|
26
|
-
|
27
|
-
it "Fog.mocking? without Fog.mock!" do
|
28
|
-
assert_equal false, Fog.mocking?
|
29
|
-
end
|
30
|
-
|
31
|
-
it "Fog.mocking? with Fog.mock!" do
|
32
|
-
Fog.mock!
|
33
|
-
assert_equal true, Fog.mocking?
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
describe "Fog::Mock.delay" do
|
38
|
-
it "Fog::Mock.delay defaults to 0" do
|
39
|
-
assert_equal 1, Fog::Mock.delay
|
40
|
-
end
|
41
|
-
|
42
|
-
it "handles reassignment" do
|
43
|
-
Fog::Mock.delay = 2
|
44
|
-
assert_equal 2, Fog::Mock.delay
|
45
|
-
|
46
|
-
Fog::Mock.delay = 1
|
47
|
-
assert_equal 1, Fog::Mock.delay
|
48
|
-
end
|
49
|
-
|
50
|
-
it "raises when given an illegal delay" do
|
51
|
-
assert_raises(ArgumentError) do
|
52
|
-
Fog::Mock.delay = -1
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
describe "Fog::Mock.random_ip" do
|
58
|
-
it "defaults to ipv4" do
|
59
|
-
assert IPAddr.new(Fog::Mock.random_ip).ipv4?
|
60
|
-
end
|
61
|
-
|
62
|
-
it "supports explicit request for v4" do
|
63
|
-
assert IPAddr.new(Fog::Mock.random_ip(version: :v4)).ipv4?
|
64
|
-
end
|
65
|
-
|
66
|
-
it "supports explicit request for v6" do
|
67
|
-
assert IPAddr.new(Fog::Mock.random_ip(version: :v6)).ipv6?
|
68
|
-
end
|
69
|
-
|
70
|
-
it "raises when supplied an illegal IP version" do
|
71
|
-
assert_raises(ArgumentError) do
|
72
|
-
IPAddr.new(Fog::Mock.random_ip(version: :v5)).ipv4?
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
describe "Fog::Mock.not_implemented" do
|
78
|
-
it "raises MockNotImplemented when called" do
|
79
|
-
assert_raises(Fog::Errors::MockNotImplemented) do
|
80
|
-
Fog::Mock.not_implemented
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
data/spec/service_spec.rb
DELETED
@@ -1,201 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Fog::Service do
|
4
|
-
class TestService < Fog::Service
|
5
|
-
requires :generic_api_key
|
6
|
-
recognizes :generic_user
|
7
|
-
|
8
|
-
class Real
|
9
|
-
attr_reader :options
|
10
|
-
|
11
|
-
def initialize(opts = {})
|
12
|
-
@options = opts
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
class Mock
|
17
|
-
attr_reader :options
|
18
|
-
|
19
|
-
def initialize(opts = {})
|
20
|
-
@options = opts
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
class ChildOfTestService < TestService
|
26
|
-
class Real; def initialize(*_args); end; end
|
27
|
-
class Mock; def initialize(*_args); end; end
|
28
|
-
end
|
29
|
-
|
30
|
-
it "properly passes headers" do
|
31
|
-
user_agent_hash = {
|
32
|
-
"User-Agent" => "Generic Fog Client"
|
33
|
-
}
|
34
|
-
params = {
|
35
|
-
generic_user: "bob",
|
36
|
-
generic_api_key: "1234",
|
37
|
-
connection_options: {
|
38
|
-
headers: user_agent_hash
|
39
|
-
}
|
40
|
-
}
|
41
|
-
service = TestService.new(params)
|
42
|
-
|
43
|
-
assert_equal user_agent_hash, service.options[:connection_options][:headers]
|
44
|
-
end
|
45
|
-
|
46
|
-
describe "when created with a Hash" do
|
47
|
-
it "raises for required argument that are missing" do
|
48
|
-
assert_raises(ArgumentError) { TestService.new({}) }
|
49
|
-
end
|
50
|
-
|
51
|
-
it "converts String keys to be Symbols" do
|
52
|
-
service = TestService.new "generic_api_key" => "abc"
|
53
|
-
assert_includes service.options.keys, :generic_api_key
|
54
|
-
end
|
55
|
-
|
56
|
-
it "removes keys with `nil` values" do
|
57
|
-
service = TestService.new generic_api_key: "abc", generic_user: nil
|
58
|
-
refute_includes service.options.keys, :generic_user
|
59
|
-
end
|
60
|
-
|
61
|
-
it "converts number String values with to_i" do
|
62
|
-
service = TestService.new generic_api_key: "3421"
|
63
|
-
assert_equal 3421, service.options[:generic_api_key]
|
64
|
-
end
|
65
|
-
|
66
|
-
it "converts 'true' String values to TrueClass" do
|
67
|
-
service = TestService.new generic_api_key: "true"
|
68
|
-
assert_equal true, service.options[:generic_api_key]
|
69
|
-
end
|
70
|
-
|
71
|
-
it "converts 'false' String values to FalseClass" do
|
72
|
-
service = TestService.new generic_api_key: "false"
|
73
|
-
assert_equal false, service.options[:generic_api_key]
|
74
|
-
end
|
75
|
-
|
76
|
-
it "warns for unrecognised options" do
|
77
|
-
bad_options = { generic_api_key: "abc", bad_option: "bad value" }
|
78
|
-
logger = Minitest::Mock.new
|
79
|
-
logger.expect :warning, nil, ["Unrecognized arguments: bad_option"]
|
80
|
-
Fog.stub_const :Logger, logger do
|
81
|
-
TestService.new(bad_options)
|
82
|
-
end
|
83
|
-
logger.verify
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
describe "when creating and mocking is disabled" do
|
88
|
-
it "returns the real service" do
|
89
|
-
Fog.stub :mocking?, false do
|
90
|
-
service = TestService.new(generic_api_key: "abc")
|
91
|
-
service.must_be_instance_of TestService::Real
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
it "TestService::Real has TestService::Collections mixed into the mocked service" do
|
96
|
-
Fog.stub :mocking?, false do
|
97
|
-
service = TestService.new(generic_api_key: "abc")
|
98
|
-
assert_includes(service.class.ancestors, TestService::Collections)
|
99
|
-
assert_includes(service.class.ancestors, Fog::Service::Collections)
|
100
|
-
refute_includes(service.class.ancestors, ChildOfTestService::Collections)
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
it "ChildOfTestService::Real has ChildOfTestService::Collections and TestService::Collections mixed in" do
|
105
|
-
Fog.stub :mocking?, true do
|
106
|
-
service = ChildOfTestService.new
|
107
|
-
assert_includes(service.class.ancestors, Fog::Service::Collections)
|
108
|
-
assert_includes(service.class.ancestors, TestService::Collections)
|
109
|
-
assert_includes(service.class.ancestors, ChildOfTestService::Collections)
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
describe "when creating and mocking is enabled" do
|
115
|
-
it "returns mocked service" do
|
116
|
-
Fog.stub :mocking?, true do
|
117
|
-
service = TestService.new(generic_api_key: "abc")
|
118
|
-
service.must_be_instance_of TestService::Mock
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
it "TestService::Mock has TestService::Collections mixed into the mocked service" do
|
123
|
-
Fog.stub :mocking?, true do
|
124
|
-
service = TestService.new(generic_api_key: "abc")
|
125
|
-
assert_includes(service.class.ancestors, Fog::Service::Collections)
|
126
|
-
assert_includes(service.class.ancestors, TestService::Collections)
|
127
|
-
refute_includes(service.class.ancestors, ChildOfTestService::Collections)
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
it "ChildOfTestService::Mock has ChildOfTestService::Collections and TestService::Collections mixed in" do
|
132
|
-
Fog.stub :mocking?, true do
|
133
|
-
service = ChildOfTestService.new
|
134
|
-
assert_includes(service.class.ancestors, Fog::Service::Collections)
|
135
|
-
assert_includes(service.class.ancestors, TestService::Collections)
|
136
|
-
assert_includes(service.class.ancestors, ChildOfTestService::Collections)
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
describe "when no credentials are provided" do
|
142
|
-
it "uses the global values" do
|
143
|
-
@global_credentials = {
|
144
|
-
generic_user: "fog",
|
145
|
-
generic_api_key: "fog"
|
146
|
-
}
|
147
|
-
|
148
|
-
Fog.stub :credentials, @global_credentials do
|
149
|
-
@service = TestService.new
|
150
|
-
assert_equal @service.options, @global_credentials
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
describe "when credentials are provided as settings" do
|
156
|
-
it "merges the global values into settings" do
|
157
|
-
@settings = {
|
158
|
-
generic_user: "fog"
|
159
|
-
}
|
160
|
-
@global_credentials = {
|
161
|
-
generic_user: "bob",
|
162
|
-
generic_api_key: "fog"
|
163
|
-
}
|
164
|
-
|
165
|
-
Fog.stub :credentials, @global_credentials do
|
166
|
-
@service = TestService.new(@settings)
|
167
|
-
assert_equal @service.options[:generic_user], "fog"
|
168
|
-
assert_equal @service.options[:generic_api_key], "fog"
|
169
|
-
end
|
170
|
-
end
|
171
|
-
end
|
172
|
-
|
173
|
-
describe "when config object can configure the service itself" do
|
174
|
-
it "ignores the global and its values" do
|
175
|
-
@config = Minitest::Mock.new
|
176
|
-
def @config.config_service?; true; end
|
177
|
-
def @config.nil?; false; end
|
178
|
-
def @config.==(other); object_id == other.object_id; end
|
179
|
-
|
180
|
-
unexpected_usage = lambda { raise "Accessing global!" }
|
181
|
-
Fog.stub :credentials, unexpected_usage do
|
182
|
-
@service = TestService.new(@config)
|
183
|
-
assert_equal @config, @service.options
|
184
|
-
end
|
185
|
-
end
|
186
|
-
end
|
187
|
-
|
188
|
-
describe "#setup_requirements" do
|
189
|
-
before :each do
|
190
|
-
@service = FakeService.new
|
191
|
-
end
|
192
|
-
|
193
|
-
it "should require collections" do
|
194
|
-
assert @service.respond_to?(:collection)
|
195
|
-
end
|
196
|
-
|
197
|
-
it "should mock" do
|
198
|
-
assert_includes @service.mocked_requests, :request
|
199
|
-
end
|
200
|
-
end
|
201
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
# Set home outside of real user
|
2
|
-
require "tmpdir"
|
3
|
-
ENV["HOME"] = Dir.mktmpdir("foghome")
|
4
|
-
|
5
|
-
require "minitest/autorun"
|
6
|
-
require "minitest/spec"
|
7
|
-
require "minitest/stub_const"
|
8
|
-
|
9
|
-
$LOAD_PATH.unshift "lib"
|
10
|
-
require "fog/core"
|
11
|
-
|
12
|
-
Dir["spec/fake_app/**/*.rb"].each do |file|
|
13
|
-
require File.join(File.dirname(__FILE__), "..", file)
|
14
|
-
end
|
data/spec/storage_spec.rb
DELETED
@@ -1,112 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
module Fog
|
4
|
-
module Storage
|
5
|
-
def self.require(*_args); end
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
describe "Fog::Storage" do
|
10
|
-
describe "#new" do
|
11
|
-
module Fog
|
12
|
-
module TheRightWay
|
13
|
-
class Storage
|
14
|
-
def initialize(_args); end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
module Fog
|
20
|
-
module TheRightWay
|
21
|
-
extend Provider
|
22
|
-
service(:storage, "Storage")
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
it "instantiates an instance of Fog::<Provider>::Storage from the :provider keyword arg" do
|
27
|
-
compute = Fog::Storage.new(provider: :therightway)
|
28
|
-
assert_instance_of(Fog::TheRightWay::Storage, compute)
|
29
|
-
end
|
30
|
-
|
31
|
-
module Fog
|
32
|
-
module Storage
|
33
|
-
class TheWrongWay
|
34
|
-
def initialize(_args); end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
module TheWrongWay
|
39
|
-
extend Provider
|
40
|
-
service(:storage, "Storage")
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
it "instantiates an instance of Fog::Storage::<Provider> from the :provider keyword arg" do
|
45
|
-
compute = Fog::Storage.new(provider: :thewrongway)
|
46
|
-
assert_instance_of(Fog::Storage::TheWrongWay, compute)
|
47
|
-
end
|
48
|
-
|
49
|
-
module Fog
|
50
|
-
module BothWays
|
51
|
-
class Storage
|
52
|
-
attr_reader :args
|
53
|
-
|
54
|
-
def initialize(args)
|
55
|
-
@args = args
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
module Fog
|
62
|
-
module Storage
|
63
|
-
class BothWays
|
64
|
-
def initialize(_args); end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
module Fog
|
70
|
-
module BothWays
|
71
|
-
extend Provider
|
72
|
-
service(:storage, "Storage")
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
describe "when both Fog::Storage::<Provider> and Fog::<Provider>::Storage exist" do
|
77
|
-
it "prefers Fog::Storage::<Provider>" do
|
78
|
-
compute = Fog::Storage.new(provider: :bothways)
|
79
|
-
assert_instance_of(Fog::BothWays::Storage, compute)
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
it "passes the supplied keyword args less :provider to Fog::Storage::<Provider>#new" do
|
84
|
-
compute = Fog::Storage.new(provider: :bothways, extra: :stuff)
|
85
|
-
assert_equal({ extra: :stuff }, compute.args)
|
86
|
-
end
|
87
|
-
|
88
|
-
it "raises ArgumentError when given a :provider where a Fog::Storage::Provider that does not exist" do
|
89
|
-
assert_raises(ArgumentError) do
|
90
|
-
Fog::Storage.new(provider: :wat)
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
describe ".get_body_size" do
|
96
|
-
it "doesn't alter the encoding of the string passed to it" do
|
97
|
-
body = "foo".encode("UTF-8")
|
98
|
-
Fog::Storage.get_body_size(body)
|
99
|
-
|
100
|
-
assert_equal("UTF-8", body.encoding.to_s)
|
101
|
-
end
|
102
|
-
|
103
|
-
it "respects frozen strings" do
|
104
|
-
if RUBY_VERSION >= "2.3.0"
|
105
|
-
body = "foo".freeze
|
106
|
-
Fog::Storage.get_body_size(body)
|
107
|
-
else
|
108
|
-
skip
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|