Continue internal shuffling...
This commit is contained in:
1 parent
f9c1ab67ba
commit
fc45135fcd
13 files changed
+503
-385
No files matched your search
@@ -226,7 +226,7 @@ describe Google::APIClient::BatchRequest do
|
||||
it 'should convert to a correct HTTP request' do
|
||||
batch = Google::APIClient::BatchRequest.new { |result| }
|
||||
batch.add(@call1, '1').add(@call2, '2')
|
||||
request = batch.to_http_request.to_env(Faraday.default_connection)
|
||||
request = batch.to_env(Faraday.default_connection)
|
||||
boundary = Google::APIClient::BatchRequest::BATCH_BOUNDARY
|
||||
request[:method].to_s.downcase.should == 'post'
|
||||
request[:url].to_s.should == 'https://www.googleapis.com/batch'
|
||||
|
||||
@@ -25,7 +25,24 @@ require 'signet/oauth_1/client'
|
||||
require 'google/api_client'
|
||||
require 'google/api_client/version'
|
||||
|
||||
def TestHandler
|
||||
def initialize(&block)
|
||||
@block = block
|
||||
end
|
||||
|
||||
def call(env)
|
||||
@block.call(env)
|
||||
end
|
||||
end
|
||||
|
||||
def mock_connection(&block)
|
||||
connection = Faraday.new do |builder|
|
||||
use TestHandler block
|
||||
end
|
||||
end
|
||||
|
||||
describe Google::APIClient do
|
||||
include ConnectionHelpers
|
||||
CLIENT = Google::APIClient.new unless defined?(CLIENT)
|
||||
|
||||
after do
|
||||
@@ -63,7 +80,7 @@ describe Google::APIClient do
|
||||
|
||||
it 'should raise an error for bogus methods' do
|
||||
(lambda do
|
||||
CLIENT.generate_request(42)
|
||||
CLIENT.execute(42)
|
||||
end).should raise_error(TypeError)
|
||||
end
|
||||
|
||||
@@ -86,44 +103,49 @@ describe Google::APIClient do
|
||||
|
||||
it 'should correctly determine the discovery URI if :user_ip is set' do
|
||||
CLIENT.user_ip = '127.0.0.1'
|
||||
request = CLIENT.generate_request(
|
||||
|
||||
conn = stub_connection do |stub|
|
||||
stub.get('/discovery/v1/apis/prediction/v1.2/rest?userIp=127.0.0.1') do |env|
|
||||
end
|
||||
end
|
||||
CLIENT.execute(
|
||||
:http_method => 'GET',
|
||||
:uri => CLIENT.discovery_uri('prediction', 'v1.2'),
|
||||
:authenticated => false
|
||||
)
|
||||
request.to_http_request.to_env(Faraday.default_connection)[:url].to_s.should === (
|
||||
'https://www.googleapis.com/discovery/v1/apis/prediction/v1.2/rest' +
|
||||
'?userIp=127.0.0.1'
|
||||
:authenticated => false,
|
||||
:connection => conn
|
||||
)
|
||||
conn.verify
|
||||
end
|
||||
|
||||
it 'should correctly determine the discovery URI if :key is set' do
|
||||
CLIENT.key = 'qwerty'
|
||||
request = CLIENT.generate_request(
|
||||
conn = stub_connection do |stub|
|
||||
stub.get('/discovery/v1/apis/prediction/v1.2/rest?key=qwerty') do |env|
|
||||
end
|
||||
end
|
||||
request = CLIENT.execute(
|
||||
:http_method => 'GET',
|
||||
:uri => CLIENT.discovery_uri('prediction', 'v1.2'),
|
||||
:authenticated => false
|
||||
)
|
||||
request.to_http_request.to_env(Faraday.default_connection)[:url].to_s.should === (
|
||||
'https://www.googleapis.com/discovery/v1/apis/prediction/v1.2/rest' +
|
||||
'?key=qwerty'
|
||||
)
|
||||
:authenticated => false,
|
||||
:connection => conn
|
||||
)
|
||||
conn.verify
|
||||
end
|
||||
|
||||
it 'should correctly determine the discovery URI if both are set' do
|
||||
CLIENT.key = 'qwerty'
|
||||
CLIENT.user_ip = '127.0.0.1'
|
||||
request = CLIENT.generate_request(
|
||||
conn = stub_connection do |stub|
|
||||
stub.get('/discovery/v1/apis/prediction/v1.2/rest?key=qwerty&userIp=127.0.0.1') do |env|
|
||||
end
|
||||
end
|
||||
request = CLIENT.execute(
|
||||
:http_method => 'GET',
|
||||
:uri => CLIENT.discovery_uri('prediction', 'v1.2'),
|
||||
:authenticated => false
|
||||
)
|
||||
Addressable::URI.parse(
|
||||
request.to_http_request.to_env(Faraday.default_connection)[:url]
|
||||
).query_values.should == {
|
||||
'key' => 'qwerty',
|
||||
'userIp' => '127.0.0.1'
|
||||
}
|
||||
:authenticated => false,
|
||||
:connection => conn
|
||||
)
|
||||
conn.verify
|
||||
end
|
||||
|
||||
it 'should correctly generate API objects' do
|
||||
@@ -165,7 +187,7 @@ describe Google::APIClient do
|
||||
|
||||
it 'should raise an error for bogus methods' do
|
||||
(lambda do
|
||||
CLIENT.generate_request(CLIENT.discovered_api('prediction', 'v1.2'))
|
||||
CLIENT.execute(:api_method => CLIENT.discovered_api('prediction', 'v1.2'))
|
||||
end).should raise_error(TypeError)
|
||||
end
|
||||
|
||||
@@ -179,44 +201,58 @@ describe Google::APIClient do
|
||||
end
|
||||
|
||||
it 'should generate valid requests' do
|
||||
request = CLIENT.generate_request(
|
||||
conn = stub_connection do |stub|
|
||||
stub.post('/prediction/v1.2/training?data=12345') do |env|
|
||||
env[:body].should == ''
|
||||
end
|
||||
end
|
||||
request = CLIENT.execute(
|
||||
:api_method => @prediction.training.insert,
|
||||
:parameters => {'data' => '12345'}
|
||||
:parameters => {'data' => '12345'},
|
||||
:connection => conn
|
||||
)
|
||||
request.to_http_request.method.should == :post
|
||||
request.to_http_request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
||||
'https://www.googleapis.com/prediction/v1.2/training?data=12345'
|
||||
request.headers.should be_empty
|
||||
request.body.should == ''
|
||||
conn.verify
|
||||
end
|
||||
|
||||
it 'should generate valid requests when repeated parameters are passed' do
|
||||
pending("This is caused by Faraday's encoding of query parameters.")
|
||||
request = CLIENT.generate_request(
|
||||
conn = stub_connection do |stub|
|
||||
stub.post('/prediction/v1.2/training?data=1&data=2') do |env|
|
||||
env[:params]['data'].should include('1', '2')
|
||||
end
|
||||
end
|
||||
request = CLIENT.execute(
|
||||
:api_method => @prediction.training.insert,
|
||||
:parameters => [['data', '1'], ['data','2']]
|
||||
:parameters => [['data', '1'], ['data','2']],
|
||||
:connection => conn
|
||||
)
|
||||
request.to_http_request.method.should == :post
|
||||
request.to_http_request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
||||
'https://www.googleapis.com/prediction/v1.2/training?data=1&data=2'
|
||||
conn.verify
|
||||
end
|
||||
|
||||
it 'should generate requests against the correct URIs' do
|
||||
request = CLIENT.generate_request(
|
||||
conn = stub_connection do |stub|
|
||||
stub.post('/prediction/v1.2/training?data=12345') do |env|
|
||||
end
|
||||
end
|
||||
request = CLIENT.execute(
|
||||
:api_method => @prediction.training.insert,
|
||||
:parameters => {'data' => '12345'}
|
||||
:parameters => {'data' => '12345'},
|
||||
:connection => conn
|
||||
)
|
||||
request.to_http_request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
||||
'https://www.googleapis.com/prediction/v1.2/training?data=12345'
|
||||
conn.verify
|
||||
end
|
||||
|
||||
it 'should generate requests against the correct URIs' do
|
||||
request = CLIENT.generate_request(
|
||||
conn = stub_connection do |stub|
|
||||
stub.post('/prediction/v1.2/training?data=12345') do |env|
|
||||
end
|
||||
end
|
||||
request = CLIENT.execute(
|
||||
:api_method => @prediction.training.insert,
|
||||
:parameters => {'data' => '12345'}
|
||||
:parameters => {'data' => '12345'},
|
||||
:connection => conn
|
||||
)
|
||||
request.to_http_request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
||||
'https://www.googleapis.com/prediction/v1.2/training?data=12345'
|
||||
conn.verify
|
||||
end
|
||||
|
||||
it 'should allow modification to the base URIs for testing purposes' do
|
||||
@@ -225,39 +261,58 @@ describe Google::APIClient do
|
||||
Google::APIClient.new.discovered_api('prediction', 'v1.2')
|
||||
prediction_rebase.method_base =
|
||||
'https://testing-domain.example.com/prediction/v1.2/'
|
||||
request = CLIENT.generate_request(
|
||||
|
||||
conn = stub_connection do |stub|
|
||||
stub.post('/prediction/v1.2/training') do |env|
|
||||
env[:url].host.should == 'testing-domain.example.com'
|
||||
end
|
||||
end
|
||||
|
||||
request = CLIENT.execute(
|
||||
:api_method => prediction_rebase.training.insert,
|
||||
:parameters => {'data' => '123'}
|
||||
)
|
||||
request.to_http_request.to_env(Faraday.default_connection)[:url].to_s.should === (
|
||||
'https://testing-domain.example.com/' +
|
||||
'prediction/v1.2/training?data=123'
|
||||
:parameters => {'data' => '123'},
|
||||
:connection => conn
|
||||
)
|
||||
conn.verify
|
||||
end
|
||||
|
||||
it 'should generate OAuth 1 requests' do
|
||||
CLIENT.authorization = :oauth_1
|
||||
CLIENT.authorization.token_credential_key = '12345'
|
||||
CLIENT.authorization.token_credential_secret = '12345'
|
||||
request = CLIENT.generate_request(
|
||||
|
||||
conn = stub_connection do |stub|
|
||||
stub.post('/prediction/v1.2/training?data=12345') do |env|
|
||||
env[:request_headers].should have_key('Authorization')
|
||||
env[:request_headers]['Authorization'].should =~ /^OAuth/
|
||||
end
|
||||
end
|
||||
|
||||
request = CLIENT.execute(
|
||||
:api_method => @prediction.training.insert,
|
||||
:parameters => {'data' => '12345'}
|
||||
:parameters => {'data' => '12345'},
|
||||
:connection => conn
|
||||
)
|
||||
http_request = request.to_http_request
|
||||
http_request.headers.should have_key('Authorization')
|
||||
http_request.headers['Authorization'].should =~ /^OAuth/
|
||||
conn.verify
|
||||
end
|
||||
|
||||
it 'should generate OAuth 2 requests' do
|
||||
CLIENT.authorization = :oauth_2
|
||||
CLIENT.authorization.access_token = '12345'
|
||||
request = CLIENT.generate_request(
|
||||
|
||||
conn = stub_connection do |stub|
|
||||
stub.post('/prediction/v1.2/training?data=12345') do |env|
|
||||
env[:request_headers].should have_key('Authorization')
|
||||
env[:request_headers]['Authorization'].should =~ /^Bearer/
|
||||
end
|
||||
end
|
||||
|
||||
request = CLIENT.execute(
|
||||
:api_method => @prediction.training.insert,
|
||||
:parameters => {'data' => '12345'}
|
||||
:parameters => {'data' => '12345'},
|
||||
:connection => conn
|
||||
)
|
||||
http_request = request.to_http_request
|
||||
http_request.headers.should have_key('Authorization')
|
||||
http_request.headers['Authorization'].should =~ /^Bearer/
|
||||
conn.verify
|
||||
end
|
||||
|
||||
it 'should not be able to execute improperly authorized requests' do
|
||||
@@ -305,15 +360,21 @@ describe Google::APIClient do
|
||||
end
|
||||
|
||||
it 'should correctly handle unnamed parameters' do
|
||||
conn = stub_connection do |stub|
|
||||
stub.post('/prediction/v1.2/training') do |env|
|
||||
env[:request_headers].should have_key('Content-Type')
|
||||
env[:request_headers]['Content-Type'].should == 'application/json'
|
||||
end
|
||||
end
|
||||
CLIENT.authorization = :oauth_2
|
||||
CLIENT.authorization.access_token = '12345'
|
||||
result = CLIENT.execute(
|
||||
@prediction.training.insert,
|
||||
{},
|
||||
MultiJson.dump({"id" => "bucket/object"}),
|
||||
{'Content-Type' => 'application/json'}
|
||||
CLIENT.execute(
|
||||
:api_method => @prediction.training.insert,
|
||||
:body => MultiJson.dump({"id" => "bucket/object"}),
|
||||
:headers => {'Content-Type' => 'application/json'},
|
||||
:connection => conn
|
||||
)
|
||||
result.reference.to_http_request.headers['Content-Type'].should == 'application/json'
|
||||
conn.verify
|
||||
end
|
||||
end
|
||||
|
||||
@@ -353,38 +414,42 @@ describe Google::APIClient do
|
||||
end
|
||||
|
||||
it 'should generate requests against the correct URIs' do
|
||||
request = CLIENT.generate_request(
|
||||
conn = stub_connection do |stub|
|
||||
stub.get('/plus/v1/people/107807692475771887386/activities/public' +
|
||||
'?collection=public&userId=107807692475771887386') do |env|
|
||||
end
|
||||
end
|
||||
|
||||
request = CLIENT.execute(
|
||||
:api_method => @plus.activities.list,
|
||||
:parameters => {
|
||||
'userId' => '107807692475771887386', 'collection' => 'public'
|
||||
},
|
||||
:authenticated => false
|
||||
)
|
||||
request.to_http_request.to_env(Faraday.default_connection)[:url].to_s.should === (
|
||||
'https://www.googleapis.com/plus/v1/' +
|
||||
'people/107807692475771887386/activities/public'
|
||||
:authenticated => false,
|
||||
:connection => conn
|
||||
)
|
||||
conn.verify
|
||||
end
|
||||
|
||||
it 'should correctly validate parameters' do
|
||||
(lambda do
|
||||
CLIENT.generate_request(
|
||||
CLIENT.execute(
|
||||
:api_method => @plus.activities.list,
|
||||
:parameters => {'alt' => 'json'},
|
||||
:authenticated => false
|
||||
).to_http_request
|
||||
)
|
||||
end).should raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
it 'should correctly validate parameters' do
|
||||
(lambda do
|
||||
CLIENT.generate_request(
|
||||
CLIENT.execute(
|
||||
:api_method => @plus.activities.list,
|
||||
:parameters => {
|
||||
'userId' => '107807692475771887386', 'collection' => 'bogus'
|
||||
},
|
||||
:authenticated => false
|
||||
).to_http_request
|
||||
).to_env(Faraday.default_connection)
|
||||
end).should raise_error(ArgumentError)
|
||||
end
|
||||
end
|
||||
@@ -431,7 +496,7 @@ describe Google::APIClient do
|
||||
:api_method => 'latitude.currentLocation.get',
|
||||
:authenticated => false
|
||||
)
|
||||
request.to_http_request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
||||
request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
||||
'https://www.googleapis.com/latitude/v1/currentLocation'
|
||||
end
|
||||
|
||||
@@ -440,7 +505,7 @@ describe Google::APIClient do
|
||||
:api_method => @latitude.current_location.get,
|
||||
:authenticated => false
|
||||
)
|
||||
request.to_http_request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
||||
request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
||||
'https://www.googleapis.com/latitude/v1/currentLocation'
|
||||
end
|
||||
|
||||
@@ -491,21 +556,29 @@ describe Google::APIClient do
|
||||
end
|
||||
|
||||
it 'should generate requests against the correct URIs' do
|
||||
request = CLIENT.generate_request(
|
||||
conn = stub_connection do |stub|
|
||||
stub.get('/moderator/v1/profiles/@me') do |env|
|
||||
end
|
||||
end
|
||||
request = CLIENT.execute(
|
||||
:api_method => 'moderator.profiles.get',
|
||||
:authenticated => false
|
||||
:authenticated => false,
|
||||
:connection => conn
|
||||
)
|
||||
request.to_http_request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
||||
'https://www.googleapis.com/moderator/v1/profiles/@me'
|
||||
conn.verify
|
||||
end
|
||||
|
||||
it 'should generate requests against the correct URIs' do
|
||||
request = CLIENT.generate_request(
|
||||
conn = stub_connection do |stub|
|
||||
stub.get('/moderator/v1/profiles/@me') do |env|
|
||||
end
|
||||
end
|
||||
request = CLIENT.execute(
|
||||
:api_method => @moderator.profiles.get,
|
||||
:authenticated => false
|
||||
:authenticated => false,
|
||||
:connection => conn
|
||||
)
|
||||
request.to_http_request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
||||
'https://www.googleapis.com/moderator/v1/profiles/@me'
|
||||
conn.verify
|
||||
end
|
||||
|
||||
it 'should not be able to execute requests without authorization' do
|
||||
@@ -551,21 +624,29 @@ describe Google::APIClient do
|
||||
end
|
||||
|
||||
it 'should generate requests against the correct URIs' do
|
||||
request = CLIENT.generate_request(
|
||||
conn = stub_connection do |stub|
|
||||
stub.get('/adsense/v1/adclients') do |env|
|
||||
end
|
||||
end
|
||||
request = CLIENT.execute(
|
||||
:api_method => 'adsense.adclients.list',
|
||||
:authenticated => false
|
||||
:authenticated => false,
|
||||
:connection => conn
|
||||
)
|
||||
request.to_http_request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
||||
'https://www.googleapis.com/adsense/v1/adclients'
|
||||
conn.verify
|
||||
end
|
||||
|
||||
it 'should generate requests against the correct URIs' do
|
||||
request = CLIENT.generate_request(
|
||||
conn = stub_connection do |stub|
|
||||
stub.get('/adsense/v1/adclients') do |env|
|
||||
end
|
||||
end
|
||||
request = CLIENT.execute(
|
||||
:api_method => @adsense.adclients.list,
|
||||
:authenticated => false
|
||||
:authenticated => false,
|
||||
:connection => conn
|
||||
)
|
||||
request.to_http_request.to_env(Faraday.default_connection)[:url].to_s.should ===
|
||||
'https://www.googleapis.com/adsense/v1/adclients'
|
||||
conn.verify
|
||||
end
|
||||
|
||||
it 'should not be able to execute requests without authorization' do
|
||||
@@ -578,16 +659,20 @@ describe Google::APIClient do
|
||||
|
||||
it 'should fail when validating missing required parameters' do
|
||||
(lambda do
|
||||
CLIENT.generate_request(
|
||||
CLIENT.execute(
|
||||
:api_method => @adsense.reports.generate,
|
||||
:authenticated => false
|
||||
).to_http_request
|
||||
)
|
||||
end).should raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
it 'should succeed when validating parameters in a correct call' do
|
||||
conn = stub_connection do |stub|
|
||||
stub.get('/adsense/v1/reports?dimension=DATE&endDate=2010-01-01&metric=PAGE_VIEWS&startDate=2000-01-01') do |env|
|
||||
end
|
||||
end
|
||||
(lambda do
|
||||
CLIENT.generate_request(
|
||||
CLIENT.execute(
|
||||
:api_method => @adsense.reports.generate,
|
||||
:parameters => {
|
||||
'startDate' => '2000-01-01',
|
||||
@@ -595,14 +680,16 @@ describe Google::APIClient do
|
||||
'dimension' => 'DATE',
|
||||
'metric' => 'PAGE_VIEWS'
|
||||
},
|
||||
:authenticated => false
|
||||
).to_http_request
|
||||
:authenticated => false,
|
||||
:connection => conn
|
||||
)
|
||||
end).should_not raise_error
|
||||
conn.verify
|
||||
end
|
||||
|
||||
it 'should fail when validating parameters with invalid values' do
|
||||
(lambda do
|
||||
CLIENT.generate_request(
|
||||
CLIENT.execute(
|
||||
:api_method => @adsense.reports.generate,
|
||||
:parameters => {
|
||||
'startDate' => '2000-01-01',
|
||||
@@ -611,13 +698,19 @@ describe Google::APIClient do
|
||||
'metric' => 'PAGE_VIEWS'
|
||||
},
|
||||
:authenticated => false
|
||||
).to_http_request
|
||||
)
|
||||
end).should raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
it 'should succeed when validating repeated parameters in a correct call' do
|
||||
conn = stub_connection do |stub|
|
||||
stub.get('/adsense/v1/reports?dimension%5B%5D=DATE&dimension%5B%5D=PRODUCT_CODE'+
|
||||
'&endDate=2010-01-01&metric%5B%5D=CLICKS&metric%5B%5D=PAGE_VIEWS&'+
|
||||
'startDate=2000-01-01') do |env|
|
||||
end
|
||||
end
|
||||
(lambda do
|
||||
CLIENT.generate_request(
|
||||
CLIENT.execute(
|
||||
:api_method => @adsense.reports.generate,
|
||||
:parameters => {
|
||||
'startDate' => '2000-01-01',
|
||||
@@ -625,14 +718,16 @@ describe Google::APIClient do
|
||||
'dimension' => ['DATE', 'PRODUCT_CODE'],
|
||||
'metric' => ['PAGE_VIEWS', 'CLICKS']
|
||||
},
|
||||
:authenticated => false
|
||||
:authenticated => false,
|
||||
:connection => conn
|
||||
)
|
||||
end).should_not raise_error
|
||||
conn.verify
|
||||
end
|
||||
|
||||
it 'should fail when validating incorrect repeated parameters' do
|
||||
(lambda do
|
||||
CLIENT.generate_request(
|
||||
CLIENT.execute(
|
||||
:api_method => @adsense.reports.generate,
|
||||
:parameters => {
|
||||
'startDate' => '2000-01-01',
|
||||
@@ -641,7 +736,7 @@ describe Google::APIClient do
|
||||
'metric' => ['PAGE_VIEWS', 'CLICKS']
|
||||
},
|
||||
:authenticated => false
|
||||
).to_http_request
|
||||
)
|
||||
end).should raise_error(ArgumentError)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -78,49 +78,49 @@ describe Google::APIClient::ResumableUpload do
|
||||
|
||||
it 'should consider 20x status as complete' do
|
||||
request = @uploader.to_http_request
|
||||
@uploader.process_response(mock_result(200))
|
||||
@uploader.process_http_response(mock_result(200))
|
||||
@uploader.complete?.should == true
|
||||
end
|
||||
|
||||
it 'should consider 30x status as incomplete' do
|
||||
request = @uploader.to_http_request
|
||||
@uploader.process_response(mock_result(308))
|
||||
@uploader.process_http_response(mock_result(308))
|
||||
@uploader.complete?.should == false
|
||||
@uploader.expired?.should == false
|
||||
end
|
||||
|
||||
it 'should consider 40x status as fatal' do
|
||||
request = @uploader.to_http_request
|
||||
@uploader.process_response(mock_result(404))
|
||||
@uploader.process_http_response(mock_result(404))
|
||||
@uploader.expired?.should == true
|
||||
end
|
||||
|
||||
it 'should detect changes to location' do
|
||||
request = @uploader.to_http_request
|
||||
@uploader.process_response(mock_result(308, 'location' => 'https://www.googleapis.com/upload/drive/v1/files/abcdef'))
|
||||
@uploader.process_http_response(mock_result(308, 'location' => 'https://www.googleapis.com/upload/drive/v1/files/abcdef'))
|
||||
@uploader.uri.to_s.should == 'https://www.googleapis.com/upload/drive/v1/files/abcdef'
|
||||
end
|
||||
|
||||
it 'should resume from the saved range reported by the server' do
|
||||
@uploader.chunk_size = 200
|
||||
request = @uploader.to_http_request # Send bytes 0-199, only 0-99 saved
|
||||
@uploader.process_response(mock_result(308, 'range' => '0-99'))
|
||||
request = @uploader.to_http_request # Send bytes 100-299
|
||||
request.headers['Content-Range'].should == "bytes 100-299/#{@media.length}"
|
||||
request.headers['Content-length'].should == "200"
|
||||
@uploader.to_http_request # Send bytes 0-199, only 0-99 saved
|
||||
@uploader.process_http_response(mock_result(308, 'range' => '0-99'))
|
||||
method, url, headers, body = @uploader.to_http_request # Send bytes 100-299
|
||||
headers['Content-Range'].should == "bytes 100-299/#{@media.length}"
|
||||
headers['Content-length'].should == "200"
|
||||
end
|
||||
|
||||
it 'should resync the offset after 5xx errors' do
|
||||
@uploader.chunk_size = 200
|
||||
request = @uploader.to_http_request
|
||||
@uploader.process_response(mock_result(500)) # Invalidates range
|
||||
request = @uploader.to_http_request # Resync
|
||||
request.headers['Content-Range'].should == "bytes */#{@media.length}"
|
||||
request.headers['Content-length'].should == "0"
|
||||
@uploader.process_response(mock_result(308, 'range' => '0-99'))
|
||||
request = @uploader.to_http_request # Send next chunk at correct range
|
||||
request.headers['Content-Range'].should == "bytes 100-299/#{@media.length}"
|
||||
request.headers['Content-length'].should == "200"
|
||||
@uploader.to_http_request
|
||||
@uploader.process_http_response(mock_result(500)) # Invalidates range
|
||||
method, url, headers, body = @uploader.to_http_request # Resync
|
||||
headers['Content-Range'].should == "bytes */#{@media.length}"
|
||||
headers['Content-length'].should == "0"
|
||||
@uploader.process_http_response(mock_result(308, 'range' => '0-99'))
|
||||
method, url, headers, body = @uploader.to_http_request # Send next chunk at correct range
|
||||
headers['Content-Range'].should == "bytes 100-299/#{@media.length}"
|
||||
headers['Content-length'].should == "200"
|
||||
end
|
||||
|
||||
def mock_result(status, headers = {})
|
||||
|
||||
@@ -82,7 +82,7 @@ describe Google::APIClient::Result do
|
||||
reference = @result.next_page
|
||||
Hash[reference.parameters].should include('pageToken')
|
||||
Hash[reference.parameters]['pageToken'].should == 'NEXT+PAGE+TOKEN'
|
||||
url = reference.to_http_request.to_env(Faraday.default_connection)[:url]
|
||||
url = reference.to_env(Faraday.default_connection)[:url]
|
||||
url.to_s.should include('pageToken=NEXT%2BPAGE%2BTOKEN')
|
||||
end
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ require 'spec_helper'
|
||||
require 'google/api_client'
|
||||
|
||||
describe Google::APIClient::JWTAsserter do
|
||||
include ConnectionHelpers
|
||||
|
||||
before do
|
||||
@key = OpenSSL::PKey::RSA.new 2048
|
||||
@@ -33,7 +34,7 @@ describe Google::APIClient::JWTAsserter do
|
||||
end
|
||||
|
||||
it 'should send valid access token request' do
|
||||
stubs = Faraday::Adapter::Test::Stubs.new do |stub|
|
||||
conn = stub_connection do |stub|
|
||||
stub.post('/o/oauth2/token') do |env|
|
||||
params = Addressable::URI.form_unencode(env[:body])
|
||||
JWT.decode(params.assoc("assertion").last, @key.public_key)
|
||||
@@ -45,14 +46,11 @@ describe Google::APIClient::JWTAsserter do
|
||||
}']
|
||||
end
|
||||
end
|
||||
connection = Faraday.new(:url => 'https://accounts.google.com') do |builder|
|
||||
builder.adapter(:test, stubs)
|
||||
end
|
||||
|
||||
asserter = Google::APIClient::JWTAsserter.new('client1', 'scope1 scope2', @key)
|
||||
auth = asserter.authorize(nil, { :connection => connection})
|
||||
auth = asserter.authorize(nil, { :connection => conn })
|
||||
auth.should_not == nil?
|
||||
auth.access_token.should == "1/abcdef1234567890"
|
||||
conn.verify
|
||||
end
|
||||
end
|
||||
|
||||
Reference in new issue
Block a user