google-api-client 0.4.4 → 0.4.5
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +8 -0
- data/Gemfile +9 -7
- data/Gemfile.lock +44 -25
- data/Rakefile +1 -10
- data/bin/google-api +4 -4
- data/lib/google/api_client.rb +27 -30
- data/lib/google/api_client/discovery/media.rb +5 -5
- data/lib/google/api_client/discovery/method.rb +11 -6
- data/lib/google/api_client/reference.rb +61 -31
- data/lib/google/api_client/result.rb +22 -0
- data/lib/google/api_client/version.rb +1 -1
- data/spec/google/api_client/batch_spec.rb +17 -13
- data/spec/google/api_client/discovery_spec.rb +156 -148
- data/spec/google/api_client/media_spec.rb +19 -12
- data/spec/google/api_client/result_spec.rb +44 -9
- data/spec/google/api_client/service_account_spec.rb +6 -6
- data/spec/google/api_client_spec.rb +25 -27
- data/spec/spec_helper.rb +6 -4
- data/tasks/gem.rake +8 -11
- data/tasks/spec.rake +22 -49
- metadata +168 -127
- data/spec/spec.opts +0 -2
@@ -53,6 +53,28 @@ module Google
|
|
53
53
|
content_type[/^([^;]*);?.*$/, 1].strip.downcase
|
54
54
|
end
|
55
55
|
|
56
|
+
def error?
|
57
|
+
return self.response.status >= 400
|
58
|
+
end
|
59
|
+
|
60
|
+
def success?
|
61
|
+
return !self.error?
|
62
|
+
end
|
63
|
+
|
64
|
+
def error_message
|
65
|
+
if self.data?
|
66
|
+
if self.data.respond_to?(:error) &&
|
67
|
+
self.data.error.respond_to?(:message)
|
68
|
+
# You're going to get a terrible error message if the response isn't
|
69
|
+
# parsed successfully as an error.
|
70
|
+
return self.data.error.message
|
71
|
+
elsif self.data['error'] && self.data['error']['message']
|
72
|
+
return self.data['error']['message']
|
73
|
+
end
|
74
|
+
end
|
75
|
+
return self.body
|
76
|
+
end
|
77
|
+
|
56
78
|
def data?
|
57
79
|
self.media_type == 'application/json'
|
58
80
|
end
|
@@ -18,22 +18,26 @@ require 'google/api_client'
|
|
18
18
|
require 'google/api_client/version'
|
19
19
|
|
20
20
|
describe Google::APIClient::BatchRequest do
|
21
|
-
|
22
|
-
|
21
|
+
CLIENT ||= Google::APIClient.new
|
22
|
+
|
23
|
+
after do
|
24
|
+
# Reset client to not-quite-pristine state
|
25
|
+
CLIENT.key = nil
|
26
|
+
CLIENT.user_ip = nil
|
23
27
|
end
|
24
28
|
|
25
29
|
it 'should raise an error if making an empty batch request' do
|
26
30
|
batch = Google::APIClient::BatchRequest.new
|
27
31
|
|
28
32
|
(lambda do
|
29
|
-
|
33
|
+
CLIENT.execute(batch)
|
30
34
|
end).should raise_error(Google::APIClient::BatchError)
|
31
35
|
end
|
32
36
|
|
33
37
|
describe 'with the discovery API' do
|
34
38
|
before do
|
35
|
-
|
36
|
-
@discovery =
|
39
|
+
CLIENT.authorization = nil
|
40
|
+
@discovery = CLIENT.discovered_api('discovery', 'v1')
|
37
41
|
end
|
38
42
|
|
39
43
|
describe 'with two valid requests' do
|
@@ -69,7 +73,7 @@ describe Google::APIClient::BatchRequest do
|
|
69
73
|
batch.add(@call1, ids[0])
|
70
74
|
batch.add(@call2, ids[1])
|
71
75
|
|
72
|
-
|
76
|
+
CLIENT.execute(batch)
|
73
77
|
block_called.should == 2
|
74
78
|
end
|
75
79
|
|
@@ -86,7 +90,7 @@ describe Google::APIClient::BatchRequest do
|
|
86
90
|
result.status.should == 200
|
87
91
|
end
|
88
92
|
|
89
|
-
|
93
|
+
CLIENT.execute(batch)
|
90
94
|
call1_returned.should == true
|
91
95
|
call2_returned.should == true
|
92
96
|
end
|
@@ -139,7 +143,7 @@ describe Google::APIClient::BatchRequest do
|
|
139
143
|
batch.add(@call1, ids[0])
|
140
144
|
batch.add(@call2, ids[1])
|
141
145
|
|
142
|
-
|
146
|
+
CLIENT.execute(batch)
|
143
147
|
block_called.should == 2
|
144
148
|
end
|
145
149
|
|
@@ -157,7 +161,7 @@ describe Google::APIClient::BatchRequest do
|
|
157
161
|
result.status.should < 500
|
158
162
|
end
|
159
163
|
|
160
|
-
|
164
|
+
CLIENT.execute(batch)
|
161
165
|
call1_returned.should == true
|
162
166
|
call2_returned.should == true
|
163
167
|
end
|
@@ -166,8 +170,8 @@ describe Google::APIClient::BatchRequest do
|
|
166
170
|
|
167
171
|
describe 'with the calendar API' do
|
168
172
|
before do
|
169
|
-
|
170
|
-
@calendar =
|
173
|
+
CLIENT.authorization = nil
|
174
|
+
@calendar = CLIENT.discovered_api('calendar', 'v3')
|
171
175
|
end
|
172
176
|
|
173
177
|
describe 'with two valid requests' do
|
@@ -207,14 +211,14 @@ describe Google::APIClient::BatchRequest do
|
|
207
211
|
@call1 = {
|
208
212
|
:api_method => @calendar.events.insert,
|
209
213
|
:parameters => {'calendarId' => 'myemail@mydomain.tld'},
|
210
|
-
:body =>
|
214
|
+
:body => MultiJson.dump(event1),
|
211
215
|
:headers => {'Content-Type' => 'application/json'}
|
212
216
|
}
|
213
217
|
|
214
218
|
@call2 = {
|
215
219
|
:api_method => @calendar.events.insert,
|
216
220
|
:parameters => {'calendarId' => 'myemail@mydomain.tld'},
|
217
|
-
:body =>
|
221
|
+
:body => MultiJson.dump(event2),
|
218
222
|
:headers => {'Content-Type' => 'application/json'}
|
219
223
|
}
|
220
224
|
end
|
@@ -17,20 +17,24 @@
|
|
17
17
|
|
18
18
|
require 'spec_helper'
|
19
19
|
|
20
|
-
gem 'faraday', '~> 0.
|
20
|
+
gem 'faraday', '~> 0.8.1'
|
21
21
|
require 'faraday'
|
22
22
|
require 'faraday/utils'
|
23
23
|
require 'multi_json'
|
24
24
|
|
25
|
-
gem 'signet', '~> 0.
|
25
|
+
gem 'signet', '~> 0.4.0'
|
26
26
|
require 'signet/oauth_1/client'
|
27
27
|
|
28
28
|
require 'google/api_client'
|
29
29
|
require 'google/api_client/version'
|
30
30
|
|
31
31
|
describe Google::APIClient do
|
32
|
-
|
33
|
-
|
32
|
+
CLIENT ||= Google::APIClient.new
|
33
|
+
|
34
|
+
after do
|
35
|
+
# Reset client to not-quite-pristine state
|
36
|
+
CLIENT.key = nil
|
37
|
+
CLIENT.user_ip = nil
|
34
38
|
end
|
35
39
|
|
36
40
|
it 'should raise a type error for bogus authorization' do
|
@@ -41,199 +45,203 @@ describe Google::APIClient do
|
|
41
45
|
|
42
46
|
it 'should not be able to retrieve the discovery document for a bogus API' do
|
43
47
|
(lambda do
|
44
|
-
|
48
|
+
CLIENT.discovery_document('bogus')
|
45
49
|
end).should raise_error(Google::APIClient::TransmissionError)
|
46
50
|
(lambda do
|
47
|
-
|
51
|
+
CLIENT.discovered_api('bogus')
|
48
52
|
end).should raise_error(Google::APIClient::TransmissionError)
|
49
53
|
end
|
50
54
|
|
51
55
|
it 'should raise an error for bogus services' do
|
52
56
|
(lambda do
|
53
|
-
|
57
|
+
CLIENT.discovered_api(42)
|
54
58
|
end).should raise_error(TypeError)
|
55
59
|
end
|
56
60
|
|
57
61
|
it 'should raise an error for bogus services' do
|
58
62
|
(lambda do
|
59
|
-
|
63
|
+
CLIENT.preferred_version(42)
|
60
64
|
end).should raise_error(TypeError)
|
61
65
|
end
|
62
66
|
|
63
67
|
it 'should raise an error for bogus methods' do
|
64
68
|
(lambda do
|
65
|
-
|
69
|
+
CLIENT.generate_request(42)
|
66
70
|
end).should raise_error(TypeError)
|
67
71
|
end
|
68
72
|
|
69
73
|
it 'should not return a preferred version for bogus service names' do
|
70
|
-
|
74
|
+
CLIENT.preferred_version('bogus').should == nil
|
71
75
|
end
|
72
76
|
|
73
77
|
describe 'with the prediction API' do
|
74
78
|
before do
|
75
|
-
|
79
|
+
CLIENT.authorization = nil
|
76
80
|
# The prediction API no longer exposes a v1, so we have to be
|
77
81
|
# careful about looking up the wrong API version.
|
78
|
-
@prediction =
|
82
|
+
@prediction = CLIENT.discovered_api('prediction', 'v1.2')
|
79
83
|
end
|
80
84
|
|
81
85
|
it 'should correctly determine the discovery URI' do
|
82
|
-
|
86
|
+
CLIENT.discovery_uri('prediction').should ===
|
83
87
|
'https://www.googleapis.com/discovery/v1/apis/prediction/v1/rest'
|
84
88
|
end
|
85
89
|
|
86
90
|
it 'should correctly determine the discovery URI if :user_ip is set' do
|
87
|
-
|
88
|
-
request =
|
91
|
+
CLIENT.user_ip = '127.0.0.1'
|
92
|
+
request = CLIENT.generate_request(
|
89
93
|
:http_method => 'GET',
|
90
|
-
:uri =>
|
94
|
+
:uri => CLIENT.discovery_uri('prediction', 'v1.2'),
|
91
95
|
:authenticated => false
|
92
96
|
)
|
93
|
-
request.to_env(Faraday.default_connection)[:url].should === (
|
97
|
+
request.to_env(Faraday.default_connection)[:url].to_s.should === (
|
94
98
|
'https://www.googleapis.com/discovery/v1/apis/prediction/v1.2/rest' +
|
95
99
|
'?userIp=127.0.0.1'
|
96
100
|
)
|
97
101
|
end
|
98
102
|
|
99
103
|
it 'should correctly determine the discovery URI if :key is set' do
|
100
|
-
|
101
|
-
request =
|
104
|
+
CLIENT.key = 'qwerty'
|
105
|
+
request = CLIENT.generate_request(
|
102
106
|
:http_method => 'GET',
|
103
|
-
:uri =>
|
107
|
+
:uri => CLIENT.discovery_uri('prediction', 'v1.2'),
|
104
108
|
:authenticated => false
|
105
109
|
)
|
106
|
-
request.to_env(Faraday.default_connection)[:url].should === (
|
110
|
+
request.to_env(Faraday.default_connection)[:url].to_s.should === (
|
107
111
|
'https://www.googleapis.com/discovery/v1/apis/prediction/v1.2/rest' +
|
108
112
|
'?key=qwerty'
|
109
113
|
)
|
110
114
|
end
|
111
115
|
|
112
116
|
it 'should correctly determine the discovery URI if both are set' do
|
113
|
-
|
114
|
-
|
115
|
-
request =
|
117
|
+
CLIENT.key = 'qwerty'
|
118
|
+
CLIENT.user_ip = '127.0.0.1'
|
119
|
+
request = CLIENT.generate_request(
|
116
120
|
:http_method => 'GET',
|
117
|
-
:uri =>
|
121
|
+
:uri => CLIENT.discovery_uri('prediction', 'v1.2'),
|
118
122
|
:authenticated => false
|
119
123
|
)
|
120
|
-
|
124
|
+
Addressable::URI.parse(
|
125
|
+
request.to_env(Faraday.default_connection)[:url]
|
126
|
+
).query_values.should == {
|
121
127
|
'key' => 'qwerty',
|
122
128
|
'userIp' => '127.0.0.1'
|
123
129
|
}
|
124
130
|
end
|
125
131
|
|
126
132
|
it 'should correctly generate API objects' do
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
133
|
+
CLIENT.discovered_api('prediction', 'v1.2').name.should == 'prediction'
|
134
|
+
CLIENT.discovered_api('prediction', 'v1.2').version.should == 'v1.2'
|
135
|
+
CLIENT.discovered_api(:prediction, 'v1.2').name.should == 'prediction'
|
136
|
+
CLIENT.discovered_api(:prediction, 'v1.2').version.should == 'v1.2'
|
131
137
|
end
|
132
138
|
|
133
139
|
it 'should discover methods' do
|
134
|
-
|
140
|
+
CLIENT.discovered_method(
|
135
141
|
'prediction.training.insert', 'prediction', 'v1.2'
|
136
142
|
).name.should == 'insert'
|
137
|
-
|
143
|
+
CLIENT.discovered_method(
|
138
144
|
:'prediction.training.insert', :prediction, 'v1.2'
|
139
145
|
).name.should == 'insert'
|
140
|
-
|
146
|
+
CLIENT.discovered_method(
|
141
147
|
'prediction.training.delete', 'prediction', 'v1.2'
|
142
148
|
).name.should == 'delete'
|
143
149
|
end
|
144
150
|
|
145
151
|
it 'should define the origin API in discovered methods' do
|
146
|
-
|
152
|
+
CLIENT.discovered_method(
|
147
153
|
'prediction.training.insert', 'prediction', 'v1.2'
|
148
154
|
).api.name.should == 'prediction'
|
149
155
|
end
|
150
156
|
|
151
157
|
it 'should not find methods that are not in the discovery document' do
|
152
|
-
|
158
|
+
CLIENT.discovered_method(
|
153
159
|
'prediction.bogus', 'prediction', 'v1.2'
|
154
160
|
).should == nil
|
155
161
|
end
|
156
162
|
|
157
163
|
it 'should raise an error for bogus methods' do
|
158
164
|
(lambda do
|
159
|
-
|
165
|
+
CLIENT.discovered_method(42, 'prediction', 'v1.2')
|
160
166
|
end).should raise_error(TypeError)
|
161
167
|
end
|
162
168
|
|
163
169
|
it 'should raise an error for bogus methods' do
|
164
170
|
(lambda do
|
165
|
-
|
171
|
+
CLIENT.generate_request(CLIENT.discovered_api('prediction', 'v1.2'))
|
166
172
|
end).should raise_error(TypeError)
|
167
173
|
end
|
168
174
|
|
169
175
|
it 'should correctly determine the preferred version' do
|
170
|
-
|
171
|
-
|
176
|
+
CLIENT.preferred_version('prediction').version.should_not == 'v1'
|
177
|
+
CLIENT.preferred_version(:prediction).version.should_not == 'v1'
|
172
178
|
end
|
173
179
|
|
174
180
|
it 'should return a batch path' do
|
175
|
-
|
181
|
+
CLIENT.discovered_api('prediction', 'v1.2').batch_path.should_not be_nil
|
176
182
|
end
|
177
183
|
|
178
184
|
it 'should generate valid requests' do
|
179
|
-
request =
|
185
|
+
request = CLIENT.generate_request(
|
180
186
|
:api_method => @prediction.training.insert,
|
181
|
-
:parameters => {'data' => '12345'
|
187
|
+
:parameters => {'data' => '12345'}
|
182
188
|
)
|
183
189
|
request.method.should == :post
|
184
|
-
request.to_env(Faraday.default_connection)[:url].should ===
|
190
|
+
request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
185
191
|
'https://www.googleapis.com/prediction/v1.2/training?data=12345'
|
186
192
|
request.headers.should be_empty
|
187
193
|
request.body.should == ''
|
188
194
|
end
|
189
195
|
|
190
196
|
it 'should generate valid requests when repeated parameters are passed' do
|
191
|
-
request =
|
197
|
+
request = CLIENT.generate_request(
|
192
198
|
:api_method => @prediction.training.insert,
|
193
|
-
:parameters => [['data', '1'],['data','2']]
|
199
|
+
:parameters => [['data', '1'], ['data','2']]
|
194
200
|
)
|
195
201
|
request.method.should == :post
|
196
|
-
request.to_env(Faraday.default_connection)[:url].should ===
|
202
|
+
request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
197
203
|
'https://www.googleapis.com/prediction/v1.2/training?data=1&data=2'
|
198
204
|
end
|
199
205
|
|
200
206
|
it 'should generate requests against the correct URIs' do
|
201
|
-
request =
|
207
|
+
request = CLIENT.generate_request(
|
202
208
|
:api_method => @prediction.training.insert,
|
203
209
|
:parameters => {'data' => '12345'}
|
204
210
|
)
|
205
|
-
request.to_env(Faraday.default_connection)[:url].should ===
|
211
|
+
request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
206
212
|
'https://www.googleapis.com/prediction/v1.2/training?data=12345'
|
207
213
|
end
|
208
214
|
|
209
215
|
it 'should generate requests against the correct URIs' do
|
210
|
-
request =
|
216
|
+
request = CLIENT.generate_request(
|
211
217
|
:api_method => @prediction.training.insert,
|
212
218
|
:parameters => {'data' => '12345'}
|
213
219
|
)
|
214
|
-
request.to_env(Faraday.default_connection)[:url].should ===
|
220
|
+
request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
215
221
|
'https://www.googleapis.com/prediction/v1.2/training?data=12345'
|
216
222
|
end
|
217
223
|
|
218
224
|
it 'should allow modification to the base URIs for testing purposes' do
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
225
|
+
# Using a new client instance here to avoid caching rebased discovery doc
|
226
|
+
prediction_rebase =
|
227
|
+
Google::APIClient.new.discovered_api('prediction', 'v1.2')
|
228
|
+
prediction_rebase.method_base =
|
229
|
+
'https://testing-domain.example.com/prediction/v1.2/'
|
230
|
+
request = CLIENT.generate_request(
|
231
|
+
:api_method => prediction_rebase.training.insert,
|
224
232
|
:parameters => {'data' => '123'}
|
225
233
|
)
|
226
|
-
request.to_env(Faraday.default_connection)[:url].should === (
|
227
|
-
'https://testing-domain.
|
234
|
+
request.to_env(Faraday.default_connection)[:url].to_s.should === (
|
235
|
+
'https://testing-domain.example.com/' +
|
228
236
|
'prediction/v1.2/training?data=123'
|
229
237
|
)
|
230
238
|
end
|
231
239
|
|
232
240
|
it 'should generate OAuth 1 requests' do
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
request =
|
241
|
+
CLIENT.authorization = :oauth_1
|
242
|
+
CLIENT.authorization.token_credential_key = '12345'
|
243
|
+
CLIENT.authorization.token_credential_secret = '12345'
|
244
|
+
request = CLIENT.generate_request(
|
237
245
|
:api_method => @prediction.training.insert,
|
238
246
|
:parameters => {'data' => '12345'}
|
239
247
|
)
|
@@ -242,9 +250,9 @@ describe Google::APIClient do
|
|
242
250
|
end
|
243
251
|
|
244
252
|
it 'should generate OAuth 2 requests' do
|
245
|
-
|
246
|
-
|
247
|
-
request =
|
253
|
+
CLIENT.authorization = :oauth_2
|
254
|
+
CLIENT.authorization.access_token = '12345'
|
255
|
+
request = CLIENT.generate_request(
|
248
256
|
:api_method => @prediction.training.insert,
|
249
257
|
:parameters => {'data' => '12345'}
|
250
258
|
)
|
@@ -253,10 +261,10 @@ describe Google::APIClient do
|
|
253
261
|
end
|
254
262
|
|
255
263
|
it 'should not be able to execute improperly authorized requests' do
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
result =
|
264
|
+
CLIENT.authorization = :oauth_1
|
265
|
+
CLIENT.authorization.token_credential_key = '12345'
|
266
|
+
CLIENT.authorization.token_credential_secret = '12345'
|
267
|
+
result = CLIENT.execute(
|
260
268
|
@prediction.training.insert,
|
261
269
|
{'data' => '12345'}
|
262
270
|
)
|
@@ -264,9 +272,9 @@ describe Google::APIClient do
|
|
264
272
|
end
|
265
273
|
|
266
274
|
it 'should not be able to execute improperly authorized requests' do
|
267
|
-
|
268
|
-
|
269
|
-
result =
|
275
|
+
CLIENT.authorization = :oauth_2
|
276
|
+
CLIENT.authorization.access_token = '12345'
|
277
|
+
result = CLIENT.execute(
|
270
278
|
@prediction.training.insert,
|
271
279
|
{'data' => '12345'}
|
272
280
|
)
|
@@ -275,10 +283,10 @@ describe Google::APIClient do
|
|
275
283
|
|
276
284
|
it 'should not be able to execute improperly authorized requests' do
|
277
285
|
(lambda do
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
result =
|
286
|
+
CLIENT.authorization = :oauth_1
|
287
|
+
CLIENT.authorization.token_credential_key = '12345'
|
288
|
+
CLIENT.authorization.token_credential_secret = '12345'
|
289
|
+
result = CLIENT.execute!(
|
282
290
|
@prediction.training.insert,
|
283
291
|
{'data' => '12345'}
|
284
292
|
)
|
@@ -287,9 +295,9 @@ describe Google::APIClient do
|
|
287
295
|
|
288
296
|
it 'should not be able to execute improperly authorized requests' do
|
289
297
|
(lambda do
|
290
|
-
|
291
|
-
|
292
|
-
result =
|
298
|
+
CLIENT.authorization = :oauth_2
|
299
|
+
CLIENT.authorization.access_token = '12345'
|
300
|
+
result = CLIENT.execute!(
|
293
301
|
@prediction.training.insert,
|
294
302
|
{'data' => '12345'}
|
295
303
|
)
|
@@ -297,9 +305,9 @@ describe Google::APIClient do
|
|
297
305
|
end
|
298
306
|
|
299
307
|
it 'should correctly handle unnamed parameters' do
|
300
|
-
|
301
|
-
|
302
|
-
result =
|
308
|
+
CLIENT.authorization = :oauth_2
|
309
|
+
CLIENT.authorization.access_token = '12345'
|
310
|
+
result = CLIENT.execute(
|
303
311
|
@prediction.training.insert,
|
304
312
|
{},
|
305
313
|
MultiJson.dump({"id" => "bucket/object"}),
|
@@ -311,48 +319,48 @@ describe Google::APIClient do
|
|
311
319
|
|
312
320
|
describe 'with the plus API' do
|
313
321
|
before do
|
314
|
-
|
315
|
-
@plus =
|
322
|
+
CLIENT.authorization = nil
|
323
|
+
@plus = CLIENT.discovered_api('plus')
|
316
324
|
end
|
317
325
|
|
318
326
|
it 'should correctly determine the discovery URI' do
|
319
|
-
|
327
|
+
CLIENT.discovery_uri('plus').should ===
|
320
328
|
'https://www.googleapis.com/discovery/v1/apis/plus/v1/rest'
|
321
329
|
end
|
322
330
|
|
323
331
|
it 'should find APIs that are in the discovery document' do
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
332
|
+
CLIENT.discovered_api('plus').name.should == 'plus'
|
333
|
+
CLIENT.discovered_api('plus').version.should == 'v1'
|
334
|
+
CLIENT.discovered_api(:plus).name.should == 'plus'
|
335
|
+
CLIENT.discovered_api(:plus).version.should == 'v1'
|
328
336
|
end
|
329
337
|
|
330
338
|
it 'should find methods that are in the discovery document' do
|
331
339
|
# TODO(bobaman) Fix this when the RPC names are correct
|
332
|
-
|
340
|
+
CLIENT.discovered_method(
|
333
341
|
'plus.activities.list', 'plus'
|
334
342
|
).name.should == 'list'
|
335
343
|
end
|
336
344
|
|
337
345
|
it 'should define the origin API in discovered methods' do
|
338
|
-
|
346
|
+
CLIENT.discovered_method(
|
339
347
|
'plus.activities.list', 'plus'
|
340
348
|
).api.name.should == 'plus'
|
341
349
|
end
|
342
350
|
|
343
351
|
it 'should not find methods that are not in the discovery document' do
|
344
|
-
|
352
|
+
CLIENT.discovered_method('plus.bogus', 'plus').should == nil
|
345
353
|
end
|
346
354
|
|
347
355
|
it 'should generate requests against the correct URIs' do
|
348
|
-
request =
|
356
|
+
request = CLIENT.generate_request(
|
349
357
|
:api_method => @plus.activities.list,
|
350
358
|
:parameters => {
|
351
359
|
'userId' => '107807692475771887386', 'collection' => 'public'
|
352
360
|
},
|
353
361
|
:authenticated => false
|
354
362
|
)
|
355
|
-
request.to_env(Faraday.default_connection)[:url].should === (
|
363
|
+
request.to_env(Faraday.default_connection)[:url].to_s.should === (
|
356
364
|
'https://www.googleapis.com/plus/v1/' +
|
357
365
|
'people/107807692475771887386/activities/public'
|
358
366
|
)
|
@@ -360,7 +368,7 @@ describe Google::APIClient do
|
|
360
368
|
|
361
369
|
it 'should correctly validate parameters' do
|
362
370
|
(lambda do
|
363
|
-
|
371
|
+
CLIENT.generate_request(
|
364
372
|
:api_method => @plus.activities.list,
|
365
373
|
:parameters => {'alt' => 'json'},
|
366
374
|
:authenticated => false
|
@@ -370,7 +378,7 @@ describe Google::APIClient do
|
|
370
378
|
|
371
379
|
it 'should correctly validate parameters' do
|
372
380
|
(lambda do
|
373
|
-
|
381
|
+
CLIENT.generate_request(
|
374
382
|
:api_method => @plus.activities.list,
|
375
383
|
:parameters => {
|
376
384
|
'userId' => '107807692475771887386', 'collection' => 'bogus'
|
@@ -383,60 +391,60 @@ describe Google::APIClient do
|
|
383
391
|
|
384
392
|
describe 'with the latitude API' do
|
385
393
|
before do
|
386
|
-
|
387
|
-
@latitude =
|
394
|
+
CLIENT.authorization = nil
|
395
|
+
@latitude = CLIENT.discovered_api('latitude')
|
388
396
|
end
|
389
397
|
|
390
398
|
it 'should correctly determine the discovery URI' do
|
391
|
-
|
399
|
+
CLIENT.discovery_uri('latitude').should ===
|
392
400
|
'https://www.googleapis.com/discovery/v1/apis/latitude/v1/rest'
|
393
401
|
end
|
394
402
|
|
395
403
|
it 'should find APIs that are in the discovery document' do
|
396
|
-
|
397
|
-
|
404
|
+
CLIENT.discovered_api('latitude').name.should == 'latitude'
|
405
|
+
CLIENT.discovered_api('latitude').version.should == 'v1'
|
398
406
|
end
|
399
407
|
|
400
408
|
it 'should return a batch path' do
|
401
|
-
|
409
|
+
CLIENT.discovered_api('latitude').batch_path.should_not be_nil
|
402
410
|
end
|
403
411
|
|
404
412
|
it 'should find methods that are in the discovery document' do
|
405
|
-
|
413
|
+
CLIENT.discovered_method(
|
406
414
|
'latitude.currentLocation.get', 'latitude'
|
407
415
|
).name.should == 'get'
|
408
416
|
end
|
409
417
|
|
410
418
|
it 'should define the origin API in discovered methods' do
|
411
|
-
|
419
|
+
CLIENT.discovered_method(
|
412
420
|
'latitude.currentLocation.get', 'latitude'
|
413
421
|
).api.name.should == 'latitude'
|
414
422
|
end
|
415
423
|
|
416
424
|
it 'should not find methods that are not in the discovery document' do
|
417
|
-
|
425
|
+
CLIENT.discovered_method('latitude.bogus', 'latitude').should == nil
|
418
426
|
end
|
419
427
|
|
420
428
|
it 'should generate requests against the correct URIs' do
|
421
|
-
request =
|
429
|
+
request = CLIENT.generate_request(
|
422
430
|
:api_method => 'latitude.currentLocation.get',
|
423
431
|
:authenticated => false
|
424
432
|
)
|
425
|
-
request.to_env(Faraday.default_connection)[:url].should ===
|
433
|
+
request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
426
434
|
'https://www.googleapis.com/latitude/v1/currentLocation'
|
427
435
|
end
|
428
436
|
|
429
437
|
it 'should generate requests against the correct URIs' do
|
430
|
-
request =
|
438
|
+
request = CLIENT.generate_request(
|
431
439
|
:api_method => @latitude.current_location.get,
|
432
440
|
:authenticated => false
|
433
441
|
)
|
434
|
-
request.to_env(Faraday.default_connection)[:url].should ===
|
442
|
+
request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
435
443
|
'https://www.googleapis.com/latitude/v1/currentLocation'
|
436
444
|
end
|
437
445
|
|
438
446
|
it 'should not be able to execute requests without authorization' do
|
439
|
-
result =
|
447
|
+
result = CLIENT.execute(
|
440
448
|
:api_method => 'latitude.currentLocation.get',
|
441
449
|
:authenticated => false
|
442
450
|
)
|
@@ -446,60 +454,60 @@ describe Google::APIClient do
|
|
446
454
|
|
447
455
|
describe 'with the moderator API' do
|
448
456
|
before do
|
449
|
-
|
450
|
-
@moderator =
|
457
|
+
CLIENT.authorization = nil
|
458
|
+
@moderator = CLIENT.discovered_api('moderator')
|
451
459
|
end
|
452
460
|
|
453
461
|
it 'should correctly determine the discovery URI' do
|
454
|
-
|
462
|
+
CLIENT.discovery_uri('moderator').should ===
|
455
463
|
'https://www.googleapis.com/discovery/v1/apis/moderator/v1/rest'
|
456
464
|
end
|
457
465
|
|
458
466
|
it 'should find APIs that are in the discovery document' do
|
459
|
-
|
460
|
-
|
467
|
+
CLIENT.discovered_api('moderator').name.should == 'moderator'
|
468
|
+
CLIENT.discovered_api('moderator').version.should == 'v1'
|
461
469
|
end
|
462
470
|
|
463
471
|
it 'should find methods that are in the discovery document' do
|
464
|
-
|
472
|
+
CLIENT.discovered_method(
|
465
473
|
'moderator.profiles.get', 'moderator'
|
466
474
|
).name.should == 'get'
|
467
475
|
end
|
468
476
|
|
469
477
|
it 'should define the origin API in discovered methods' do
|
470
|
-
|
478
|
+
CLIENT.discovered_method(
|
471
479
|
'moderator.profiles.get', 'moderator'
|
472
480
|
).api.name.should == 'moderator'
|
473
481
|
end
|
474
482
|
|
475
483
|
it 'should not find methods that are not in the discovery document' do
|
476
|
-
|
484
|
+
CLIENT.discovered_method('moderator.bogus', 'moderator').should == nil
|
477
485
|
end
|
478
486
|
|
479
487
|
it 'should return a batch path' do
|
480
|
-
|
488
|
+
CLIENT.discovered_api('moderator').batch_path.should_not be_nil
|
481
489
|
end
|
482
490
|
|
483
491
|
it 'should generate requests against the correct URIs' do
|
484
|
-
request =
|
492
|
+
request = CLIENT.generate_request(
|
485
493
|
:api_method => 'moderator.profiles.get',
|
486
494
|
:authenticated => false
|
487
495
|
)
|
488
|
-
request.to_env(Faraday.default_connection)[:url].should ===
|
496
|
+
request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
489
497
|
'https://www.googleapis.com/moderator/v1/profiles/@me'
|
490
498
|
end
|
491
499
|
|
492
500
|
it 'should generate requests against the correct URIs' do
|
493
|
-
request =
|
501
|
+
request = CLIENT.generate_request(
|
494
502
|
:api_method => @moderator.profiles.get,
|
495
503
|
:authenticated => false
|
496
504
|
)
|
497
|
-
request.to_env(Faraday.default_connection)[:url].should ===
|
505
|
+
request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
498
506
|
'https://www.googleapis.com/moderator/v1/profiles/@me'
|
499
507
|
end
|
500
508
|
|
501
509
|
it 'should not be able to execute requests without authorization' do
|
502
|
-
result =
|
510
|
+
result = CLIENT.execute(
|
503
511
|
'moderator.profiles.get',
|
504
512
|
{},
|
505
513
|
'',
|
@@ -512,54 +520,54 @@ describe Google::APIClient do
|
|
512
520
|
|
513
521
|
describe 'with the adsense API' do
|
514
522
|
before do
|
515
|
-
|
516
|
-
@adsense =
|
523
|
+
CLIENT.authorization = nil
|
524
|
+
@adsense = CLIENT.discovered_api('adsense', 'v1')
|
517
525
|
end
|
518
526
|
|
519
527
|
it 'should correctly determine the discovery URI' do
|
520
|
-
|
528
|
+
CLIENT.discovery_uri('adsense').should ===
|
521
529
|
'https://www.googleapis.com/discovery/v1/apis/adsense/v1/rest'
|
522
530
|
end
|
523
531
|
|
524
532
|
it 'should find APIs that are in the discovery document' do
|
525
|
-
|
526
|
-
|
533
|
+
CLIENT.discovered_api('adsense').name.should == 'adsense'
|
534
|
+
CLIENT.discovered_api('adsense').version.should == 'v1'
|
527
535
|
end
|
528
536
|
|
529
537
|
it 'should return a batch path' do
|
530
|
-
|
538
|
+
CLIENT.discovered_api('adsense').batch_path.should_not be_nil
|
531
539
|
end
|
532
540
|
|
533
541
|
it 'should find methods that are in the discovery document' do
|
534
|
-
|
542
|
+
CLIENT.discovered_method(
|
535
543
|
'adsense.reports.generate', 'adsense'
|
536
544
|
).name.should == 'generate'
|
537
545
|
end
|
538
546
|
|
539
547
|
it 'should not find methods that are not in the discovery document' do
|
540
|
-
|
548
|
+
CLIENT.discovered_method('adsense.bogus', 'adsense').should == nil
|
541
549
|
end
|
542
550
|
|
543
551
|
it 'should generate requests against the correct URIs' do
|
544
|
-
request =
|
552
|
+
request = CLIENT.generate_request(
|
545
553
|
:api_method => 'adsense.adclients.list',
|
546
554
|
:authenticated => false
|
547
555
|
)
|
548
|
-
request.to_env(Faraday.default_connection)[:url].should ===
|
556
|
+
request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
549
557
|
'https://www.googleapis.com/adsense/v1/adclients'
|
550
558
|
end
|
551
559
|
|
552
560
|
it 'should generate requests against the correct URIs' do
|
553
|
-
request =
|
561
|
+
request = CLIENT.generate_request(
|
554
562
|
:api_method => @adsense.adclients.list,
|
555
563
|
:authenticated => false
|
556
564
|
)
|
557
|
-
request.to_env(Faraday.default_connection)[:url].should ===
|
565
|
+
request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
558
566
|
'https://www.googleapis.com/adsense/v1/adclients'
|
559
567
|
end
|
560
568
|
|
561
569
|
it 'should not be able to execute requests without authorization' do
|
562
|
-
result =
|
570
|
+
result = CLIENT.execute(
|
563
571
|
:api_method => 'adsense.adclients.list',
|
564
572
|
:authenticated => false
|
565
573
|
)
|
@@ -568,7 +576,7 @@ describe Google::APIClient do
|
|
568
576
|
|
569
577
|
it 'should fail when validating missing required parameters' do
|
570
578
|
(lambda do
|
571
|
-
|
579
|
+
CLIENT.generate_request(
|
572
580
|
:api_method => @adsense.reports.generate,
|
573
581
|
:authenticated => false
|
574
582
|
)
|
@@ -577,7 +585,7 @@ describe Google::APIClient do
|
|
577
585
|
|
578
586
|
it 'should succeed when validating parameters in a correct call' do
|
579
587
|
(lambda do
|
580
|
-
|
588
|
+
CLIENT.generate_request(
|
581
589
|
:api_method => @adsense.reports.generate,
|
582
590
|
:parameters => {
|
583
591
|
'startDate' => '2000-01-01',
|
@@ -592,7 +600,7 @@ describe Google::APIClient do
|
|
592
600
|
|
593
601
|
it 'should fail when validating parameters with invalid values' do
|
594
602
|
(lambda do
|
595
|
-
|
603
|
+
CLIENT.generate_request(
|
596
604
|
:api_method => @adsense.reports.generate,
|
597
605
|
:parameters => {
|
598
606
|
'startDate' => '2000-01-01',
|
@@ -607,7 +615,7 @@ describe Google::APIClient do
|
|
607
615
|
|
608
616
|
it 'should succeed when validating repeated parameters in a correct call' do
|
609
617
|
(lambda do
|
610
|
-
|
618
|
+
CLIENT.generate_request(
|
611
619
|
:api_method => @adsense.reports.generate,
|
612
620
|
:parameters => {
|
613
621
|
'startDate' => '2000-01-01',
|
@@ -622,7 +630,7 @@ describe Google::APIClient do
|
|
622
630
|
|
623
631
|
it 'should fail when validating incorrect repeated parameters' do
|
624
632
|
(lambda do
|
625
|
-
|
633
|
+
CLIENT.generate_request(
|
626
634
|
:api_method => @adsense.reports.generate,
|
627
635
|
:parameters => {
|
628
636
|
'startDate' => '2000-01-01',
|
@@ -635,25 +643,25 @@ describe Google::APIClient do
|
|
635
643
|
end).should raise_error(ArgumentError)
|
636
644
|
end
|
637
645
|
end
|
638
|
-
|
646
|
+
|
639
647
|
describe 'with the Drive API' do
|
640
648
|
before do
|
641
|
-
|
642
|
-
@drive =
|
649
|
+
CLIENT.authorization = nil
|
650
|
+
@drive = CLIENT.discovered_api('drive', 'v1')
|
643
651
|
end
|
644
|
-
|
652
|
+
|
645
653
|
it 'should include media upload info methods' do
|
646
654
|
@drive.files.insert.media_upload.should_not == nil
|
647
655
|
end
|
648
|
-
|
656
|
+
|
649
657
|
it 'should include accepted media types' do
|
650
658
|
@drive.files.insert.media_upload.accepted_types.should_not be_empty
|
651
659
|
end
|
652
|
-
|
660
|
+
|
653
661
|
it 'should have an upload path' do
|
654
662
|
@drive.files.insert.media_upload.uri_template.should_not == nil
|
655
663
|
end
|
656
|
-
|
664
|
+
|
657
665
|
it 'should have a max file size' do
|
658
666
|
@drive.files.insert.media_upload.max_size.should_not == nil
|
659
667
|
end
|