scalingo 3.3.0 → 3.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/workflows/dependabot.yml +17 -0
- data/.github/workflows/publish.yml +6 -3
- data/.github/workflows/ruby.yml +3 -3
- data/.rubocop.yml +9 -21
- data/CHANGELOG.md +10 -0
- data/README.md +1 -1
- data/lib/scalingo/api/client.rb +6 -15
- data/lib/scalingo/api/response.rb +3 -3
- data/lib/scalingo/auth/tokens.rb +2 -2
- data/lib/scalingo/auth.rb +1 -1
- data/lib/scalingo/billing.rb +1 -1
- data/lib/scalingo/client.rb +6 -6
- data/lib/scalingo/configuration.rb +3 -3
- data/lib/scalingo/core_client.rb +2 -3
- data/lib/scalingo/regional/addons.rb +1 -1
- data/lib/scalingo/regional.rb +1 -1
- data/lib/scalingo/regional_database/databases.rb +13 -0
- data/lib/scalingo/regional_database.rb +1 -1
- data/lib/scalingo/token_holder.rb +1 -1
- data/lib/scalingo/version.rb +1 -1
- data/samples/regional_database/backups/_meta.json +1 -1
- data/samples/regional_database/backups/archive-200.json +2 -2
- data/samples/regional_database/backups/archive-400.json +1 -1
- data/samples/regional_database/backups/create-201.json +1 -1
- data/samples/regional_database/backups/create-400.json +1 -1
- data/samples/regional_database/backups/for-200.json +1 -1
- data/samples/regional_database/backups/for-400.json +1 -1
- data/samples/regional_database/databases/_meta.json +1 -1
- data/samples/regional_database/databases/find-200.json +5 -3
- data/samples/regional_database/databases/find-400.json +1 -1
- data/samples/regional_database/databases/upgrade-202.json +39 -0
- data/samples/regional_database/databases/upgrade-400.json +24 -0
- data/scalingo.gemspec +4 -7
- metadata +13 -92
- data/spec/scalingo/api/client_spec.rb +0 -256
- data/spec/scalingo/api/endpoint_spec.rb +0 -45
- data/spec/scalingo/api/response_spec.rb +0 -301
- data/spec/scalingo/auth/keys_spec.rb +0 -58
- data/spec/scalingo/auth/scm_integrations_spec.rb +0 -58
- data/spec/scalingo/auth/tokens_spec.rb +0 -74
- data/spec/scalingo/auth/two_factor_auth_spec.rb +0 -69
- data/spec/scalingo/auth/user_spec.rb +0 -31
- data/spec/scalingo/auth_spec.rb +0 -15
- data/spec/scalingo/bearer_token_spec.rb +0 -72
- data/spec/scalingo/billing/profile_spec.rb +0 -55
- data/spec/scalingo/billing_spec.rb +0 -11
- data/spec/scalingo/client_spec.rb +0 -93
- data/spec/scalingo/configuration_spec.rb +0 -57
- data/spec/scalingo/core_client_spec.rb +0 -23
- data/spec/scalingo/regional/addons_spec.rb +0 -169
- data/spec/scalingo/regional/apps_spec.rb +0 -137
- data/spec/scalingo/regional/autoscalers_spec.rb +0 -84
- data/spec/scalingo/regional/collaborators_spec.rb +0 -69
- data/spec/scalingo/regional/containers_spec.rb +0 -67
- data/spec/scalingo/regional/deployments_spec.rb +0 -45
- data/spec/scalingo/regional/domains_spec.rb +0 -84
- data/spec/scalingo/regional/environment_spec.rb +0 -77
- data/spec/scalingo/regional/events_spec.rb +0 -65
- data/spec/scalingo/regional/logs_spec.rb +0 -39
- data/spec/scalingo/regional/metrics_spec.rb +0 -46
- data/spec/scalingo/regional/notifiers_spec.rb +0 -113
- data/spec/scalingo/regional/operations_spec.rb +0 -27
- data/spec/scalingo/regional/scm_repo_links_spec.rb +0 -48
- data/spec/scalingo/regional_database/backups_spec.rb +0 -58
- data/spec/scalingo/regional_database/databases_spec.rb +0 -23
- data/spec/scalingo/regional_database_spec.rb +0 -11
- data/spec/scalingo/regional_spec.rb +0 -14
- data/spec/scalingo/token_holder_spec.rb +0 -81
@@ -1,55 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
RSpec.describe Scalingo::Billing::Profile do
|
4
|
-
describe_method "show" do
|
5
|
-
context "existing" do
|
6
|
-
let(:stub_pattern) { "show-200" }
|
7
|
-
|
8
|
-
it_behaves_like "a singular object response"
|
9
|
-
end
|
10
|
-
|
11
|
-
context "not yet created" do
|
12
|
-
let(:stub_pattern) { "show-404" }
|
13
|
-
|
14
|
-
it_behaves_like "a not found response"
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe_method "create" do
|
19
|
-
context "success" do
|
20
|
-
let(:arguments) { meta[:create][:valid] }
|
21
|
-
let(:stub_pattern) { "create-201" }
|
22
|
-
|
23
|
-
it_behaves_like "a singular object response", 201
|
24
|
-
end
|
25
|
-
|
26
|
-
context "already existing" do
|
27
|
-
let(:stub_pattern) { "create-400" }
|
28
|
-
|
29
|
-
it_behaves_like "a client error"
|
30
|
-
end
|
31
|
-
|
32
|
-
context "unprocessable" do
|
33
|
-
let(:arguments) { meta[:create][:invalid] }
|
34
|
-
let(:stub_pattern) { "create-422" }
|
35
|
-
|
36
|
-
it_behaves_like "an unprocessable request"
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
describe_method "update" do
|
41
|
-
context "success" do
|
42
|
-
let(:arguments) { [meta[:id], meta[:update][:valid]] }
|
43
|
-
let(:stub_pattern) { "update-200" }
|
44
|
-
|
45
|
-
it_behaves_like "a singular object response"
|
46
|
-
end
|
47
|
-
|
48
|
-
context "unprocessable" do
|
49
|
-
let(:arguments) { [meta[:id], meta[:update][:invalid]] }
|
50
|
-
let(:stub_pattern) { "update-422" }
|
51
|
-
|
52
|
-
it_behaves_like "an unprocessable request"
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,93 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
RSpec.describe Scalingo::Client do
|
4
|
-
subject { described_class.new }
|
5
|
-
|
6
|
-
describe "token" do
|
7
|
-
it "wraps the token in a BearerToken" do
|
8
|
-
expect(subject.token).to eq nil
|
9
|
-
|
10
|
-
subject.token = "my-token"
|
11
|
-
expect(subject.token).to be_a(Scalingo::BearerToken)
|
12
|
-
expect(subject.token.value).to eq "my-token"
|
13
|
-
|
14
|
-
subject.token = Scalingo::BearerToken.new("other-token")
|
15
|
-
expect(subject.token).to be_a(Scalingo::BearerToken)
|
16
|
-
expect(subject.token.value).to eq "other-token"
|
17
|
-
end
|
18
|
-
|
19
|
-
it "can query the authentication status" do
|
20
|
-
expect(subject).not_to be_authenticated
|
21
|
-
|
22
|
-
subject.token = "my-token"
|
23
|
-
expect(subject).to be_authenticated
|
24
|
-
|
25
|
-
subject.token = Scalingo::BearerToken.new("other-token")
|
26
|
-
allow(subject.token).to receive(:expired?).and_return(false)
|
27
|
-
expect(subject).to be_authenticated
|
28
|
-
|
29
|
-
allow(subject.token).to receive(:expired?).and_return(true)
|
30
|
-
expect(subject).not_to be_authenticated
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
describe "authenticate_with" do
|
35
|
-
it "raises without arguments" do
|
36
|
-
expect { subject.authenticate_with }.to raise_error(ArgumentError)
|
37
|
-
end
|
38
|
-
|
39
|
-
it "raises with both more than one authentication type" do
|
40
|
-
expect {
|
41
|
-
subject.authenticate_with(access_token: :a, bearer_token: :b)
|
42
|
-
}.to raise_error(ArgumentError)
|
43
|
-
end
|
44
|
-
|
45
|
-
it "raises if expires_at is supplied for an access_token" do
|
46
|
-
expect {
|
47
|
-
subject.authenticate_with(access_token: :a, expires_at: :b)
|
48
|
-
}.to raise_error(ArgumentError)
|
49
|
-
end
|
50
|
-
|
51
|
-
context "with access token" do
|
52
|
-
it "is successful with valid token" do
|
53
|
-
fake_response = OpenStruct.new(
|
54
|
-
successful?: true,
|
55
|
-
data: {token: "response token"},
|
56
|
-
)
|
57
|
-
|
58
|
-
expect(subject.auth.tokens).to receive(:exchange).and_return(fake_response)
|
59
|
-
|
60
|
-
expect(subject.authenticate_with(access_token: "access token")).to be true
|
61
|
-
expect(subject.token.value).to eq "response token"
|
62
|
-
expect(subject.token.expires_at).to be_within(1.second).of(Time.current + Scalingo.config.exchanged_token_validity)
|
63
|
-
end
|
64
|
-
|
65
|
-
it "fails with invalid token" do
|
66
|
-
fake_response = OpenStruct.new(
|
67
|
-
successful?: false,
|
68
|
-
)
|
69
|
-
|
70
|
-
expect(subject.auth.tokens).to receive(:exchange).and_return(fake_response)
|
71
|
-
|
72
|
-
expect(subject.authenticate_with(access_token: "access token")).to be false
|
73
|
-
expect(subject.token).to be nil
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
context "with bearer token" do
|
78
|
-
it "only sets the bearer token according to the arguments" do
|
79
|
-
expect(subject.authenticate_with(bearer_token: "my token")).to be true
|
80
|
-
expect(subject.token.value).to eq "my token"
|
81
|
-
expect(subject.token.expires_at).to eq nil
|
82
|
-
|
83
|
-
expect(subject.authenticate_with(bearer_token: Scalingo::BearerToken.new("my token"))).to be true
|
84
|
-
expect(subject.token.value).to eq "my token"
|
85
|
-
expect(subject.token.expires_at).to eq nil
|
86
|
-
|
87
|
-
expect(subject.authenticate_with(bearer_token: "my token", expires_at: Time.now + 1.hour)).to be true
|
88
|
-
expect(subject.token.value).to eq "my token"
|
89
|
-
expect(subject.token.expires_at).not_to eq nil
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
RSpec.describe Scalingo::Configuration do
|
4
|
-
subject { described_class.default }
|
5
|
-
|
6
|
-
describe "inheritance" do
|
7
|
-
it "can inherit configuration from a parent" do
|
8
|
-
object = described_class.new({}, subject)
|
9
|
-
|
10
|
-
described_class::ATTRIBUTES.each do |attr|
|
11
|
-
expect(object.public_send(attr)).to eq subject.public_send(attr)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
it "can uses local configuration when supplied, the parent other wise" do
|
16
|
-
object = described_class.new({user_agent: "Agent"}, subject)
|
17
|
-
|
18
|
-
(described_class::ATTRIBUTES - [:user_agent]).each do |attr|
|
19
|
-
expect(object.public_send(attr)).to eq subject.public_send(attr)
|
20
|
-
end
|
21
|
-
|
22
|
-
expect(object.user_agent).to eq "Agent"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
describe "faraday adapter" do
|
27
|
-
let(:scalingo) { Scalingo::Client.new(config).tap { |s| s.authenticate_with(bearer_token: "some-token") } }
|
28
|
-
let(:client) { Scalingo::API::Client.new("http://example.test", scalingo: scalingo) }
|
29
|
-
|
30
|
-
context "when unspecified" do
|
31
|
-
let(:config) { {} }
|
32
|
-
|
33
|
-
it "uses the default one when unspecificied" do
|
34
|
-
expect(client.authenticated_connection.adapter).to eq Faraday::Adapter::NetHttp
|
35
|
-
expect(client.unauthenticated_connection.adapter).to eq Faraday::Adapter::NetHttp
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
context "when set to an unkown adapter" do
|
40
|
-
let(:config) { {faraday_adapter: :yo} }
|
41
|
-
|
42
|
-
it "uses the default one when unspecificied" do
|
43
|
-
expect { client.authenticated_connection.adapter }.to raise_error(Faraday::Error)
|
44
|
-
expect { client.unauthenticated_connection.adapter }.to raise_error(Faraday::Error)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
context "when set to a valid adapter" do
|
49
|
-
let(:config) { {faraday_adapter: :test} }
|
50
|
-
|
51
|
-
it "uses the default one when unspecificied" do
|
52
|
-
expect(client.authenticated_connection.adapter).to eq Faraday::Adapter::Test
|
53
|
-
expect(client.unauthenticated_connection.adapter).to eq Faraday::Adapter::Test
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
RSpec.describe Scalingo::CoreClient do
|
4
|
-
subject { described_class.new }
|
5
|
-
|
6
|
-
describe "#database_region" do
|
7
|
-
it "forwards call to the specified region" do
|
8
|
-
allow(subject).to receive("db_api_osc_secnum_fr1")
|
9
|
-
|
10
|
-
subject.database_region("db_api_osc_secnum_fr1")
|
11
|
-
|
12
|
-
expect(subject).to have_received("db_api_osc_secnum_fr1")
|
13
|
-
end
|
14
|
-
|
15
|
-
it "forwards call to default db_api region" do
|
16
|
-
allow(subject).to receive("db_api_#{subject.config.default_region}")
|
17
|
-
|
18
|
-
subject.database_region
|
19
|
-
|
20
|
-
expect(subject).to have_received("db_api_#{subject.config.default_region}")
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,169 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
RSpec.describe Scalingo::Regional::Addons do
|
4
|
-
describe_method "categories" do
|
5
|
-
context "guest" do
|
6
|
-
subject { guest_endpoint }
|
7
|
-
|
8
|
-
let(:expected_count) { 2 }
|
9
|
-
let(:stub_pattern) { "categories-guest" }
|
10
|
-
|
11
|
-
it_behaves_like "a collection response"
|
12
|
-
it_behaves_like "a non-paginated collection"
|
13
|
-
end
|
14
|
-
|
15
|
-
context "logged" do
|
16
|
-
let(:expected_count) { 2 }
|
17
|
-
let(:stub_pattern) { "categories-logged" }
|
18
|
-
|
19
|
-
it_behaves_like "a collection response"
|
20
|
-
it_behaves_like "a non-paginated collection"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
describe_method "providers" do
|
25
|
-
context "guest" do
|
26
|
-
subject { guest_endpoint }
|
27
|
-
|
28
|
-
let(:expected_count) { 9 }
|
29
|
-
let(:stub_pattern) { "providers-guest" }
|
30
|
-
|
31
|
-
it_behaves_like "a collection response"
|
32
|
-
it_behaves_like "a non-paginated collection"
|
33
|
-
end
|
34
|
-
|
35
|
-
context "logged" do
|
36
|
-
let(:expected_count) { 11 }
|
37
|
-
let(:stub_pattern) { "providers-logged" }
|
38
|
-
|
39
|
-
it_behaves_like "a collection response"
|
40
|
-
it_behaves_like "a non-paginated collection"
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
describe_method "provision" do
|
45
|
-
context "success" do
|
46
|
-
let(:arguments) { [meta[:app_id], meta[:provision][:valid]] }
|
47
|
-
let(:stub_pattern) { "provision-201" }
|
48
|
-
|
49
|
-
it_behaves_like "a singular object response", 201
|
50
|
-
end
|
51
|
-
|
52
|
-
context "failure" do
|
53
|
-
let(:arguments) { [meta[:app_id], meta[:provision][:invalid]] }
|
54
|
-
let(:stub_pattern) { "provision-400" }
|
55
|
-
|
56
|
-
it_behaves_like "a client error"
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
describe_method "for" do
|
61
|
-
context "success" do
|
62
|
-
let(:arguments) { meta[:app_id] }
|
63
|
-
let(:stub_pattern) { "for-200" }
|
64
|
-
|
65
|
-
it_behaves_like "a collection response"
|
66
|
-
it_behaves_like "a non-paginated collection"
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
describe_method "find" do
|
71
|
-
context "success" do
|
72
|
-
let(:arguments) { [meta[:app_id], meta[:id]] }
|
73
|
-
let(:stub_pattern) { "find-200" }
|
74
|
-
|
75
|
-
it_behaves_like "a singular object response"
|
76
|
-
end
|
77
|
-
|
78
|
-
context "not found" do
|
79
|
-
let(:arguments) { [meta[:app_id], meta[:not_found_id]] }
|
80
|
-
let(:stub_pattern) { "find-404" }
|
81
|
-
|
82
|
-
it_behaves_like "a not found response"
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
describe_method "sso" do
|
87
|
-
context "success" do
|
88
|
-
let(:arguments) { [meta[:app_id], meta[:id]] }
|
89
|
-
let(:stub_pattern) { "sso-200" }
|
90
|
-
|
91
|
-
it_behaves_like "a singular object response"
|
92
|
-
end
|
93
|
-
|
94
|
-
context "not found" do
|
95
|
-
let(:arguments) { [meta[:app_id], meta[:not_found_id]] }
|
96
|
-
let(:stub_pattern) { "sso-404" }
|
97
|
-
|
98
|
-
it_behaves_like "a not found response"
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
describe_method "token" do
|
103
|
-
context "success" do
|
104
|
-
let(:arguments) { [meta[:app_id], meta[:id]] }
|
105
|
-
let(:stub_pattern) { "token-200" }
|
106
|
-
|
107
|
-
it_behaves_like "a singular object response"
|
108
|
-
end
|
109
|
-
|
110
|
-
context "not found" do
|
111
|
-
let(:arguments) { [meta[:app_id], meta[:not_found_id]] }
|
112
|
-
let(:stub_pattern) { "token-404" }
|
113
|
-
|
114
|
-
it_behaves_like "a not found response"
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
describe_method "authenticate!" do
|
119
|
-
context "success" do
|
120
|
-
let(:arguments) { [meta[:app_id], meta[:id]] }
|
121
|
-
let(:stub_pattern) { "token-200" }
|
122
|
-
|
123
|
-
it_behaves_like "a singular object response"
|
124
|
-
it "authenticates" do
|
125
|
-
response
|
126
|
-
expect(scalingo.authenticated_for_database?(meta[:id])).to be true
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
context "not found" do
|
131
|
-
let(:arguments) { [meta[:app_id], meta[:not_found_id]] }
|
132
|
-
let(:stub_pattern) { "token-404" }
|
133
|
-
|
134
|
-
it_behaves_like "a not found response"
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
describe_method "update" do
|
139
|
-
context "success" do
|
140
|
-
let(:arguments) { [meta[:app_id], meta[:id], meta[:update][:valid]] }
|
141
|
-
let(:stub_pattern) { "update-200" }
|
142
|
-
|
143
|
-
it_behaves_like "a singular object response"
|
144
|
-
end
|
145
|
-
|
146
|
-
context "failure" do
|
147
|
-
let(:arguments) { [meta[:app_id], meta[:id], meta[:update][:invalid]] }
|
148
|
-
let(:stub_pattern) { "update-404" }
|
149
|
-
|
150
|
-
it_behaves_like "a not found response"
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|
154
|
-
describe_method "destroy" do
|
155
|
-
context "success" do
|
156
|
-
let(:arguments) { [meta[:app_id], meta[:id]] }
|
157
|
-
let(:stub_pattern) { "destroy-204" }
|
158
|
-
|
159
|
-
it_behaves_like "an empty response"
|
160
|
-
end
|
161
|
-
|
162
|
-
context "not found" do
|
163
|
-
let(:arguments) { [meta[:app_id], meta[:not_found_id]] }
|
164
|
-
let(:stub_pattern) { "destroy-404" }
|
165
|
-
|
166
|
-
it_behaves_like "a not found response"
|
167
|
-
end
|
168
|
-
end
|
169
|
-
end
|
@@ -1,137 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
RSpec.describe Scalingo::Regional::Apps do
|
4
|
-
describe_method "all" do
|
5
|
-
let(:expected_count) { 2 }
|
6
|
-
let(:stub_pattern) { "all" }
|
7
|
-
|
8
|
-
it_behaves_like "a collection response"
|
9
|
-
it_behaves_like "a non-paginated collection"
|
10
|
-
end
|
11
|
-
|
12
|
-
describe_method "create" do
|
13
|
-
context "success" do
|
14
|
-
let(:arguments) { meta[:create][:valid] }
|
15
|
-
let(:stub_pattern) { "create-201" }
|
16
|
-
|
17
|
-
it_behaves_like "a singular object response", 201
|
18
|
-
end
|
19
|
-
|
20
|
-
context "failure" do
|
21
|
-
let(:arguments) { meta[:create][:invalid] }
|
22
|
-
let(:stub_pattern) { "create-422" }
|
23
|
-
|
24
|
-
it_behaves_like "an unprocessable request"
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe_method "find" do
|
29
|
-
context "success" do
|
30
|
-
let(:arguments) { meta[:id] }
|
31
|
-
let(:stub_pattern) { "find-200" }
|
32
|
-
|
33
|
-
it_behaves_like "a singular object response"
|
34
|
-
end
|
35
|
-
|
36
|
-
context "not found" do
|
37
|
-
let(:arguments) { meta[:not_found_id] }
|
38
|
-
let(:stub_pattern) { "find-404" }
|
39
|
-
|
40
|
-
it_behaves_like "a not found response"
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
describe_method "update" do
|
45
|
-
context "success" do
|
46
|
-
let(:arguments) { [meta[:id], meta[:update][:valid]] }
|
47
|
-
let(:stub_pattern) { "update-200" }
|
48
|
-
|
49
|
-
it_behaves_like "a singular object response"
|
50
|
-
end
|
51
|
-
|
52
|
-
context "invalid stack" do
|
53
|
-
let(:arguments) { [meta[:id], meta[:update][:invalid]] }
|
54
|
-
let(:stub_pattern) { "update-stack-404" }
|
55
|
-
|
56
|
-
it_behaves_like "a not found response"
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
describe_method "logs_url" do
|
61
|
-
context "success" do
|
62
|
-
let(:arguments) { meta[:id] }
|
63
|
-
let(:stub_pattern) { "logs_url" }
|
64
|
-
|
65
|
-
it_behaves_like "a singular object response"
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
describe_method "destroy" do
|
70
|
-
context "success" do
|
71
|
-
let(:arguments) { [meta[:id], meta[:destroy][:valid]] }
|
72
|
-
let(:stub_pattern) { "destroy-204" }
|
73
|
-
|
74
|
-
it_behaves_like "an empty response"
|
75
|
-
end
|
76
|
-
|
77
|
-
context "not found" do
|
78
|
-
let(:arguments) { [meta[:not_found_id], meta[:destroy][:valid]] }
|
79
|
-
let(:stub_pattern) { "destroy-404" }
|
80
|
-
|
81
|
-
it_behaves_like "a not found response"
|
82
|
-
end
|
83
|
-
|
84
|
-
context "unprocessable" do
|
85
|
-
let(:arguments) { [meta[:id], meta[:destroy][:invalid]] }
|
86
|
-
let(:stub_pattern) { "destroy-422" }
|
87
|
-
|
88
|
-
it_behaves_like "an unprocessable request"
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
describe_method "rename" do
|
93
|
-
context "success" do
|
94
|
-
let(:arguments) { [meta[:id], meta[:rename][:valid]] }
|
95
|
-
let(:stub_pattern) { "rename-200" }
|
96
|
-
|
97
|
-
it_behaves_like "a singular object response"
|
98
|
-
end
|
99
|
-
|
100
|
-
context "not found" do
|
101
|
-
let(:arguments) { [meta[:not_found_id], meta[:rename][:valid]] }
|
102
|
-
let(:stub_pattern) { "rename-404" }
|
103
|
-
|
104
|
-
it_behaves_like "a not found response"
|
105
|
-
end
|
106
|
-
|
107
|
-
context "unprocessable" do
|
108
|
-
let(:arguments) { [meta[:id], meta[:rename][:invalid]] }
|
109
|
-
let(:stub_pattern) { "rename-422" }
|
110
|
-
|
111
|
-
it_behaves_like "an unprocessable request"
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
describe_method "transfer" do
|
116
|
-
context "success" do
|
117
|
-
let(:arguments) { [meta[:id], meta[:transfer][:valid]] }
|
118
|
-
let(:stub_pattern) { "transfer-200" }
|
119
|
-
|
120
|
-
it_behaves_like "a singular object response"
|
121
|
-
end
|
122
|
-
|
123
|
-
context "not found" do
|
124
|
-
let(:arguments) { [meta[:not_found_id], meta[:transfer][:valid]] }
|
125
|
-
let(:stub_pattern) { "transfer-404" }
|
126
|
-
|
127
|
-
it_behaves_like "a not found response"
|
128
|
-
end
|
129
|
-
|
130
|
-
context "unprocessable" do
|
131
|
-
let(:arguments) { [meta[:id], meta[:transfer][:invalid]] }
|
132
|
-
let(:stub_pattern) { "transfer-422" }
|
133
|
-
|
134
|
-
it_behaves_like "an unprocessable request"
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|
@@ -1,84 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
RSpec.describe Scalingo::Regional::Autoscalers do
|
4
|
-
describe_method "create" do
|
5
|
-
context "success" do
|
6
|
-
let(:arguments) { [meta[:app_id], meta[:create][:valid]] }
|
7
|
-
let(:stub_pattern) { "create-201" }
|
8
|
-
|
9
|
-
it_behaves_like "a singular object response", 201
|
10
|
-
end
|
11
|
-
|
12
|
-
context "failure" do
|
13
|
-
let(:arguments) { [meta[:app_id], meta[:create][:invalid]] }
|
14
|
-
let(:stub_pattern) { "create-500" }
|
15
|
-
|
16
|
-
it_behaves_like "a server error"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
describe_method "for" do
|
21
|
-
context "success" do
|
22
|
-
let(:arguments) { meta[:app_id] }
|
23
|
-
let(:stub_pattern) { "for-200" }
|
24
|
-
|
25
|
-
it_behaves_like "a collection response"
|
26
|
-
it_behaves_like "a non-paginated collection"
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
describe_method "find" do
|
31
|
-
context "success" do
|
32
|
-
let(:arguments) { [meta[:app_id], meta[:id]] }
|
33
|
-
let(:stub_pattern) { "find-200" }
|
34
|
-
|
35
|
-
it_behaves_like "a singular object response"
|
36
|
-
end
|
37
|
-
|
38
|
-
context "not found" do
|
39
|
-
let(:arguments) { [meta[:app_id], meta[:not_found_id]] }
|
40
|
-
let(:stub_pattern) { "find-404" }
|
41
|
-
|
42
|
-
it_behaves_like "a not found response"
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
describe_method "update" do
|
47
|
-
context "success" do
|
48
|
-
let(:arguments) { [meta[:app_id], meta[:id], meta[:update][:valid]] }
|
49
|
-
let(:stub_pattern) { "update-200" }
|
50
|
-
|
51
|
-
it_behaves_like "a singular object response"
|
52
|
-
end
|
53
|
-
|
54
|
-
context "failure" do
|
55
|
-
let(:arguments) { [meta[:app_id], meta[:id], meta[:update][:invalid]] }
|
56
|
-
let(:stub_pattern) { "update-500" }
|
57
|
-
|
58
|
-
it_behaves_like "a server error"
|
59
|
-
end
|
60
|
-
|
61
|
-
context "not found" do
|
62
|
-
let(:arguments) { [meta[:app_id], meta[:not_found_id], meta[:update][:valid]] }
|
63
|
-
let(:stub_pattern) { "update-404" }
|
64
|
-
|
65
|
-
it_behaves_like "a not found response"
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
describe_method "destroy" do
|
70
|
-
context "success" do
|
71
|
-
let(:arguments) { [meta[:app_id], meta[:id]] }
|
72
|
-
let(:stub_pattern) { "destroy-204" }
|
73
|
-
|
74
|
-
it_behaves_like "an empty response"
|
75
|
-
end
|
76
|
-
|
77
|
-
context "not found" do
|
78
|
-
let(:arguments) { [meta[:app_id], meta[:not_found_id]] }
|
79
|
-
let(:stub_pattern) { "destroy-404" }
|
80
|
-
|
81
|
-
it_behaves_like "a not found response"
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
@@ -1,69 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
RSpec.describe Scalingo::Regional::Collaborators do
|
4
|
-
describe_method "for" do
|
5
|
-
context "success" do
|
6
|
-
let(:arguments) { meta[:app_id] }
|
7
|
-
let(:stub_pattern) { "for-200" }
|
8
|
-
|
9
|
-
it_behaves_like "a collection response"
|
10
|
-
it_behaves_like "a non-paginated collection"
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
describe_method "invite" do
|
15
|
-
context "success" do
|
16
|
-
let(:arguments) { [meta[:app_id], meta[:invite][:valid]] }
|
17
|
-
let(:stub_pattern) { "invite-201" }
|
18
|
-
|
19
|
-
it_behaves_like "a singular object response", 201
|
20
|
-
end
|
21
|
-
|
22
|
-
context "failure" do
|
23
|
-
let(:arguments) { [meta[:app_id], meta[:invite][:invalid]] }
|
24
|
-
let(:stub_pattern) { "invite-422" }
|
25
|
-
|
26
|
-
it_behaves_like "an unprocessable request"
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
describe_method "accept" do
|
31
|
-
context "success" do
|
32
|
-
let(:arguments) { meta[:accept][:valid] }
|
33
|
-
let(:stub_pattern) { "accept-200" }
|
34
|
-
let(:expected_keys) { %i[app] }
|
35
|
-
|
36
|
-
it_behaves_like "a singular object response"
|
37
|
-
end
|
38
|
-
|
39
|
-
context "already collaborating" do
|
40
|
-
let(:arguments) { meta[:accept][:valid] }
|
41
|
-
let(:stub_pattern) { "accept-400" }
|
42
|
-
|
43
|
-
it_behaves_like "a client error"
|
44
|
-
end
|
45
|
-
|
46
|
-
context "not found" do
|
47
|
-
let(:arguments) { meta[:accept][:invalid] }
|
48
|
-
let(:stub_pattern) { "accept-404" }
|
49
|
-
|
50
|
-
it_behaves_like "a not found response"
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe_method "destroy" do
|
55
|
-
context "success" do
|
56
|
-
let(:arguments) { [meta[:app_id], meta[:id]] }
|
57
|
-
let(:stub_pattern) { "destroy-204" }
|
58
|
-
|
59
|
-
it_behaves_like "an empty response"
|
60
|
-
end
|
61
|
-
|
62
|
-
context "not found" do
|
63
|
-
let(:arguments) { [meta[:app_id], meta[:not_found_id]] }
|
64
|
-
let(:stub_pattern) { "destroy-404" }
|
65
|
-
|
66
|
-
it_behaves_like "a not found response"
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|