Added option to support manually specified discovery URI.
[arvados.git] / spec / google / api_client_spec.rb
1 # Copyright 2010 Google Inc.
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 #      http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 require 'spec_helper'
16
17 require 'signet/oauth_1/client'
18 require 'httpadapter/adapters/net_http'
19
20 require 'google/api_client'
21 require 'google/api_client/version'
22 require 'google/api_client/parsers/json_parser'
23
24 describe Google::APIClient, 'with default configuration' do
25   before do
26     @client = Google::APIClient.new
27   end
28
29   it 'should make its version number available' do
30     ::Google::APIClient::VERSION::STRING.should be_instance_of(String)
31   end
32
33   it 'should use the default JSON parser' do
34     @client.parser.should be(Google::APIClient::JSONParser)
35   end
36
37   it 'should not use an authorization mechanism' do
38     @client.authorization.should be_nil
39   end
40 end
41
42 describe Google::APIClient, 'with default oauth configuration' do
43   before do
44     @client = Google::APIClient.new(:authorization => :oauth_1)
45   end
46
47   it 'should make its version number available' do
48     ::Google::APIClient::VERSION::STRING.should be_instance_of(String)
49   end
50
51   it 'should use the default JSON parser' do
52     @client.parser.should be(Google::APIClient::JSONParser)
53   end
54
55   it 'should use the default OAuth1 client configuration' do
56     @client.authorization.temporary_credential_uri.to_s.should ==
57       'https://www.google.com/accounts/OAuthGetRequestToken'
58     @client.authorization.authorization_uri.to_s.should include(
59       'https://www.google.com/accounts/OAuthAuthorizeToken'
60     )
61     @client.authorization.token_credential_uri.to_s.should ==
62       'https://www.google.com/accounts/OAuthGetAccessToken'
63     @client.authorization.client_credential_key.should == 'anonymous'
64     @client.authorization.client_credential_secret.should == 'anonymous'
65   end
66 end
67
68 describe Google::APIClient, 'with custom pluggable parser' do
69   before do
70     class FakeJsonParser
71     end
72
73     @client = Google::APIClient.new(:parser => FakeJsonParser.new)
74   end
75
76   it 'should use the custom parser' do
77     @client.parser.should be_instance_of(FakeJsonParser)
78   end
79 end