google-api-client 0.7.1 → 0.8.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 +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
|