| 
									
										
										
										
											2012-05-11 09:55:00 +00:00
										 |  |  | # encoding:utf-8 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-18 00:30:02 +00:00
										 |  |  | # Copyright 2010 Google Inc. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # Licensed under the Apache License, Version 2.0 (the "License"); | 
					
						
							|  |  |  | # you may not use this file except in compliance with the License. | 
					
						
							|  |  |  | # You may obtain a copy of the License at | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | #      http://www.apache.org/licenses/LICENSE-2.0 | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # Unless required by applicable law or agreed to in writing, software | 
					
						
							|  |  |  | # distributed under the License is distributed on an "AS IS" BASIS, | 
					
						
							|  |  |  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
					
						
							|  |  |  | # See the License for the specific language governing permissions and | 
					
						
							|  |  |  | # limitations under the License. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-11 09:55:00 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-18 00:30:02 +00:00
										 |  |  | require 'spec_helper' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  | gem 'faraday', '~> 0.7.0' | 
					
						
							|  |  |  | require 'faraday' | 
					
						
							|  |  |  | require 'faraday/utils' | 
					
						
							| 
									
										
										
										
											2012-01-05 10:05:56 +00:00
										 |  |  | require 'multi_json' | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | gem 'signet', '~> 0.3.0' | 
					
						
							| 
									
										
										
										
											2010-09-18 00:30:02 +00:00
										 |  |  | require 'signet/oauth_1/client' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require 'google/api_client' | 
					
						
							|  |  |  | require 'google/api_client/version' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  | describe Google::APIClient do | 
					
						
							| 
									
										
										
										
											2010-09-28 23:09:07 +00:00
										 |  |  |   before do | 
					
						
							|  |  |  |     @client = Google::APIClient.new | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |   it 'should raise a type error for bogus authorization' do | 
					
						
							| 
									
										
										
										
											2010-09-28 23:09:07 +00:00
										 |  |  |     (lambda do | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       Google::APIClient.new(:authorization => 42) | 
					
						
							|  |  |  |     end).should raise_error(TypeError) | 
					
						
							| 
									
										
										
										
											2010-09-28 23:09:07 +00:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |   it 'should not be able to retrieve the discovery document for a bogus API' do | 
					
						
							| 
									
										
										
										
											2010-09-28 23:09:07 +00:00
										 |  |  |     (lambda do | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       @client.discovery_document('bogus') | 
					
						
							| 
									
										
										
										
											2010-09-28 23:09:07 +00:00
										 |  |  |     end).should raise_error(Google::APIClient::TransmissionError) | 
					
						
							| 
									
										
										
										
											2010-09-30 21:33:23 +00:00
										 |  |  |     (lambda do | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       @client.discovered_api('bogus') | 
					
						
							|  |  |  |     end).should raise_error(Google::APIClient::TransmissionError) | 
					
						
							| 
									
										
										
										
											2010-09-30 21:33:23 +00:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it 'should raise an error for bogus services' do | 
					
						
							|  |  |  |     (lambda do | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       @client.discovered_api(42) | 
					
						
							| 
									
										
										
										
											2010-09-30 21:33:23 +00:00
										 |  |  |     end).should raise_error(TypeError) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it 'should raise an error for bogus services' do | 
					
						
							|  |  |  |     (lambda do | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       @client.preferred_version(42) | 
					
						
							| 
									
										
										
										
											2010-09-30 21:33:23 +00:00
										 |  |  |     end).should raise_error(TypeError) | 
					
						
							| 
									
										
										
										
											2010-09-18 00:30:02 +00:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-30 21:33:23 +00:00
										 |  |  |   it 'should raise an error for bogus methods' do | 
					
						
							|  |  |  |     (lambda do | 
					
						
							|  |  |  |       @client.generate_request(42) | 
					
						
							|  |  |  |     end).should raise_error(TypeError) | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2010-10-09 02:41:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |   it 'should not return a preferred version for bogus service names' do | 
					
						
							|  |  |  |     @client.preferred_version('bogus').should == nil | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe 'with the prediction API' do | 
					
						
							|  |  |  |     before do | 
					
						
							|  |  |  |       @client.authorization = nil | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |       # The prediction API no longer exposes a v1, so we have to be | 
					
						
							|  |  |  |       # careful about looking up the wrong API version. | 
					
						
							|  |  |  |       @prediction = @client.discovered_api('prediction', 'v1.2') | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should correctly determine the discovery URI' do | 
					
						
							|  |  |  |       @client.discovery_uri('prediction').should === | 
					
						
							| 
									
										
										
										
											2011-05-12 20:14:15 +00:00
										 |  |  |         'https://www.googleapis.com/discovery/v1/apis/prediction/v1/rest' | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-22 10:49:46 +00:00
										 |  |  |     it 'should correctly determine the discovery URI if :user_ip is set' do | 
					
						
							|  |  |  |       @client.user_ip = '127.0.0.1' | 
					
						
							|  |  |  |       request = @client.generate_request( | 
					
						
							|  |  |  |         :http_method => 'GET', | 
					
						
							|  |  |  |         :uri => @client.discovery_uri('prediction', 'v1.2'), | 
					
						
							|  |  |  |         :authenticated => false | 
					
						
							|  |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       request.to_env(Faraday.default_connection)[:url].should === ( | 
					
						
							| 
									
										
										
										
											2011-09-22 10:49:46 +00:00
										 |  |  |         'https://www.googleapis.com/discovery/v1/apis/prediction/v1.2/rest' + | 
					
						
							|  |  |  |         '?userIp=127.0.0.1' | 
					
						
							|  |  |  |       ) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should correctly determine the discovery URI if :key is set' do | 
					
						
							|  |  |  |       @client.key = 'qwerty' | 
					
						
							|  |  |  |       request = @client.generate_request( | 
					
						
							|  |  |  |         :http_method => 'GET', | 
					
						
							|  |  |  |         :uri => @client.discovery_uri('prediction', 'v1.2'), | 
					
						
							|  |  |  |         :authenticated => false | 
					
						
							|  |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       request.to_env(Faraday.default_connection)[:url].should === ( | 
					
						
							| 
									
										
										
										
											2011-09-22 10:49:46 +00:00
										 |  |  |         'https://www.googleapis.com/discovery/v1/apis/prediction/v1.2/rest' + | 
					
						
							|  |  |  |         '?key=qwerty' | 
					
						
							|  |  |  |       ) | 
					
						
							|  |  |  |     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( | 
					
						
							|  |  |  |         :http_method => 'GET', | 
					
						
							|  |  |  |         :uri => @client.discovery_uri('prediction', 'v1.2'), | 
					
						
							|  |  |  |         :authenticated => false | 
					
						
							|  |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       request.to_env(Faraday.default_connection)[:url].query_values.should == { | 
					
						
							|  |  |  |         'key' => 'qwerty', | 
					
						
							|  |  |  |         'userIp' => '127.0.0.1' | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2011-09-22 10:49:46 +00:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     it 'should correctly generate API objects' do | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |       @client.discovered_api('prediction', 'v1.2').name.should == 'prediction' | 
					
						
							|  |  |  |       @client.discovered_api('prediction', 'v1.2').version.should == 'v1.2' | 
					
						
							|  |  |  |       @client.discovered_api(:prediction, 'v1.2').name.should == 'prediction' | 
					
						
							|  |  |  |       @client.discovered_api(:prediction, 'v1.2').version.should == 'v1.2' | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should discover methods' do | 
					
						
							|  |  |  |       @client.discovered_method( | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         'prediction.training.insert', 'prediction', 'v1.2' | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       ).name.should == 'insert' | 
					
						
							|  |  |  |       @client.discovered_method( | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         :'prediction.training.insert', :prediction, 'v1.2' | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       ).name.should == 'insert' | 
					
						
							|  |  |  |       @client.discovered_method( | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         'prediction.training.delete', 'prediction', 'v1.2' | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       ).name.should == 'delete' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-16 19:05:24 +00:00
										 |  |  |     it 'should define the origin API in discovered methods' do | 
					
						
							|  |  |  |       @client.discovered_method( | 
					
						
							|  |  |  |         'prediction.training.insert', 'prediction', 'v1.2' | 
					
						
							|  |  |  |       ).api.name.should == 'prediction' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     it 'should not find methods that are not in the discovery document' do | 
					
						
							|  |  |  |       @client.discovered_method( | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         'prediction.bogus', 'prediction', 'v1.2' | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       ).should == nil | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should raise an error for bogus methods' do | 
					
						
							|  |  |  |       (lambda do | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         @client.discovered_method(42, 'prediction', 'v1.2') | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       end).should raise_error(TypeError) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should raise an error for bogus methods' do | 
					
						
							|  |  |  |       (lambda do | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         @client.generate_request(@client.discovered_api('prediction', 'v1.2')) | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       end).should raise_error(TypeError) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should correctly determine the preferred version' do | 
					
						
							|  |  |  |       @client.preferred_version('prediction').version.should_not == 'v1' | 
					
						
							|  |  |  |       @client.preferred_version(:prediction).version.should_not == 'v1' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-16 19:05:24 +00:00
										 |  |  |     it 'should return a batch path' do | 
					
						
							|  |  |  |       @client.discovered_api('prediction', 'v1.2').batch_path.should_not be_nil | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     it 'should generate valid requests' do | 
					
						
							|  |  |  |       request = @client.generate_request( | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         :api_method => @prediction.training.insert, | 
					
						
							|  |  |  |         :parameters => {'data' => '12345', } | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       request.method.should == :post | 
					
						
							|  |  |  |       request.to_env(Faraday.default_connection)[:url].should === | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         'https://www.googleapis.com/prediction/v1.2/training?data=12345' | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       request.headers.should be_empty | 
					
						
							|  |  |  |       request.body.should == '' | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-01 14:04:40 +00:00
										 |  |  |     it 'should generate valid requests when repeated parameters are passed' do | 
					
						
							|  |  |  |       request = @client.generate_request( | 
					
						
							|  |  |  |         :api_method => @prediction.training.insert, | 
					
						
							|  |  |  |         :parameters => [['data', '1'],['data','2']] | 
					
						
							|  |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       request.method.should == :post | 
					
						
							|  |  |  |       request.to_env(Faraday.default_connection)[:url].should === | 
					
						
							| 
									
										
										
										
											2011-12-01 14:04:40 +00:00
										 |  |  |         'https://www.googleapis.com/prediction/v1.2/training?data=1&data=2' | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     it 'should generate requests against the correct URIs' do | 
					
						
							|  |  |  |       request = @client.generate_request( | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         :api_method => @prediction.training.insert, | 
					
						
							|  |  |  |         :parameters => {'data' => '12345'} | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       request.to_env(Faraday.default_connection)[:url].should === | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         'https://www.googleapis.com/prediction/v1.2/training?data=12345' | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should generate requests against the correct URIs' do | 
					
						
							|  |  |  |       request = @client.generate_request( | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         :api_method => @prediction.training.insert, | 
					
						
							|  |  |  |         :parameters => {'data' => '12345'} | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       request.to_env(Faraday.default_connection)[:url].should === | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         'https://www.googleapis.com/prediction/v1.2/training?data=12345' | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should allow modification to the base URIs for testing purposes' do | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |       prediction = @client.discovered_api('prediction', 'v1.2') | 
					
						
							| 
									
										
										
										
											2011-05-12 20:14:15 +00:00
										 |  |  |       prediction.method_base = | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         'https://testing-domain.googleapis.com/prediction/v1.2/' | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       request = @client.generate_request( | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         :api_method => prediction.training.insert, | 
					
						
							|  |  |  |         :parameters => {'data' => '123'} | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       request.to_env(Faraday.default_connection)[:url].should === ( | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         'https://testing-domain.googleapis.com/' + | 
					
						
							|  |  |  |         'prediction/v1.2/training?data=123' | 
					
						
							|  |  |  |       ) | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     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( | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         :api_method => @prediction.training.insert, | 
					
						
							|  |  |  |         :parameters => {'data' => '12345'} | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       request.headers.should have_key('Authorization') | 
					
						
							|  |  |  |       request.headers['Authorization'].should =~ /^OAuth/ | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should generate OAuth 2 requests' do | 
					
						
							|  |  |  |       @client.authorization = :oauth_2 | 
					
						
							|  |  |  |       @client.authorization.access_token = '12345' | 
					
						
							|  |  |  |       request = @client.generate_request( | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         :api_method => @prediction.training.insert, | 
					
						
							|  |  |  |         :parameters => {'data' => '12345'} | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       request.headers.should have_key('Authorization') | 
					
						
							|  |  |  |       request.headers['Authorization'].should =~ /^Bearer/ | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should not be able to execute improperly authorized requests' do | 
					
						
							|  |  |  |       @client.authorization = :oauth_1 | 
					
						
							|  |  |  |       @client.authorization.token_credential_key = '12345' | 
					
						
							|  |  |  |       @client.authorization.token_credential_secret = '12345' | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |       result = @client.execute( | 
					
						
							|  |  |  |         @prediction.training.insert, | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |         {'data' => '12345'} | 
					
						
							|  |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       result.response.status.should == 401
 | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should not be able to execute improperly authorized requests' do | 
					
						
							|  |  |  |       @client.authorization = :oauth_2 | 
					
						
							|  |  |  |       @client.authorization.access_token = '12345' | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |       result = @client.execute( | 
					
						
							|  |  |  |         @prediction.training.insert, | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |         {'data' => '12345'} | 
					
						
							|  |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       result.response.status.should == 401
 | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     it 'should not be able to execute improperly authorized requests' do | 
					
						
							|  |  |  |       (lambda do | 
					
						
							|  |  |  |         @client.authorization = :oauth_1 | 
					
						
							|  |  |  |         @client.authorization.token_credential_key = '12345' | 
					
						
							|  |  |  |         @client.authorization.token_credential_secret = '12345' | 
					
						
							|  |  |  |         result = @client.execute!( | 
					
						
							|  |  |  |           @prediction.training.insert, | 
					
						
							|  |  |  |           {'data' => '12345'} | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |       end).should raise_error(Google::APIClient::ClientError) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should not be able to execute improperly authorized requests' do | 
					
						
							|  |  |  |       (lambda do | 
					
						
							|  |  |  |         @client.authorization = :oauth_2 | 
					
						
							|  |  |  |         @client.authorization.access_token = '12345' | 
					
						
							|  |  |  |         result = @client.execute!( | 
					
						
							|  |  |  |           @prediction.training.insert, | 
					
						
							|  |  |  |           {'data' => '12345'} | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |       end).should raise_error(Google::APIClient::ClientError) | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2011-08-02 20:20:54 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     it 'should correctly handle unnamed parameters' do | 
					
						
							|  |  |  |       @client.authorization = :oauth_2 | 
					
						
							|  |  |  |       @client.authorization.access_token = '12345' | 
					
						
							|  |  |  |       result = @client.execute( | 
					
						
							|  |  |  |         @prediction.training.insert, | 
					
						
							|  |  |  |         {}, | 
					
						
							| 
									
										
										
										
											2012-04-24 11:39:25 +00:00
										 |  |  |         MultiJson.dump({"id" => "bucket/object"}), | 
					
						
							| 
									
										
										
										
											2011-08-02 20:20:54 +00:00
										 |  |  |         {'Content-Type' => 'application/json'} | 
					
						
							|  |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       result.request.headers['Content-Type'].should == 'application/json' | 
					
						
							| 
									
										
										
										
											2011-08-02 20:20:54 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-16 13:40:42 +00:00
										 |  |  |   describe 'with the plus API' do | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     before do | 
					
						
							|  |  |  |       @client.authorization = nil | 
					
						
							| 
									
										
										
										
											2011-11-16 13:40:42 +00:00
										 |  |  |       @plus = @client.discovered_api('plus') | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should correctly determine the discovery URI' do | 
					
						
							| 
									
										
										
										
											2011-11-16 13:40:42 +00:00
										 |  |  |       @client.discovery_uri('plus').should === | 
					
						
							|  |  |  |         'https://www.googleapis.com/discovery/v1/apis/plus/v1/rest' | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should find APIs that are in the discovery document' do | 
					
						
							| 
									
										
										
										
											2011-11-16 13:40:42 +00:00
										 |  |  |       @client.discovered_api('plus').name.should == 'plus' | 
					
						
							|  |  |  |       @client.discovered_api('plus').version.should == 'v1' | 
					
						
							|  |  |  |       @client.discovered_api(:plus).name.should == 'plus' | 
					
						
							|  |  |  |       @client.discovered_api(:plus).version.should == 'v1' | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should find methods that are in the discovery document' do | 
					
						
							|  |  |  |       # TODO(bobaman) Fix this when the RPC names are correct | 
					
						
							|  |  |  |       @client.discovered_method( | 
					
						
							| 
									
										
										
										
											2011-11-16 13:40:42 +00:00
										 |  |  |         'plus.activities.list', 'plus' | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       ).name.should == 'list' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-16 19:05:24 +00:00
										 |  |  |     it 'should define the origin API in discovered methods' do | 
					
						
							|  |  |  |       @client.discovered_method( | 
					
						
							|  |  |  |         'plus.activities.list', 'plus' | 
					
						
							|  |  |  |       ).api.name.should == 'plus' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     it 'should not find methods that are not in the discovery document' do | 
					
						
							| 
									
										
										
										
											2011-11-16 13:40:42 +00:00
										 |  |  |       @client.discovered_method('plus.bogus', 'plus').should == nil | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should generate requests against the correct URIs' do | 
					
						
							|  |  |  |       request = @client.generate_request( | 
					
						
							| 
									
										
										
										
											2011-11-16 13:40:42 +00:00
										 |  |  |         :api_method => @plus.activities.list, | 
					
						
							|  |  |  |         :parameters => { | 
					
						
							|  |  |  |           'userId' => '107807692475771887386', 'collection' => 'public' | 
					
						
							|  |  |  |         }, | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         :authenticated => false | 
					
						
							| 
									
										
										
										
											2010-09-30 21:33:23 +00:00
										 |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       request.to_env(Faraday.default_connection)[:url].should === ( | 
					
						
							| 
									
										
										
										
											2011-11-16 13:40:42 +00:00
										 |  |  |         'https://www.googleapis.com/plus/v1/' + | 
					
						
							|  |  |  |         'people/107807692475771887386/activities/public' | 
					
						
							|  |  |  |       ) | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should correctly validate parameters' do | 
					
						
							|  |  |  |       (lambda do | 
					
						
							|  |  |  |         @client.generate_request( | 
					
						
							| 
									
										
										
										
											2011-11-16 13:40:42 +00:00
										 |  |  |           :api_method => @plus.activities.list, | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |           :parameters => {'alt' => 'json'}, | 
					
						
							|  |  |  |           :authenticated => false | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |         ) | 
					
						
							|  |  |  |       end).should raise_error(ArgumentError) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should correctly validate parameters' do | 
					
						
							|  |  |  |       (lambda do | 
					
						
							|  |  |  |         @client.generate_request( | 
					
						
							| 
									
										
										
										
											2011-11-16 13:40:42 +00:00
										 |  |  |           :api_method => @plus.activities.list, | 
					
						
							|  |  |  |           :parameters => { | 
					
						
							|  |  |  |             'userId' => '107807692475771887386', 'collection' => 'bogus' | 
					
						
							|  |  |  |           }, | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |           :authenticated => false | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |         ) | 
					
						
							|  |  |  |       end).should raise_error(ArgumentError) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe 'with the latitude API' do | 
					
						
							|  |  |  |     before do | 
					
						
							|  |  |  |       @client.authorization = nil | 
					
						
							|  |  |  |       @latitude = @client.discovered_api('latitude') | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should correctly determine the discovery URI' do | 
					
						
							|  |  |  |       @client.discovery_uri('latitude').should === | 
					
						
							| 
									
										
										
										
											2011-05-12 20:14:15 +00:00
										 |  |  |         'https://www.googleapis.com/discovery/v1/apis/latitude/v1/rest' | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should find APIs that are in the discovery document' do | 
					
						
							|  |  |  |       @client.discovered_api('latitude').name.should == 'latitude' | 
					
						
							|  |  |  |       @client.discovered_api('latitude').version.should == 'v1' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-16 19:05:24 +00:00
										 |  |  |     it 'should return a batch path' do | 
					
						
							|  |  |  |       @client.discovered_api('latitude').batch_path.should_not be_nil | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     it 'should find methods that are in the discovery document' do | 
					
						
							|  |  |  |       @client.discovered_method( | 
					
						
							|  |  |  |         'latitude.currentLocation.get', 'latitude' | 
					
						
							|  |  |  |       ).name.should == 'get' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-16 19:05:24 +00:00
										 |  |  |     it 'should define the origin API in discovered methods' do | 
					
						
							|  |  |  |       @client.discovered_method( | 
					
						
							|  |  |  |         'latitude.currentLocation.get', 'latitude' | 
					
						
							|  |  |  |       ).api.name.should == 'latitude' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     it 'should not find methods that are not in the discovery document' do | 
					
						
							|  |  |  |       @client.discovered_method('latitude.bogus', 'latitude').should == nil | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should generate requests against the correct URIs' do | 
					
						
							|  |  |  |       request = @client.generate_request( | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         :api_method => 'latitude.currentLocation.get', | 
					
						
							|  |  |  |         :authenticated => false | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       request.to_env(Faraday.default_connection)[:url].should === | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |         'https://www.googleapis.com/latitude/v1/currentLocation' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should generate requests against the correct URIs' do | 
					
						
							|  |  |  |       request = @client.generate_request( | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         :api_method => @latitude.current_location.get, | 
					
						
							|  |  |  |         :authenticated => false | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       request.to_env(Faraday.default_connection)[:url].should === | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |         'https://www.googleapis.com/latitude/v1/currentLocation' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should not be able to execute requests without authorization' do | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |       result = @client.execute( | 
					
						
							|  |  |  |         :api_method => 'latitude.currentLocation.get', | 
					
						
							|  |  |  |         :authenticated => false | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       result.response.status.should == 401
 | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe 'with the moderator API' do | 
					
						
							|  |  |  |     before do | 
					
						
							|  |  |  |       @client.authorization = nil | 
					
						
							|  |  |  |       @moderator = @client.discovered_api('moderator') | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should correctly determine the discovery URI' do | 
					
						
							|  |  |  |       @client.discovery_uri('moderator').should === | 
					
						
							| 
									
										
										
										
											2011-05-12 20:14:15 +00:00
										 |  |  |         'https://www.googleapis.com/discovery/v1/apis/moderator/v1/rest' | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should find APIs that are in the discovery document' do | 
					
						
							|  |  |  |       @client.discovered_api('moderator').name.should == 'moderator' | 
					
						
							|  |  |  |       @client.discovered_api('moderator').version.should == 'v1' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should find methods that are in the discovery document' do | 
					
						
							|  |  |  |       @client.discovered_method( | 
					
						
							|  |  |  |         'moderator.profiles.get', 'moderator' | 
					
						
							|  |  |  |       ).name.should == 'get' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-16 19:05:24 +00:00
										 |  |  |     it 'should define the origin API in discovered methods' do | 
					
						
							|  |  |  |       @client.discovered_method( | 
					
						
							|  |  |  |         'moderator.profiles.get', 'moderator' | 
					
						
							|  |  |  |       ).api.name.should == 'moderator' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     it 'should not find methods that are not in the discovery document' do | 
					
						
							|  |  |  |       @client.discovered_method('moderator.bogus', 'moderator').should == nil | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-16 19:05:24 +00:00
										 |  |  |     it 'should return a batch path' do | 
					
						
							|  |  |  |       @client.discovered_api('moderator').batch_path.should_not be_nil | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     it 'should generate requests against the correct URIs' do | 
					
						
							|  |  |  |       request = @client.generate_request( | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         :api_method => 'moderator.profiles.get', | 
					
						
							|  |  |  |         :authenticated => false | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       request.to_env(Faraday.default_connection)[:url].should === | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |         'https://www.googleapis.com/moderator/v1/profiles/@me' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should generate requests against the correct URIs' do | 
					
						
							|  |  |  |       request = @client.generate_request( | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         :api_method => @moderator.profiles.get, | 
					
						
							|  |  |  |         :authenticated => false | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       request.to_env(Faraday.default_connection)[:url].should === | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |         'https://www.googleapis.com/moderator/v1/profiles/@me' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should not be able to execute requests without authorization' do | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |       result = @client.execute( | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |         'moderator.profiles.get', | 
					
						
							|  |  |  |         {}, | 
					
						
							|  |  |  |         '', | 
					
						
							|  |  |  |         [], | 
					
						
							| 
									
										
										
										
											2011-07-29 22:07:04 +00:00
										 |  |  |         {:authenticated => false} | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |       ) | 
					
						
							| 
									
										
										
										
											2012-01-27 14:57:57 +00:00
										 |  |  |       result.response.status.should == 401
 | 
					
						
							| 
									
										
										
										
											2011-05-04 11:44:35 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2010-09-30 21:57:13 +00:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2012-05-11 09:48:30 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   describe 'with the adsense API' do | 
					
						
							|  |  |  |     before do | 
					
						
							|  |  |  |       @client.authorization = nil | 
					
						
							|  |  |  |       @adsense = @client.discovered_api('adsense', 'v1') | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should correctly determine the discovery URI' do | 
					
						
							|  |  |  |       @client.discovery_uri('adsense').should === | 
					
						
							|  |  |  |         'https://www.googleapis.com/discovery/v1/apis/adsense/v1/rest' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should find APIs that are in the discovery document' do | 
					
						
							|  |  |  |       @client.discovered_api('adsense').name.should == 'adsense' | 
					
						
							|  |  |  |       @client.discovered_api('adsense').version.should == 'v1' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-16 19:05:24 +00:00
										 |  |  |     it 'should return a batch path' do | 
					
						
							|  |  |  |       @client.discovered_api('adsense').batch_path.should_not be_nil | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-11 09:48:30 +00:00
										 |  |  |     it 'should find methods that are in the discovery document' do | 
					
						
							|  |  |  |       @client.discovered_method( | 
					
						
							|  |  |  |         'adsense.reports.generate', 'adsense' | 
					
						
							|  |  |  |       ).name.should == 'generate' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should not find methods that are not in the discovery document' do | 
					
						
							|  |  |  |       @client.discovered_method('adsense.bogus', 'adsense').should == nil | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should generate requests against the correct URIs' do | 
					
						
							|  |  |  |       request = @client.generate_request( | 
					
						
							|  |  |  |         :api_method => 'adsense.adclients.list', | 
					
						
							|  |  |  |         :authenticated => false | 
					
						
							|  |  |  |       ) | 
					
						
							|  |  |  |       request.to_env(Faraday.default_connection)[:url].should === | 
					
						
							|  |  |  |         'https://www.googleapis.com/adsense/v1/adclients' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should generate requests against the correct URIs' do | 
					
						
							|  |  |  |       request = @client.generate_request( | 
					
						
							|  |  |  |         :api_method => @adsense.adclients.list, | 
					
						
							|  |  |  |         :authenticated => false | 
					
						
							|  |  |  |       ) | 
					
						
							|  |  |  |       request.to_env(Faraday.default_connection)[:url].should === | 
					
						
							|  |  |  |         'https://www.googleapis.com/adsense/v1/adclients' | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should not be able to execute requests without authorization' do | 
					
						
							|  |  |  |       result = @client.execute( | 
					
						
							|  |  |  |         :api_method => 'adsense.adclients.list', | 
					
						
							|  |  |  |         :authenticated => false | 
					
						
							|  |  |  |       ) | 
					
						
							|  |  |  |       result.response.status.should == 401
 | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should fail when validating missing required parameters' do | 
					
						
							|  |  |  |       (lambda do | 
					
						
							|  |  |  |         @client.generate_request( | 
					
						
							|  |  |  |           :api_method => @adsense.reports.generate, | 
					
						
							|  |  |  |           :authenticated => false | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |       end).should raise_error(ArgumentError) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should succeed when validating parameters in a correct call' do | 
					
						
							|  |  |  |       (lambda do | 
					
						
							|  |  |  |         @client.generate_request( | 
					
						
							|  |  |  |           :api_method => @adsense.reports.generate, | 
					
						
							|  |  |  |           :parameters => { | 
					
						
							|  |  |  |             'startDate' => '2000-01-01', | 
					
						
							|  |  |  |             'endDate' => '2010-01-01', | 
					
						
							|  |  |  |             'dimension' => 'DATE', | 
					
						
							|  |  |  |             'metric' => 'PAGE_VIEWS' | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |           :authenticated => false | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |       end).should_not raise_error | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should fail when validating parameters with invalid values' do | 
					
						
							|  |  |  |       (lambda do | 
					
						
							|  |  |  |         @client.generate_request( | 
					
						
							|  |  |  |           :api_method => @adsense.reports.generate, | 
					
						
							|  |  |  |           :parameters => { | 
					
						
							|  |  |  |             'startDate' => '2000-01-01', | 
					
						
							|  |  |  |             'endDate' => '2010-01-01', | 
					
						
							|  |  |  |             'dimension' => 'BAD_CHARACTERS=-&*(£&', | 
					
						
							|  |  |  |             'metric' => 'PAGE_VIEWS' | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |           :authenticated => false | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |       end).should raise_error(ArgumentError) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should succeed when validating repeated parameters in a correct call' do | 
					
						
							|  |  |  |       (lambda do | 
					
						
							|  |  |  |         @client.generate_request( | 
					
						
							|  |  |  |           :api_method => @adsense.reports.generate, | 
					
						
							|  |  |  |           :parameters => { | 
					
						
							|  |  |  |             'startDate' => '2000-01-01', | 
					
						
							|  |  |  |             'endDate' => '2010-01-01', | 
					
						
							|  |  |  |             'dimension' => ['DATE', 'PRODUCT_CODE'], | 
					
						
							|  |  |  |             'metric' => ['PAGE_VIEWS', 'CLICKS'] | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |           :authenticated => false | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |       end).should_not raise_error | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'should fail when validating incorrect repeated parameters' do | 
					
						
							|  |  |  |       (lambda do | 
					
						
							|  |  |  |         @client.generate_request( | 
					
						
							|  |  |  |           :api_method => @adsense.reports.generate, | 
					
						
							|  |  |  |           :parameters => { | 
					
						
							|  |  |  |             'startDate' => '2000-01-01', | 
					
						
							|  |  |  |             'endDate' => '2010-01-01', | 
					
						
							|  |  |  |             'dimension' => ['DATE', 'BAD_CHARACTERS=-&*(£&'], | 
					
						
							|  |  |  |             'metric' => ['PAGE_VIEWS', 'CLICKS'] | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |           :authenticated => false | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |       end).should raise_error(ArgumentError) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2012-06-04 23:53:37 +00:00
										 |  |  |    | 
					
						
							|  |  |  |   describe 'with the Drive API' do | 
					
						
							|  |  |  |     before do | 
					
						
							|  |  |  |       @client.authorization = nil | 
					
						
							|  |  |  |       @drive = @client.discovered_api('drive', 'v1') | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     it 'should include media upload info methods' do | 
					
						
							|  |  |  |       @drive.files.insert.media_upload.should_not == nil | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     it 'should include accepted media types' do | 
					
						
							|  |  |  |       @drive.files.insert.media_upload.accepted_types.should_not be_empty | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     it 'should have an upload path' do | 
					
						
							|  |  |  |       @drive.files.insert.media_upload.uri_template.should_not == nil | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     it 'should have a max file size' do | 
					
						
							|  |  |  |       @drive.files.insert.media_upload.max_size.should_not == nil | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2010-09-30 21:57:13 +00:00
										 |  |  | end |