google-api-client 0.7.1 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +13 -5
- data/CHANGELOG.md +14 -0
- data/Gemfile +0 -36
- data/README.md +12 -1
- data/Rakefile +1 -8
- data/google-api-client.gemspec +40 -0
- data/lib/google/api_client.rb +98 -30
- data/lib/google/api_client/auth/compute_service_account.rb +1 -1
- data/lib/google/api_client/auth/file_storage.rb +19 -44
- data/lib/google/api_client/auth/installed_app.rb +11 -7
- data/lib/google/api_client/auth/storage.rb +101 -0
- data/lib/google/api_client/auth/storages/file_store.rb +58 -0
- data/lib/google/api_client/auth/storages/redis_store.rb +54 -0
- data/lib/google/api_client/batch.rb +13 -11
- data/lib/google/api_client/charset.rb +33 -0
- data/lib/google/api_client/client_secrets.rb +9 -6
- data/lib/google/api_client/discovery/api.rb +3 -3
- data/lib/google/api_client/discovery/resource.rb +3 -3
- data/lib/google/api_client/discovery/schema.rb +3 -5
- data/lib/google/api_client/errors.rb +5 -0
- data/lib/google/api_client/railtie.rb +2 -1
- data/lib/google/api_client/request.rb +1 -2
- data/lib/google/api_client/result.rb +4 -2
- data/lib/google/api_client/service.rb +2 -2
- data/lib/google/api_client/service/batch.rb +7 -0
- data/lib/google/api_client/service/stub_generator.rb +4 -2
- data/lib/google/api_client/service_account.rb +3 -0
- data/lib/google/api_client/version.rb +8 -13
- data/spec/google/api_client/auth/storage_spec.rb +122 -0
- data/spec/google/api_client/auth/storages/file_store_spec.rb +40 -0
- data/spec/google/api_client/auth/storages/redis_store_spec.rb +70 -0
- data/spec/google/api_client/batch_spec.rb +29 -30
- data/spec/google/api_client/client_secrets_spec.rb +53 -0
- data/spec/google/api_client/discovery_spec.rb +101 -91
- data/spec/google/api_client/gzip_spec.rb +21 -9
- data/spec/google/api_client/media_spec.rb +31 -32
- data/spec/google/api_client/request_spec.rb +3 -4
- data/spec/google/api_client/result_spec.rb +51 -47
- data/spec/google/api_client/service_account_spec.rb +40 -35
- data/spec/google/api_client/service_spec.rb +144 -112
- data/spec/google/api_client/simple_file_store_spec.rb +30 -34
- data/spec/google/api_client_spec.rb +139 -40
- data/spec/spec_helper.rb +9 -1
- metadata +111 -88
- data/CONTRIBUTING.md +0 -32
- data/lib/cacerts.pem +0 -2183
- data/lib/google/inflection.rb +0 -28
- data/spec/fixtures/files/privatekey.p12 +0 -0
- data/spec/fixtures/files/sample.txt +0 -33
- data/spec/fixtures/files/secret.pem +0 -19
- data/tasks/gem.rake +0 -97
- data/tasks/git.rake +0 -45
- data/tasks/metrics.rake +0 -22
- data/tasks/spec.rake +0 -57
- data/tasks/wiki.rake +0 -82
- data/tasks/yard.rake +0 -29
@@ -1,3 +1,4 @@
|
|
1
|
+
# Encoding: utf-8
|
1
2
|
# Copyright 2012 Google Inc.
|
2
3
|
#
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -15,12 +16,12 @@
|
|
15
16
|
require 'spec_helper'
|
16
17
|
|
17
18
|
require 'google/api_client'
|
18
|
-
require 'google/api_client/version'
|
19
19
|
|
20
|
-
describe Google::APIClient::Gzip do
|
20
|
+
RSpec.describe Google::APIClient::Gzip do
|
21
21
|
|
22
22
|
def create_connection(&block)
|
23
23
|
Faraday.new do |b|
|
24
|
+
b.response :charset
|
24
25
|
b.response :gzip
|
25
26
|
b.adapter :test do |stub|
|
26
27
|
stub.get '/', &block
|
@@ -33,7 +34,7 @@ describe Google::APIClient::Gzip do
|
|
33
34
|
[200, {}, 'Hello world']
|
34
35
|
end
|
35
36
|
result = conn.get('/')
|
36
|
-
result.body.
|
37
|
+
expect(result.body).to eq("Hello world")
|
37
38
|
end
|
38
39
|
|
39
40
|
it 'should decompress gziped content' do
|
@@ -41,9 +42,20 @@ describe Google::APIClient::Gzip do
|
|
41
42
|
[200, { 'Content-Encoding' => 'gzip'}, Base64.decode64('H4sICLVGwlEAA3RtcADzSM3JyVcozy/KSeECANXgObcMAAAA')]
|
42
43
|
end
|
43
44
|
result = conn.get('/')
|
44
|
-
result.body.
|
45
|
+
expect(result.body).to eq("Hello world\n")
|
45
46
|
end
|
46
47
|
|
48
|
+
it 'should inflate with the correct charset encoding' do
|
49
|
+
conn = create_connection do |env|
|
50
|
+
[200,
|
51
|
+
{ 'Content-Encoding' => 'deflate', 'Content-Type' => 'application/json;charset=BIG5'},
|
52
|
+
Base64.decode64('eJxb8nLp7t2VAA8fBCI=')]
|
53
|
+
end
|
54
|
+
result = conn.get('/')
|
55
|
+
expect(result.body.encoding).to eq(Encoding::BIG5)
|
56
|
+
expect(result.body).to eq('日本語'.encode("BIG5"))
|
57
|
+
end
|
58
|
+
|
47
59
|
describe 'with API Client' do
|
48
60
|
|
49
61
|
before do
|
@@ -55,8 +67,8 @@ describe Google::APIClient::Gzip do
|
|
55
67
|
it 'should send gzip in user agent' do
|
56
68
|
conn = create_connection do |env|
|
57
69
|
agent = env[:request_headers]['User-Agent']
|
58
|
-
agent.
|
59
|
-
agent.
|
70
|
+
expect(agent).not_to be_nil
|
71
|
+
expect(agent).to include 'gzip'
|
60
72
|
[200, {}, 'Hello world']
|
61
73
|
end
|
62
74
|
@client.execute(:uri => 'http://www.example.com/', :connection => conn)
|
@@ -65,8 +77,8 @@ describe Google::APIClient::Gzip do
|
|
65
77
|
it 'should send gzip in accept-encoding' do
|
66
78
|
conn = create_connection do |env|
|
67
79
|
encoding = env[:request_headers]['Accept-Encoding']
|
68
|
-
encoding.
|
69
|
-
encoding.
|
80
|
+
expect(encoding).not_to be_nil
|
81
|
+
expect(encoding).to include 'gzip'
|
70
82
|
[200, {}, 'Hello world']
|
71
83
|
end
|
72
84
|
@client.execute(:uri => 'http://www.example.com/', :connection => conn)
|
@@ -75,7 +87,7 @@ describe Google::APIClient::Gzip do
|
|
75
87
|
it 'should not send gzip in accept-encoding if disabled for request' do
|
76
88
|
conn = create_connection do |env|
|
77
89
|
encoding = env[:request_headers]['Accept-Encoding']
|
78
|
-
encoding.
|
90
|
+
expect(encoding).not_to include('gzip') unless encoding.nil?
|
79
91
|
[200, {}, 'Hello world']
|
80
92
|
end
|
81
93
|
response = @client.execute(:uri => 'http://www.example.com/', :gzip => false, :connection => conn)
|
@@ -15,15 +15,14 @@
|
|
15
15
|
require 'spec_helper'
|
16
16
|
|
17
17
|
require 'google/api_client'
|
18
|
-
require 'google/api_client/version'
|
19
18
|
|
20
19
|
fixtures_path = File.expand_path('../../../fixtures', __FILE__)
|
21
20
|
|
22
|
-
describe Google::APIClient::UploadIO do
|
21
|
+
RSpec.describe Google::APIClient::UploadIO do
|
23
22
|
it 'should reject invalid file paths' do
|
24
|
-
(lambda do
|
23
|
+
expect(lambda do
|
25
24
|
media = Google::APIClient::UploadIO.new('doesnotexist', 'text/plain')
|
26
|
-
end).
|
25
|
+
end).to raise_error
|
27
26
|
end
|
28
27
|
|
29
28
|
describe 'with a file' do
|
@@ -33,11 +32,11 @@ describe Google::APIClient::UploadIO do
|
|
33
32
|
end
|
34
33
|
|
35
34
|
it 'should report the correct file length' do
|
36
|
-
@media.length.
|
35
|
+
expect(@media.length).to eq(File.size(@file))
|
37
36
|
end
|
38
37
|
|
39
38
|
it 'should have a mime type' do
|
40
|
-
@media.content_type.
|
39
|
+
expect(@media.content_type).to eq('text/plain')
|
41
40
|
end
|
42
41
|
end
|
43
42
|
|
@@ -48,64 +47,64 @@ describe Google::APIClient::UploadIO do
|
|
48
47
|
end
|
49
48
|
|
50
49
|
it 'should report the correct file length' do
|
51
|
-
@media.length.
|
50
|
+
expect(@media.length).to eq(@content.length)
|
52
51
|
end
|
53
52
|
|
54
53
|
it 'should have a mime type' do
|
55
|
-
@media.content_type.
|
54
|
+
expect(@media.content_type).to eq('text/plain')
|
56
55
|
end
|
57
56
|
end
|
58
57
|
end
|
59
58
|
|
60
|
-
describe Google::APIClient::RangedIO do
|
59
|
+
RSpec.describe Google::APIClient::RangedIO do
|
61
60
|
before do
|
62
61
|
@source = StringIO.new("1234567890abcdef")
|
63
62
|
@io = Google::APIClient::RangedIO.new(@source, 1, 5)
|
64
63
|
end
|
65
64
|
|
66
65
|
it 'should return the correct range when read entirely' do
|
67
|
-
@io.read.
|
66
|
+
expect(@io.read).to eq("23456")
|
68
67
|
end
|
69
68
|
|
70
69
|
it 'should maintain position' do
|
71
|
-
@io.read(1).
|
72
|
-
@io.read(2).
|
73
|
-
@io.read(2).
|
70
|
+
expect(@io.read(1)).to eq('2')
|
71
|
+
expect(@io.read(2)).to eq('34')
|
72
|
+
expect(@io.read(2)).to eq('56')
|
74
73
|
end
|
75
74
|
|
76
75
|
it 'should allow rewinds' do
|
77
|
-
@io.read(2).
|
76
|
+
expect(@io.read(2)).to eq('23')
|
78
77
|
@io.rewind()
|
79
|
-
@io.read(2).
|
78
|
+
expect(@io.read(2)).to eq('23')
|
80
79
|
end
|
81
80
|
|
82
81
|
it 'should allow setting position' do
|
83
82
|
@io.pos = 3
|
84
|
-
@io.read.
|
83
|
+
expect(@io.read).to eq('56')
|
85
84
|
end
|
86
85
|
|
87
86
|
it 'should not allow position to be set beyond range' do
|
88
87
|
@io.pos = 10
|
89
|
-
@io.read.
|
88
|
+
expect(@io.read).to eq('')
|
90
89
|
end
|
91
90
|
|
92
91
|
it 'should return empty string when read amount is zero' do
|
93
|
-
@io.read(0).
|
92
|
+
expect(@io.read(0)).to eq('')
|
94
93
|
end
|
95
94
|
|
96
95
|
it 'should return empty string at EOF if amount is nil' do
|
97
96
|
@io.read
|
98
|
-
@io.read.
|
97
|
+
expect(@io.read).to eq('')
|
99
98
|
end
|
100
99
|
|
101
100
|
it 'should return nil at EOF if amount is positive int' do
|
102
101
|
@io.read
|
103
|
-
@io.read(1).
|
102
|
+
expect(@io.read(1)).to eq(nil)
|
104
103
|
end
|
105
104
|
|
106
105
|
end
|
107
106
|
|
108
|
-
describe Google::APIClient::ResumableUpload do
|
107
|
+
RSpec.describe Google::APIClient::ResumableUpload do
|
109
108
|
CLIENT = Google::APIClient.new(:application_name => 'API Client Tests') unless defined?(CLIENT)
|
110
109
|
|
111
110
|
after do
|
@@ -127,26 +126,26 @@ describe Google::APIClient::ResumableUpload do
|
|
127
126
|
it 'should consider 20x status as complete' do
|
128
127
|
request = @uploader.to_http_request
|
129
128
|
@uploader.process_http_response(mock_result(200))
|
130
|
-
@uploader.complete
|
129
|
+
expect(@uploader.complete?).to eq(true)
|
131
130
|
end
|
132
131
|
|
133
132
|
it 'should consider 30x status as incomplete' do
|
134
133
|
request = @uploader.to_http_request
|
135
134
|
@uploader.process_http_response(mock_result(308))
|
136
|
-
@uploader.complete
|
137
|
-
@uploader.expired
|
135
|
+
expect(@uploader.complete?).to eq(false)
|
136
|
+
expect(@uploader.expired?).to eq(false)
|
138
137
|
end
|
139
138
|
|
140
139
|
it 'should consider 40x status as fatal' do
|
141
140
|
request = @uploader.to_http_request
|
142
141
|
@uploader.process_http_response(mock_result(404))
|
143
|
-
@uploader.expired
|
142
|
+
expect(@uploader.expired?).to eq(true)
|
144
143
|
end
|
145
144
|
|
146
145
|
it 'should detect changes to location' do
|
147
146
|
request = @uploader.to_http_request
|
148
147
|
@uploader.process_http_response(mock_result(308, 'location' => 'https://www.googleapis.com/upload/drive/v1/files/abcdef'))
|
149
|
-
@uploader.uri.to_s.
|
148
|
+
expect(@uploader.uri.to_s).to eq('https://www.googleapis.com/upload/drive/v1/files/abcdef')
|
150
149
|
end
|
151
150
|
|
152
151
|
it 'should resume from the saved range reported by the server' do
|
@@ -154,8 +153,8 @@ describe Google::APIClient::ResumableUpload do
|
|
154
153
|
@uploader.to_http_request # Send bytes 0-199, only 0-99 saved
|
155
154
|
@uploader.process_http_response(mock_result(308, 'range' => '0-99'))
|
156
155
|
method, url, headers, body = @uploader.to_http_request # Send bytes 100-299
|
157
|
-
headers['Content-Range'].
|
158
|
-
headers['Content-length'].
|
156
|
+
expect(headers['Content-Range']).to eq("bytes 100-299/#{@media.length}")
|
157
|
+
expect(headers['Content-length']).to eq("200")
|
159
158
|
end
|
160
159
|
|
161
160
|
it 'should resync the offset after 5xx errors' do
|
@@ -163,12 +162,12 @@ describe Google::APIClient::ResumableUpload do
|
|
163
162
|
@uploader.to_http_request
|
164
163
|
@uploader.process_http_response(mock_result(500)) # Invalidates range
|
165
164
|
method, url, headers, body = @uploader.to_http_request # Resync
|
166
|
-
headers['Content-Range'].
|
167
|
-
headers['Content-length'].
|
165
|
+
expect(headers['Content-Range']).to eq("bytes */#{@media.length}")
|
166
|
+
expect(headers['Content-length']).to eq("0")
|
168
167
|
@uploader.process_http_response(mock_result(308, 'range' => '0-99'))
|
169
168
|
method, url, headers, body = @uploader.to_http_request # Send next chunk at correct range
|
170
|
-
headers['Content-Range'].
|
171
|
-
headers['Content-length'].
|
169
|
+
expect(headers['Content-Range']).to eq("bytes 100-299/#{@media.length}")
|
170
|
+
expect(headers['Content-length']).to eq("200")
|
172
171
|
end
|
173
172
|
|
174
173
|
def mock_result(status, headers = {})
|
@@ -15,16 +15,15 @@
|
|
15
15
|
require 'spec_helper'
|
16
16
|
|
17
17
|
require 'google/api_client'
|
18
|
-
require 'google/api_client/version'
|
19
18
|
|
20
|
-
describe Google::APIClient::Request do
|
19
|
+
RSpec.describe Google::APIClient::Request do
|
21
20
|
CLIENT = Google::APIClient.new(:application_name => 'API Client Tests') unless defined?(CLIENT)
|
22
21
|
|
23
22
|
it 'should normalize parameter names to strings' do
|
24
23
|
request = Google::APIClient::Request.new(:uri => 'https://www.google.com', :parameters => {
|
25
24
|
:a => '1', 'b' => '2'
|
26
25
|
})
|
27
|
-
request.parameters['a'].
|
28
|
-
request.parameters['b'].
|
26
|
+
expect(request.parameters['a']).to eq('1')
|
27
|
+
expect(request.parameters['b']).to eq('2')
|
29
28
|
end
|
30
29
|
end
|
@@ -15,9 +15,8 @@
|
|
15
15
|
require 'spec_helper'
|
16
16
|
|
17
17
|
require 'google/api_client'
|
18
|
-
require 'google/api_client/version'
|
19
18
|
|
20
|
-
describe Google::APIClient::Result do
|
19
|
+
RSpec.describe Google::APIClient::Result do
|
21
20
|
CLIENT = Google::APIClient.new(:application_name => 'API Client Tests') unless defined?(CLIENT)
|
22
21
|
|
23
22
|
describe 'with the plus API' do
|
@@ -36,8 +35,8 @@ describe Google::APIClient::Result do
|
|
36
35
|
|
37
36
|
# Response double
|
38
37
|
@response = double("response")
|
39
|
-
@response.
|
40
|
-
@response.
|
38
|
+
allow(@response).to receive(:status).and_return(200)
|
39
|
+
allow(@response).to receive(:headers).and_return({
|
41
40
|
'etag' => '12345',
|
42
41
|
'x-google-apiary-auth-scopes' =>
|
43
42
|
'https://www.googleapis.com/auth/plus.me',
|
@@ -51,7 +50,7 @@ describe Google::APIClient::Result do
|
|
51
50
|
|
52
51
|
describe 'with a next page token' do
|
53
52
|
before do
|
54
|
-
@response.
|
53
|
+
allow(@response).to receive(:body).and_return(
|
55
54
|
<<-END_OF_STRING
|
56
55
|
{
|
57
56
|
"kind": "plus#activityFeed",
|
@@ -70,46 +69,49 @@ describe Google::APIClient::Result do
|
|
70
69
|
end
|
71
70
|
|
72
71
|
it 'should indicate a successful response' do
|
73
|
-
@result.error
|
72
|
+
expect(@result.error?).to be_falsey
|
74
73
|
end
|
75
74
|
|
76
75
|
it 'should return the correct next page token' do
|
77
|
-
@result.next_page_token.
|
76
|
+
expect(@result.next_page_token).to eq('NEXT+PAGE+TOKEN')
|
78
77
|
end
|
79
78
|
|
80
79
|
it 'should escape the next page token when calling next_page' do
|
81
80
|
reference = @result.next_page
|
82
|
-
Hash[reference.parameters].
|
83
|
-
Hash[reference.parameters]['pageToken'].
|
81
|
+
expect(Hash[reference.parameters]).to include('pageToken')
|
82
|
+
expect(Hash[reference.parameters]['pageToken']).to eq('NEXT+PAGE+TOKEN')
|
84
83
|
url = reference.to_env(CLIENT.connection)[:url]
|
85
|
-
url.to_s.
|
84
|
+
expect(url.to_s).to include('pageToken=NEXT%2BPAGE%2BTOKEN')
|
86
85
|
end
|
87
86
|
|
88
87
|
it 'should return content type correctly' do
|
89
|
-
@result.media_type.
|
88
|
+
expect(@result.media_type).to eq('application/json')
|
90
89
|
end
|
91
90
|
|
92
91
|
it 'should return the result data correctly' do
|
93
|
-
@result.data
|
94
|
-
@result.data.class.to_s.
|
92
|
+
expect(@result.data?).to be_truthy
|
93
|
+
expect(@result.data.class.to_s).to eq(
|
95
94
|
'Google::APIClient::Schema::Plus::V1::ActivityFeed'
|
96
|
-
|
97
|
-
@result.data.
|
98
|
-
@result.data.
|
99
|
-
@result.data.
|
95
|
+
)
|
96
|
+
expect(@result.data.kind).to eq('plus#activityFeed')
|
97
|
+
expect(@result.data.etag).to eq('FOO')
|
98
|
+
expect(@result.data.nextPageToken).to eq('NEXT+PAGE+TOKEN')
|
99
|
+
expect(@result.data.selfLink).to eq(
|
100
100
|
'https://www.googleapis.com/plus/v1/people/foo/activities/public?'
|
101
|
-
|
101
|
+
)
|
102
|
+
expect(@result.data.nextLink).to eq(
|
102
103
|
'https://www.googleapis.com/plus/v1/people/foo/activities/public?' +
|
103
104
|
'maxResults=20&pageToken=NEXT%2BPAGE%2BTOKEN'
|
104
|
-
|
105
|
-
@result.data.
|
106
|
-
@result.data.
|
105
|
+
)
|
106
|
+
expect(@result.data.title).to eq('Plus Public Activity Feed for ')
|
107
|
+
expect(@result.data.id).to eq("123456790")
|
108
|
+
expect(@result.data.items).to be_empty
|
107
109
|
end
|
108
110
|
end
|
109
111
|
|
110
112
|
describe 'without a next page token' do
|
111
113
|
before do
|
112
|
-
@response.
|
114
|
+
allow(@response).to receive(:body).and_return(
|
113
115
|
<<-END_OF_STRING
|
114
116
|
{
|
115
117
|
"kind": "plus#activityFeed",
|
@@ -126,30 +128,32 @@ describe Google::APIClient::Result do
|
|
126
128
|
end
|
127
129
|
|
128
130
|
it 'should not return a next page token' do
|
129
|
-
@result.next_page_token.
|
131
|
+
expect(@result.next_page_token).to eq(nil)
|
130
132
|
end
|
131
133
|
|
132
134
|
it 'should return content type correctly' do
|
133
|
-
@result.media_type.
|
135
|
+
expect(@result.media_type).to eq('application/json')
|
134
136
|
end
|
135
137
|
|
136
138
|
it 'should return the result data correctly' do
|
137
|
-
@result.data
|
138
|
-
@result.data.class.to_s.
|
139
|
+
expect(@result.data?).to be_truthy
|
140
|
+
expect(@result.data.class.to_s).to eq(
|
139
141
|
'Google::APIClient::Schema::Plus::V1::ActivityFeed'
|
140
|
-
|
141
|
-
@result.data.
|
142
|
-
@result.data.
|
142
|
+
)
|
143
|
+
expect(@result.data.kind).to eq('plus#activityFeed')
|
144
|
+
expect(@result.data.etag).to eq('FOO')
|
145
|
+
expect(@result.data.selfLink).to eq(
|
143
146
|
'https://www.googleapis.com/plus/v1/people/foo/activities/public?'
|
144
|
-
|
145
|
-
@result.data.
|
146
|
-
@result.data.
|
147
|
+
)
|
148
|
+
expect(@result.data.title).to eq('Plus Public Activity Feed for ')
|
149
|
+
expect(@result.data.id).to eq("123456790")
|
150
|
+
expect(@result.data.items).to be_empty
|
147
151
|
end
|
148
152
|
end
|
149
|
-
|
153
|
+
|
150
154
|
describe 'with JSON error response' do
|
151
155
|
before do
|
152
|
-
@response.
|
156
|
+
allow(@response).to receive(:body).and_return(
|
153
157
|
<<-END_OF_STRING
|
154
158
|
{
|
155
159
|
"error": {
|
@@ -166,37 +170,37 @@ describe Google::APIClient::Result do
|
|
166
170
|
}
|
167
171
|
END_OF_STRING
|
168
172
|
)
|
169
|
-
@response.
|
173
|
+
allow(@response).to receive(:status).and_return(400)
|
170
174
|
@result = Google::APIClient::Result.new(@reference, @response)
|
171
175
|
end
|
172
|
-
|
176
|
+
|
173
177
|
it 'should return error status correctly' do
|
174
|
-
@result.error
|
178
|
+
expect(@result.error?).to be_truthy
|
175
179
|
end
|
176
180
|
|
177
181
|
it 'should return the correct error message' do
|
178
|
-
@result.error_message.
|
182
|
+
expect(@result.error_message).to eq('Parse Error')
|
179
183
|
end
|
180
184
|
end
|
181
|
-
|
185
|
+
|
182
186
|
describe 'with 204 No Content response' do
|
183
187
|
before do
|
184
|
-
@response.
|
185
|
-
@response.
|
186
|
-
@response.
|
188
|
+
allow(@response).to receive(:body).and_return('')
|
189
|
+
allow(@response).to receive(:status).and_return(204)
|
190
|
+
allow(@response).to receive(:headers).and_return({})
|
187
191
|
@result = Google::APIClient::Result.new(@reference, @response)
|
188
192
|
end
|
189
193
|
|
190
194
|
it 'should indicate no data is available' do
|
191
|
-
@result.data
|
195
|
+
expect(@result.data?).to be_falsey
|
192
196
|
end
|
193
|
-
|
197
|
+
|
194
198
|
it 'should return nil for data' do
|
195
|
-
@result.data.
|
199
|
+
expect(@result.data).to eq(nil)
|
196
200
|
end
|
197
|
-
|
201
|
+
|
198
202
|
it 'should return nil for media_type' do
|
199
|
-
@result.media_type.
|
203
|
+
expect(@result.media_type).to eq(nil)
|
200
204
|
end
|
201
205
|
end
|
202
206
|
end
|