bandiera-client 3.0.3 → 3.0.4
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/.hound.yml +39 -0
- data/.travis.yml +1 -2
- data/bandiera-client.gemspec +1 -0
- data/lib/bandiera/client.rb +8 -2
- data/lib/bandiera/client/version.rb +1 -1
- data/spec/lib/bandiera/client_spec.rb +43 -95
- metadata +17 -3
- data/.hound.yml +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0231e248ad75e4dd5762406ce09fbb937853babf
|
4
|
+
data.tar.gz: cfacb3426cc40e772fc2e357f4ff870c99412f60
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e4dfec63215c440d81ebe4f1cbdbe5f7465cd36340b1fa27cfa72f3577f51fb04fc55ee6048a5b660637b8dcbc146f561df640fa177cf0bba3bbf9e94bb6f49
|
7
|
+
data.tar.gz: ec1efc0dd1c3cf895515c1481ed8bdcf6311db2b3034e093524043e9041e3776ef42e6e1c766ddafb2732a9341092eb414de4dd0ced9c8fdc75ec97890ed0165
|
data/.hound.yml
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
Metrics/LineLength:
|
2
|
+
Description: 'Limit lines to 120 characters.'
|
3
|
+
Max: 120
|
4
|
+
|
5
|
+
Style/Documentation:
|
6
|
+
Enabled: false
|
7
|
+
|
8
|
+
Style/SpaceBeforeFirstArg:
|
9
|
+
Enabled: false
|
10
|
+
|
11
|
+
Style/BracesAroundHashParameters:
|
12
|
+
Enabled: false
|
13
|
+
|
14
|
+
Style/IndentHash:
|
15
|
+
EnforcedStyle: consistent
|
16
|
+
|
17
|
+
Style/AlignHash:
|
18
|
+
EnforcedHashRocketStyle: table
|
19
|
+
EnforcedColonStyle: table
|
20
|
+
|
21
|
+
Style/AlignParameters:
|
22
|
+
EnforcedStyle: with_fixed_indentation
|
23
|
+
|
24
|
+
Style/StringLiterals:
|
25
|
+
EnforcedStyle: single_quotes
|
26
|
+
|
27
|
+
Style/CollectionMethods:
|
28
|
+
PreferredMethods:
|
29
|
+
collect: 'map'
|
30
|
+
collect!: 'map!'
|
31
|
+
inject: 'reduce'
|
32
|
+
detect: 'find'
|
33
|
+
find_all: 'select'
|
34
|
+
|
35
|
+
Style/DotPosition:
|
36
|
+
EnforcedStyle: leading
|
37
|
+
|
38
|
+
Style/DoubleNegation:
|
39
|
+
Enabled: false
|
data/.travis.yml
CHANGED
data/bandiera-client.gemspec
CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_development_dependency 'rspec'
|
24
24
|
spec.add_development_dependency 'webmock'
|
25
25
|
spec.add_development_dependency 'rack-test'
|
26
|
+
spec.add_development_dependency 'rack', '< 2.0.0' # NOTE for the time being, don't force us to use ruby 2.2.2 please.
|
26
27
|
spec.add_development_dependency 'rake'
|
27
28
|
spec.add_development_dependency 'pry'
|
28
29
|
|
data/lib/bandiera/client.rb
CHANGED
@@ -108,7 +108,7 @@ module Bandiera
|
|
108
108
|
end
|
109
109
|
|
110
110
|
EXCEPTIONS_TO_HANDLE = (
|
111
|
-
Errno.constants.map { |cla| Errno.const_get(cla) } + [RestClient::Exception, JSON::ParserError]
|
111
|
+
Errno.constants.map { |cla| Errno.const_get(cla) } + [RestClient::Exception, JSON::ParserError, SocketError]
|
112
112
|
).flatten
|
113
113
|
|
114
114
|
def get_and_handle_exceptions(path, params, http_opts, return_upon_error, error_msg_prefix, &block)
|
@@ -116,8 +116,14 @@ module Bandiera
|
|
116
116
|
logger.debug("#{error_msg_prefix} - #{res['warning']}") if res['warning']
|
117
117
|
block.call(res['response']) if block
|
118
118
|
res['response']
|
119
|
-
rescue *EXCEPTIONS_TO_HANDLE
|
119
|
+
rescue *EXCEPTIONS_TO_HANDLE => e
|
120
|
+
message = "Bandiera::Client - HANDLED EXCEPTION #{e.inspect} - CLASS #{e.class.name}"
|
121
|
+
logger.warn(message)
|
120
122
|
return_upon_error
|
123
|
+
rescue => e
|
124
|
+
message = "Bandiera::Client - UNHANDLED EXCEPTION #{e.inspect} - CLASS #{e.class.name}"
|
125
|
+
logger.error(message)
|
126
|
+
raise
|
121
127
|
end
|
122
128
|
|
123
129
|
def get(path, params, passed_http_opts)
|
@@ -6,6 +6,40 @@ describe Bandiera::Client do
|
|
6
6
|
let(:logger) { double.as_null_object }
|
7
7
|
subject { Bandiera::Client.new(api_uri, logger) }
|
8
8
|
|
9
|
+
shared_examples_for 'a robust request' do
|
10
|
+
context 'bandiera is down' do
|
11
|
+
it 'returns a default response' do
|
12
|
+
stub_request(:get, url).to_return(status: [0, ''])
|
13
|
+
|
14
|
+
expect(response).to eq expected_error_response
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'bandiera is having some problems' do
|
19
|
+
it 'returns a default response' do
|
20
|
+
stub_request(:get, url).to_return(status: 500, body: '')
|
21
|
+
|
22
|
+
expect(response).to eq expected_error_response
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'bandiera times out' do
|
27
|
+
it 'returns a default response' do
|
28
|
+
stub_request(:get, url).to_timeout
|
29
|
+
|
30
|
+
expect(response).to eq expected_error_response
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'bandiera cannot be contacted' do
|
35
|
+
it 'returns a default response' do
|
36
|
+
stub_request(:get, url).to_raise(::SocketError)
|
37
|
+
|
38
|
+
expect(response).to eq expected_error_response
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
9
43
|
context 'when a client name is provided' do
|
10
44
|
let(:group) { 'pubserv' }
|
11
45
|
let(:feature) { 'log-stats' }
|
@@ -40,11 +74,12 @@ describe Bandiera::Client do
|
|
40
74
|
let(:group) { 'pubserv' }
|
41
75
|
let(:feature) { 'log-stats' }
|
42
76
|
let(:url) { "#{api_uri}/v2/groups/#{group}/features/#{feature}" }
|
77
|
+
let(:response) { subject.get_feature(group, feature) }
|
78
|
+
let(:expected_error_response) { false }
|
43
79
|
|
44
80
|
context 'all is ok' do
|
45
81
|
it 'returns the bandiera response' do
|
46
82
|
stub = stub_api_request(url, 'response' => true)
|
47
|
-
response = subject.get_feature(group, feature)
|
48
83
|
|
49
84
|
expect(response).to be true
|
50
85
|
expect(stub).to have_been_requested
|
@@ -72,54 +107,26 @@ describe Bandiera::Client do
|
|
72
107
|
# 2 calls - one for the request, one for the warning
|
73
108
|
expect(logger).to receive(:debug).twice
|
74
109
|
|
75
|
-
response = subject.get_feature(group, feature)
|
76
|
-
|
77
110
|
expect(response).to be false
|
78
111
|
expect(stub).to have_been_requested
|
79
112
|
end
|
80
113
|
end
|
81
114
|
end
|
82
115
|
|
83
|
-
|
84
|
-
it 'returns a default response' do
|
85
|
-
stub_request(:get, url).to_return(status: [0, ''])
|
86
|
-
|
87
|
-
response = subject.get_feature(group, feature)
|
88
|
-
|
89
|
-
expect(response).to be false
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
context 'bandiera is having some problems' do
|
94
|
-
it 'returns a default response' do
|
95
|
-
stub_request(:get, url).to_return(status: 500, body: '')
|
96
|
-
|
97
|
-
response = subject.get_feature(group, feature)
|
98
|
-
|
99
|
-
expect(response).to be false
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
context 'bandiera times out' do
|
104
|
-
it 'returns a default response' do
|
105
|
-
stub_request(:get, url).to_timeout
|
106
|
-
|
107
|
-
response = subject.get_feature(group, feature)
|
116
|
+
it_behaves_like 'a robust request'
|
108
117
|
|
109
|
-
expect(response).to be false
|
110
|
-
end
|
111
|
-
end
|
112
118
|
end
|
113
119
|
|
114
120
|
describe '#get_features_for_group' do
|
115
121
|
let(:group) { 'pubserv' }
|
116
122
|
let(:url) { "#{api_uri}/v2/groups/#{group}/features" }
|
123
|
+
let(:response) { subject.get_features_for_group(group) }
|
124
|
+
let(:expected_error_response) { {} }
|
117
125
|
|
118
126
|
context 'all is ok' do
|
119
127
|
it 'returns the bandiera response' do
|
120
128
|
feature_hash = { 'show-stuff' => true, 'show-other-stuff' => false }
|
121
129
|
stub = stub_api_request(url, 'response' => feature_hash)
|
122
|
-
response = subject.get_features_for_group(group)
|
123
130
|
|
124
131
|
expect(response).to eq(feature_hash)
|
125
132
|
expect(stub).to have_been_requested
|
@@ -147,53 +154,24 @@ describe Bandiera::Client do
|
|
147
154
|
# 2 calls - one for the request, one for the warning
|
148
155
|
expect(logger).to receive(:debug).twice
|
149
156
|
|
150
|
-
response = subject.get_features_for_group(group)
|
151
|
-
|
152
157
|
expect(response).to be {}
|
153
158
|
expect(stub).to have_been_requested
|
154
159
|
end
|
155
160
|
end
|
156
161
|
end
|
157
162
|
|
158
|
-
|
159
|
-
it 'returns a default response' do
|
160
|
-
stub_request(:get, url).to_return(status: [0, ''])
|
161
|
-
|
162
|
-
response = subject.get_features_for_group(group)
|
163
|
-
|
164
|
-
expect(response).to be {}
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
context 'bandiera is having some problems' do
|
169
|
-
it 'returns a default response' do
|
170
|
-
stub_request(:get, url).to_return(status: 500, body: '')
|
171
|
-
|
172
|
-
response = subject.get_features_for_group(group)
|
173
|
-
|
174
|
-
expect(response).to be {}
|
175
|
-
end
|
176
|
-
end
|
177
|
-
|
178
|
-
context 'bandiera times out' do
|
179
|
-
it 'returns a default response' do
|
180
|
-
stub_request(:get, url).to_timeout
|
181
|
-
|
182
|
-
response = subject.get_features_for_group(group)
|
183
|
-
|
184
|
-
expect(response).to be {}
|
185
|
-
end
|
186
|
-
end
|
163
|
+
it_behaves_like 'a robust request'
|
187
164
|
end
|
188
165
|
|
189
166
|
describe '#get_all' do
|
190
167
|
let(:url) { "#{api_uri}/v2/all" }
|
168
|
+
let(:response) { subject.get_all }
|
169
|
+
let(:expected_error_response) { {} }
|
191
170
|
|
192
171
|
context 'all is ok' do
|
193
172
|
it 'returns the bandiera response' do
|
194
173
|
feature_hash = { 'pubserv' => { 'show-stuff' => true, 'show-other-stuff' => false } }
|
195
174
|
stub = stub_api_request(url, 'response' => feature_hash)
|
196
|
-
response = subject.get_all
|
197
175
|
|
198
176
|
expect(response).to eq(feature_hash)
|
199
177
|
expect(stub).to have_been_requested
|
@@ -221,43 +199,13 @@ describe Bandiera::Client do
|
|
221
199
|
# 2 calls - one for the request, one for the warning
|
222
200
|
expect(logger).to receive(:debug).twice
|
223
201
|
|
224
|
-
response = subject.get_all
|
225
|
-
|
226
202
|
expect(response).to be {}
|
227
203
|
expect(stub).to have_been_requested
|
228
204
|
end
|
229
205
|
end
|
230
206
|
end
|
231
207
|
|
232
|
-
|
233
|
-
it 'returns a default response' do
|
234
|
-
stub_request(:get, url).to_return(status: [0, ''])
|
235
|
-
|
236
|
-
response = subject.get_all
|
237
|
-
|
238
|
-
expect(response).to be {}
|
239
|
-
end
|
240
|
-
end
|
241
|
-
|
242
|
-
context 'bandiera is having some problems' do
|
243
|
-
it 'returns a default response' do
|
244
|
-
stub_request(:get, url).to_return(status: 200, body: '<html></html>')
|
245
|
-
|
246
|
-
response = subject.get_all
|
247
|
-
|
248
|
-
expect(response).to be {}
|
249
|
-
end
|
250
|
-
end
|
251
|
-
|
252
|
-
context 'bandiera times out' do
|
253
|
-
it 'returns a default response' do
|
254
|
-
stub_request(:get, url).to_timeout
|
255
|
-
|
256
|
-
response = subject.get_all
|
257
|
-
|
258
|
-
expect(response).to be {}
|
259
|
-
end
|
260
|
-
end
|
208
|
+
it_behaves_like 'a robust request'
|
261
209
|
end
|
262
210
|
|
263
211
|
private
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bandiera-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Springer Nature
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rack
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "<"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 2.0.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "<"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 2.0.0
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rake
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -168,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
182
|
version: '0'
|
169
183
|
requirements: []
|
170
184
|
rubyforge_project:
|
171
|
-
rubygems_version: 2.
|
185
|
+
rubygems_version: 2.4.3
|
172
186
|
signing_key:
|
173
187
|
specification_version: 4
|
174
188
|
summary: Simple feature flagging API client.
|
data/.hound.yml
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
.rubocop.yml
|