gini-api 0.9.5 → 0.9.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9045dfe6c898a87b0c826c25105220e4f9456c7a
4
- data.tar.gz: 6d602fd4cf03e9a79d479048477794dfcb8e8063
3
+ metadata.gz: 1830e16b7d2607dd85bee598ba303c2e25de8c24
4
+ data.tar.gz: 5ce81f559626bfc77e3aae333a5083ec86fcbaf0
5
5
  SHA512:
6
- metadata.gz: 7a10e7a373e2253090c35b205ab6e5f32758ca93a4e6dbe47f1e18a32f1bd15ca3c5306abe77c3383342ba9ff5a7847185deca49c4825aaabc243b9d0ee7bee0
7
- data.tar.gz: 731b1317a2b130db59aaa915c9bddd19b0c2f57521ac67b0c31fdef6c9b57fbf14c943fd09352794890805eb58ed4cf8cc9e1e75a3e8ac2b4698fa2952a73021
6
+ metadata.gz: 614d219b4965e33d0719df8e6404afca5b4454d5eda193bf43e20e322bc3535f1748602365f4d8893cdf8b1b81c6f9e2ce43fabffc28e0e99e9da21a93a0a970
7
+ data.tar.gz: 6109ca515471045161ab64a59ccef471dc43c65812fa5a38f1a5589c60924cf3366bc999b592841bfdd5ddf07aafa5d218253b2a7278abe78da2e2c80fd1e4cd
@@ -25,33 +25,27 @@ module Gini
25
25
  api.client_id,
26
26
  api.client_secret,
27
27
  site: api.oauth_site,
28
- authorize_url: '/authorize',
29
- token_url: '/token',
28
+ token_url: '/oauth/token',
30
29
  max_redirects: 0,
31
30
  raise_errors: true,
32
31
  )
33
32
 
34
- # Verify opts. Prefered authorization methis is auth_code. If no auth_code is present a login from username/password
35
- # is done.
36
- auth_code =
33
+ # Verify opts. Prefered authorization methis is auth_code. If no auth_code is present a login from
34
+ # "Resource Owner Password Credentials Grant" flow.
35
+ # @token is a Oauth2::AccessToken object. Accesstoken is @token.token
36
+ @token =
37
37
  if opts.key?(:auth_code) && !opts[:auth_code].empty?
38
- opts[:auth_code]
38
+ # Exchange code for a token
39
+ exchange_code_for_token(api, client, opts[:auth_code])
39
40
  else
40
- # Generate CSRF token to verify the response
41
- csrf_token = SecureRandom.hex
42
- location = login_with_credentials(
43
- api,
44
- client,
45
- csrf_token,
46
- opts[:username],
47
- opts[:password])
48
- extract_auth_code(location, csrf_token)
41
+ #
42
+ login_with_resource_owner_password_credentials(
43
+ client,
44
+ opts[:username],
45
+ opts[:password],
46
+ )
49
47
  end
50
48
 
51
- # Exchange code for a real token.
52
- # @token is a Oauth2::AccessToken object. Accesstoken is @token.token
53
- @token = exchange_code_for_token(api, client, auth_code)
54
-
55
49
  # Override OAuth2::AccessToken#refresh! to update self instead of returnign a new object
56
50
  # Inspired by https://github.com/intridea/oauth2/issues/116#issuecomment-8097675
57
51
  #
@@ -82,20 +76,22 @@ module Gini
82
76
  # Destroy token
83
77
  #
84
78
  def destroy
85
- @token.refresh_token && @token.refresh!
86
- response = token.delete("/accessToken/#{@token.token}")
87
- unless response.status == 204
88
- fail_with_oauth_error(
89
- "Failed to destroy token /accessToken/#{@token.token} "\
90
- "(code=#{response.status})",
91
- response
92
- )
93
- end
94
- rescue OAuth2::Error => e
95
- fail_with_oauth_error(
96
- "Failed to destroy token (code=#{e.response.status})",
97
- e.response
98
- )
79
+ return "Not implemented yet. Come back later!"
80
+
81
+ # @token.refresh_token && @token.refresh!
82
+ # response = token.delete("/accessToken/#{@token.token}")
83
+ # unless response.status == 204
84
+ # fail_with_oauth_error(
85
+ # "Failed to destroy token /accessToken/#{@token.token} "\
86
+ # "(code=#{response.status})",
87
+ # response
88
+ # )
89
+ # end
90
+ # rescue OAuth2::Error => e
91
+ # fail_with_oauth_error(
92
+ # "Failed to destroy token (code=#{e.response.status})",
93
+ # e.response
94
+ # )
99
95
  end
100
96
 
101
97
  private
@@ -112,85 +108,24 @@ module Gini
112
108
  )
113
109
  end
114
110
 
115
- # Extract auth_code from URI
111
+ # Login with resource owner password credentials
116
112
  #
117
- # @param [String] location Location URI containing the auth_code
118
- # @param [String] csrf_token CSRF token to verify request
119
- #
120
- # @return [String] Collected authorization code
121
- #
122
- def extract_auth_code(location, csrf_token)
123
- query_params = parse_location(location)
124
-
125
- unless query_params['state'] == csrf_token
126
- fail_with_oauth_error(
127
- "CSRF token mismatch detected (should=#{csrf_token}, "\
128
- "is=#{query_params['state']})"
129
- )
130
- end
131
-
132
- unless query_params.key?('code') && !query_params['code'].empty?
133
- fail_with_oauth_error(
134
- "Failed to extract code from location #{location}"
135
- )
136
- end
137
-
138
- query_params['code']
139
- end
140
-
141
- # Parse auth_code and state from URI
142
- #
143
- # @param [String] location Location URI with auth_code and state
144
- #
145
- # @return [Hash] Hash with auth_code and state
146
- #
147
- def parse_location(location)
148
- # Parse the location header from the response and return hash
149
- # {'code' => '123abc', 'state' => 'supersecret'}
150
- q = URI.parse(location).query
151
- Hash[*q.split(/\=|\&/)]
152
- rescue => e
153
- fail_with_oauth_error("Failed to parse location header: #{e.message}")
154
- end
155
-
156
- # Login with username/password
157
- #
158
- # @param [Gini::Api::Client] api API object
159
113
  # @param [OAuth2::Client] client OAuth2 client object
160
- # @param [String] csrf_token CSRF token to verify request
161
114
  # @param [String] username API username
162
115
  # @param [String] password API password
163
116
  #
164
- # @return [String] Location header
117
+ # @return [OAuth2::AccessToken] AccessToken object
165
118
  #
166
- def login_with_credentials(api, client, csrf_token, username, password)
167
- # Build authentication URI
168
- auth_uri = client.auth_code.authorize_url(
169
- redirect_uri: api.oauth_redirect,
170
- state: csrf_token
171
- )
172
-
173
- # Accquire auth code
174
- response = client.request(
175
- :post,
176
- auth_uri,
177
- body: { username: username, password: password }
178
- )
179
- unless response.status == 303
180
- fail_with_oauth_error(
181
- "API login failed (code=#{response.status})",
182
- response
183
- )
184
- end
185
- response.headers['location']
119
+ def login_with_resource_owner_password_credentials(client, username, password)
120
+ client.password.get_token(username, password)
186
121
  rescue OAuth2::Error => e
187
122
  fail_with_oauth_error(
188
- "Failed to acquire auth_code (code=#{e.response.status})",
123
+ "Failed to acquire token with resource owner credentials (code=#{e.response.body})",
189
124
  e.response
190
125
  )
191
126
  end
192
127
 
193
- # Exchange auth_code for a real token
128
+ # Exchange auth_code for a access token
194
129
  #
195
130
  # @param [Gini::Api::Client] api API object
196
131
  # @param [OAuth2::Client] client OAuth2 client object
@@ -1,5 +1,6 @@
1
1
  module Gini
2
2
  module Api
3
- VERSION = "0.9.5"
3
+ # Package version
4
+ VERSION = "0.9.6"
4
5
  end
5
6
  end
@@ -258,7 +258,7 @@ describe Gini::Api::Client do
258
258
  allow(Gini::Api::Document).to \
259
259
  receive(:new).with(api, 'LOC'
260
260
  ) { doc }
261
- api.token.stub(:token).and_return('abc-123')
261
+ allow(api.token).to receive(:token).and_return('abc-123')
262
262
  stub_request(
263
263
  :post,
264
264
  %r{/documents}
@@ -320,7 +320,7 @@ describe Gini::Api::Client do
320
320
  let(:status) { 203 }
321
321
 
322
322
  it do
323
- api.token.stub(:delete).and_return(response)
323
+ allow(api.token).to receive(:delete).and_return(response)
324
324
  expect { api.delete('abc-123') }.to \
325
325
  raise_error(Gini::Api::DocumentError, /Deletion of docId abc-123 failed/)
326
326
  end
@@ -332,8 +332,8 @@ describe Gini::Api::Client do
332
332
  let(:status) { 204 }
333
333
 
334
334
  it do
335
- api.token.stub(:delete).and_return(response)
336
- expect(api.delete('abc-123')).to be_true
335
+ allow(api.token).to receive(:delete).and_return(response)
336
+ expect(api.delete('abc-123').class).to be_truthy
337
337
  end
338
338
 
339
339
  end
@@ -366,7 +366,7 @@ describe Gini::Api::Client do
366
366
  end
367
367
 
368
368
  before do
369
- api.token.stub(:get).and_return(OAuth2::Response.new(response))
369
+ allow(api.token).to receive(:get).and_return(OAuth2::Response.new(response))
370
370
  end
371
371
 
372
372
  context 'with documents' do
@@ -428,7 +428,7 @@ describe Gini::Api::Client do
428
428
  describe '#search' do
429
429
 
430
430
  before do
431
- api.token.stub(:get).and_return(OAuth2::Response.new(response))
431
+ allow(api.token).to receive(:get).and_return(OAuth2::Response.new(response))
432
432
  end
433
433
 
434
434
  let(:status) { 200 }
@@ -7,7 +7,7 @@ describe Gini::Api::Document::Extractions do
7
7
  receive(:new) { oauth }
8
8
 
9
9
  api.login(auth_code: '1234567890')
10
- api.token.stub(:get).with(
10
+ allow(api.token).to receive(:get).with(
11
11
  location,
12
12
  {
13
13
  headers: {
@@ -7,7 +7,7 @@ describe Gini::Api::Document do
7
7
  double('Gini::Api::OAuth', token: 'TOKEN', destroy: nil)
8
8
  end
9
9
  api.login(auth_code: '1234567890')
10
- api.token.stub(:get).with(
10
+ allow(api.token).to receive(:get).with(
11
11
  location,
12
12
  { headers: { accept: header } }
13
13
  ).and_return(OAuth2::Response.new(response))
@@ -116,7 +116,7 @@ describe Gini::Api::Document do
116
116
  end
117
117
 
118
118
  it do
119
- expect(document.completed?).to be_false
119
+ expect(document.completed?).to be_falsey
120
120
  end
121
121
 
122
122
  end
@@ -134,7 +134,7 @@ describe Gini::Api::Document do
134
134
  end
135
135
 
136
136
  it do
137
- expect(document.completed?).to be_true
137
+ expect(document.completed?).to be_truthy
138
138
  end
139
139
 
140
140
  end
@@ -156,7 +156,7 @@ describe Gini::Api::Document do
156
156
  end
157
157
 
158
158
  it do
159
- expect(document.successful?).to be_true
159
+ expect(document.successful?).to be_truthy
160
160
  end
161
161
 
162
162
  end
@@ -174,7 +174,7 @@ describe Gini::Api::Document do
174
174
  end
175
175
 
176
176
  it do
177
- expect(document.successful?).to be_false
177
+ expect(document.successful?).to be_falsey
178
178
  end
179
179
 
180
180
  end
@@ -192,7 +192,7 @@ describe Gini::Api::Document do
192
192
  end
193
193
 
194
194
  it do
195
- api.token.stub(:get).with(
195
+ allow(api.token).to receive(:get).with(
196
196
  "#{location}/processed",
197
197
  { headers: { accept: 'application/octet-stream' } }
198
198
  ).and_return(OAuth2::Response.new(pd_response))
@@ -211,7 +211,7 @@ describe Gini::Api::Document do
211
211
  end
212
212
 
213
213
  it do
214
- api.token.stub(:get).with(
214
+ allow(api.token).to receive(:get).with(
215
215
  "#{location}/processed",
216
216
  { headers: { accept: 'application/octet-stream' } }
217
217
  ).and_return(OAuth2::Response.new(pd_response))
@@ -236,7 +236,7 @@ describe Gini::Api::Document do
236
236
  end
237
237
 
238
238
  it do
239
- api.token.stub(:get).with(
239
+ allow(api.token).to receive(:get).with(
240
240
  "#{location}/extractions",
241
241
  { headers: { accept: header } }
242
242
  ).and_return(OAuth2::Response.new(ex_response))
@@ -312,8 +312,8 @@ describe Gini::Api::Document do
312
312
  let(:fb_response) { double('Response', status: 204) }
313
313
 
314
314
  it do
315
- document.stub(:extractions) { double('Extractions').as_null_object }
316
- api.token.stub(:put).with(
315
+ allow(document).to receive(:extractions) { double('Extractions').as_null_object }
316
+ allow(api.token).to receive(:put).with(
317
317
  "#{location}/extractions/bic",
318
318
  {
319
319
  headers: { 'content-type' => header },
@@ -331,8 +331,8 @@ describe Gini::Api::Document do
331
331
  let(:fb_response) { double('Response', status: 204) }
332
332
 
333
333
  it 'on invalid label' do
334
- document.stub(:extractions) { double('Extractions', bic: nil) }
335
- api.token.stub(:put).with(
334
+ allow(document).to receive(:extractions) { double('Extractions', bic: nil) }
335
+ allow(api.token).to receive(:put).with(
336
336
  "#{location}/extractions/bic",
337
337
  {
338
338
  headers: { 'content-type' => header },
@@ -351,8 +351,8 @@ describe Gini::Api::Document do
351
351
  let(:fb_response) { double('Response', status: 404, body: {}, env: {}) }
352
352
 
353
353
  it 'on invalid http code' do
354
- document.stub(:extractions) { double('Extractions').as_null_object }
355
- api.token.stub(:put).with(
354
+ allow(document).to receive(:extractions) { double('Extractions').as_null_object }
355
+ allow(api.token).to receive(:put).with(
356
356
  "#{location}/extractions/bic",
357
357
  {
358
358
  headers: { 'content-type' => header },
@@ -24,7 +24,7 @@ describe Gini::Api::Error do
24
24
  end
25
25
 
26
26
  before do
27
- api.token.stub(:get).and_return(response)
27
+ allow(api.token).to receive(:get).and_return(response)
28
28
  end
29
29
 
30
30
  context 'without request obj' do
@@ -5,15 +5,14 @@ describe Gini::Api::OAuth do
5
5
  let(:user) { 'user@gini.net' }
6
6
  let(:pass) { 'secret' }
7
7
  let(:auth_code) { '1234567890' }
8
- let(:state) { '1234567890' }
9
8
  let(:code) { 'abcdefghij'}
10
9
  let(:redirect) { 'http://localhost' }
11
10
  let(:status) { 303 }
12
11
  let(:token_status) { 200 }
13
12
  let(:token_body) { 'client_id=cid&client_secret=sec&code=1234567890&grant_type=authorization_code&redirect_uri=http%3A%2F%2Flocalhost' }
14
- let(:header) { { 'location' => "https://api.gini.net?code=#{code}&state=#{state}" } }
13
+ let(:header) { { 'location' => "https://api.gini.net?code=#{code}" } }
15
14
  let(:oauth_site) { 'https://user.gini.net' }
16
- let(:authorize_uri) { "#{oauth_site}/authorize?client_id=cid&redirect_uri=#{redirect}&response_type=code&state=#{state}" }
15
+ let(:token_uri) { "#{oauth_site}/oauth/token" }
17
16
  let(:api) do
18
17
  double('API',
19
18
  client_id: 'cid',
@@ -28,21 +27,11 @@ describe Gini::Api::OAuth do
28
27
  context 'login with username/password' do
29
28
 
30
29
  before do
31
- allow(SecureRandom).to \
32
- receive(:hex) { state }
33
-
34
- stub_request(:post,
35
- authorize_uri
30
+ stub_request(
31
+ :post,
32
+ token_uri
36
33
  ).to_return(
37
34
  status: status,
38
- headers: header,
39
- body: {}
40
- )
41
-
42
- stub_request(:post,
43
- "#{oauth_site}/token"
44
- ).to_return(
45
- status: token_status,
46
35
  headers: {
47
36
  'content-type' => 'application/json'
48
37
  },
@@ -68,83 +57,9 @@ describe Gini::Api::OAuth do
68
57
  expect(oauth.token.token).to eql('123-456')
69
58
  end
70
59
 
71
- context 'with invalid credentials' do
72
-
73
- let(:status) { 500 }
74
-
75
- it do
76
- expect {
77
- Gini::Api::OAuth.new(
78
- api,
79
- username: user,
80
- password: pass
81
- ) }.to raise_error(Gini::Api::OAuthError, /Failed to acquire auth_code/)
82
- end
83
-
84
- end
85
-
86
- context 'with non-redirect status code' do
87
-
88
- let(:status) { 200 }
89
-
90
- it do
91
- expect {
92
- Gini::Api::OAuth.new(
93
- api,
94
- username: user,
95
- password: pass
96
- ) }.to raise_error(Gini::Api::OAuthError, /API login failed/)
97
- end
98
- end
99
-
100
- context 'with invalid location header' do
101
-
102
- let(:header) { { location: 'https://api.gini.net' } }
103
-
104
- it do
105
- expect {
106
- Gini::Api::OAuth.new(
107
- api,
108
- username: user,
109
- password: pass
110
- ) }.to raise_error(Gini::Api::OAuthError, /Failed to parse location header/)
111
- end
112
-
113
- end
114
-
115
- context 'with CSRF token mismatch' do
116
-
117
- let(:header) { { location: "https://rspec.gini.net?code=#{code}&state=hacked"} }
118
-
119
- it do
120
- expect {
121
- Gini::Api::OAuth.new(
122
- api,
123
- username: user,
124
- password: pass
125
- ) }.to raise_error(Gini::Api::OAuthError, /CSRF token mismatch detected/)
126
- end
127
-
128
- end
129
-
130
- context 'without code' do
131
-
132
- let(:header) { { location: "https://api.gini.net?state=#{state}"} }
133
-
134
- it do
135
- expect {
136
- Gini::Api::OAuth.new(
137
- api,
138
- username: user,
139
- password: pass
140
- ) }.to raise_error(Gini::Api::OAuthError, /Failed to extract code from location/)
141
- end
142
-
143
- end
144
-
145
60
  context 'with invalid client credentials' do
146
61
 
147
- let(:token_status) { 401 }
62
+ let(:status) { 401 }
148
63
 
149
64
  it do
150
65
  expect {
@@ -152,7 +67,7 @@ describe Gini::Api::OAuth do
152
67
  api,
153
68
  username: user,
154
69
  password: pass
155
- ) }.to raise_error(Gini::Api::OAuthError, /Failed to exchange auth_code/)
70
+ ) }.to raise_error(Gini::Api::OAuthError, /Failed to acquire token/)
156
71
  end
157
72
 
158
73
  end
@@ -162,8 +77,9 @@ describe Gini::Api::OAuth do
162
77
  context 'login with auth_code' do
163
78
 
164
79
  before do
165
- stub_request(:post,
166
- "#{oauth_site}/token"
80
+ stub_request(
81
+ :post,
82
+ token_uri
167
83
  ).with(
168
84
  body: 'client_id=cid&client_secret=sec&code=1234567890&grant_type=authorization_code&redirect_uri=http%3A%2F%2Flocalhost'
169
85
  ).to_return(
@@ -186,6 +102,20 @@ describe Gini::Api::OAuth do
186
102
  expect(oauth.token.token).to eql('123-456')
187
103
  end
188
104
 
105
+ context 'with invalid auth_code' do
106
+
107
+ let(:token_status) { 400 }
108
+
109
+ it do
110
+ expect {
111
+ Gini::Api::OAuth.new(
112
+ api,
113
+ auth_code: auth_code
114
+ ) }.to raise_error(Gini::Api::OAuthError, /Failed to exchange auth_code/)
115
+ end
116
+
117
+ end
118
+
189
119
  context 'overrides #refresh!' do
190
120
 
191
121
  it do
@@ -212,8 +142,9 @@ describe Gini::Api::OAuth do
212
142
  let(:refresh_token) { false }
213
143
 
214
144
  before do
215
- stub_request(:post,
216
- "#{oauth_site}/token"
145
+ stub_request(
146
+ :post,
147
+ token_uri
217
148
  ).with(
218
149
  body: 'client_id=cid&client_secret=sec&code=1234567890&grant_type=authorization_code&redirect_uri=http%3A%2F%2Flocalhost'
219
150
  ).to_return(
@@ -234,7 +165,7 @@ describe Gini::Api::OAuth do
234
165
  %r{/accessToken/123-456}
235
166
  ).to_return(status: status)
236
167
 
237
- oauth.token.stub(:refresh_token).and_return(refresh_token)
168
+ allow(oauth.token).to receive(:refresh_token).and_return(refresh_token)
238
169
  end
239
170
 
240
171
  subject(:oauth) { Gini::Api::OAuth.new(api, auth_code: auth_code) }
@@ -244,6 +175,7 @@ describe Gini::Api::OAuth do
244
175
  let(:refresh_token) { true }
245
176
 
246
177
  it 'does a refresh first' do
178
+ pending "not implemented yet"
247
179
  expect(oauth.token).to receive(:refresh_token)
248
180
  expect(oauth.token).to receive(:refresh!)
249
181
  expect(oauth.destroy).to be_nil
@@ -254,6 +186,7 @@ describe Gini::Api::OAuth do
254
186
  context 'without refresh token' do
255
187
 
256
188
  it 'destroys token directly' do
189
+ pending "not implemented yet"
257
190
  expect(oauth.token).to receive(:refresh_token)
258
191
  expect(oauth.token).not_to receive(:refresh!)
259
192
  expect(oauth.destroy).to be_nil
@@ -265,6 +198,7 @@ describe Gini::Api::OAuth do
265
198
  let(:status) { 404 }
266
199
 
267
200
  it do
201
+ pending "not implemented yet"
268
202
  expect{oauth.destroy}.to raise_error Gini::Api::OAuthError, /Failed to destroy token/
269
203
  end
270
204
  end
@@ -274,6 +208,7 @@ describe Gini::Api::OAuth do
274
208
  let(:status) { 200 }
275
209
 
276
210
  it do
211
+ pending "not implemented yet"
277
212
  expect{oauth.destroy}.to raise_error Gini::Api::OAuthError, /Failed to destroy token/
278
213
  end
279
214
  end
@@ -282,8 +217,9 @@ describe Gini::Api::OAuth do
282
217
  describe 'overridden AccessToken#refresh!' do
283
218
 
284
219
  before do
285
- stub_request(:post,
286
- "#{oauth_site}/token"
220
+ stub_request(
221
+ :post,
222
+ token_uri
287
223
  ).with(
288
224
  body: 'client_id=cid&client_secret=sec&code=1234567890&grant_type=authorization_code&redirect_uri=http%3A%2F%2Flocalhost'
289
225
  ).to_return(
@@ -308,7 +244,7 @@ describe Gini::Api::OAuth do
308
244
 
309
245
  stub_request(
310
246
  :post,
311
- "#{oauth_site}/token"
247
+ token_uri
312
248
  ).to_return(
313
249
  status: 200,
314
250
  headers: {
@@ -332,7 +268,7 @@ describe Gini::Api::OAuth do
332
268
 
333
269
  before do
334
270
  stub_request(:post,
335
- "#{oauth_site}/token"
271
+ token_uri
336
272
  ).with(
337
273
  body: 'client_id=cid&client_secret=sec&code=1234567890&grant_type=authorization_code&redirect_uri=http%3A%2F%2Flocalhost'
338
274
  ).to_return(
@@ -358,7 +294,7 @@ describe Gini::Api::OAuth do
358
294
  stub_request(:get, "https://user.gini.net/a")
359
295
  stub_request(
360
296
  :post,
361
- "#{oauth_site}/token"
297
+ token_uri
362
298
  ).to_return(
363
299
  status: 200,
364
300
  headers: {
@@ -385,7 +321,7 @@ describe Gini::Api::OAuth do
385
321
  stub_request(:get, "https://user.gini.net/a")
386
322
  stub_request(
387
323
  :post,
388
- "#{oauth_site}/token"
324
+ token_uri
389
325
  ).to_return(
390
326
  status: 200,
391
327
  headers: {
@@ -34,7 +34,7 @@ describe 'Gini::Api integration test' do
34
34
 
35
35
  it '#login sets token' do
36
36
  expect(@api.token.token).to match(/\w+-\w+/)
37
- expect(@api.token.expired?).to be_false
37
+ expect(@api.token.expired?).to be_falsey
38
38
  @api.logout
39
39
  end
40
40
 
@@ -76,7 +76,7 @@ describe 'Gini::Api integration test' do
76
76
  end
77
77
 
78
78
  it '#delete returns true' do
79
- expect(@api.delete(@doc.id)).to be_true
79
+ expect(@api.delete(@doc.id)).to be_truthy
80
80
  expect { @api.get(@doc.id) }.to raise_error(Gini::Api::RequestError)
81
81
  @api.logout
82
82
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gini-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.5
4
+ version: 0.9.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Kerwin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-02 00:00:00.000000000 Z
11
+ date: 2014-06-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oauth2