googleauth 0.8.0 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/.kokoro/build.sh +2 -34
  3. data/.kokoro/continuous/common.cfg +5 -0
  4. data/.kokoro/continuous/linux.cfg +1 -1
  5. data/.kokoro/osx.sh +2 -33
  6. data/.kokoro/presubmit/common.cfg +5 -0
  7. data/.kokoro/presubmit/linux.cfg +1 -1
  8. data/.kokoro/release.cfg +53 -0
  9. data/.kokoro/trampoline.sh +3 -23
  10. data/.kokoro/windows.sh +2 -30
  11. data/.rubocop.yml +7 -24
  12. data/CHANGELOG.md +24 -39
  13. data/Gemfile +14 -14
  14. data/README.md +21 -1
  15. data/Rakefile +84 -10
  16. data/googleauth.gemspec +23 -23
  17. data/lib/googleauth.rb +6 -6
  18. data/lib/googleauth/application_default.rb +11 -11
  19. data/lib/googleauth/client_id.rb +16 -16
  20. data/lib/googleauth/compute_engine.rb +27 -27
  21. data/lib/googleauth/credentials.rb +35 -37
  22. data/lib/googleauth/credentials_loader.rb +64 -67
  23. data/lib/googleauth/default_credentials.rb +18 -18
  24. data/lib/googleauth/iam.rb +9 -9
  25. data/lib/googleauth/json_key_reader.rb +6 -6
  26. data/lib/googleauth/scope_util.rb +11 -11
  27. data/lib/googleauth/service_account.rb +42 -42
  28. data/lib/googleauth/signet.rb +15 -17
  29. data/lib/googleauth/stores/file_token_store.rb +8 -8
  30. data/lib/googleauth/stores/redis_token_store.rb +17 -17
  31. data/lib/googleauth/token_store.rb +6 -6
  32. data/lib/googleauth/user_authorizer.rb +55 -59
  33. data/lib/googleauth/user_refresh.rb +27 -27
  34. data/lib/googleauth/version.rb +1 -1
  35. data/lib/googleauth/web_user_authorizer.rb +55 -56
  36. data/spec/googleauth/apply_auth_examples.rb +46 -46
  37. data/spec/googleauth/client_id_spec.rb +54 -54
  38. data/spec/googleauth/compute_engine_spec.rb +41 -41
  39. data/spec/googleauth/credentials_spec.rb +97 -97
  40. data/spec/googleauth/get_application_default_spec.rb +114 -114
  41. data/spec/googleauth/iam_spec.rb +25 -25
  42. data/spec/googleauth/scope_util_spec.rb +24 -24
  43. data/spec/googleauth/service_account_spec.rb +204 -194
  44. data/spec/googleauth/signet_spec.rb +37 -38
  45. data/spec/googleauth/stores/file_token_store_spec.rb +12 -12
  46. data/spec/googleauth/stores/redis_token_store_spec.rb +11 -11
  47. data/spec/googleauth/stores/store_examples.rb +16 -16
  48. data/spec/googleauth/user_authorizer_spec.rb +120 -121
  49. data/spec/googleauth/user_refresh_spec.rb +151 -146
  50. data/spec/googleauth/web_user_authorizer_spec.rb +66 -66
  51. data/spec/spec_helper.rb +19 -19
  52. metadata +4 -6
  53. data/.kokoro/common.cfg +0 -22
  54. data/.travis.yml +0 -40
@@ -27,140 +27,140 @@
27
27
  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
28
  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
29
 
30
- spec_dir = File.expand_path(File.join(File.dirname(__FILE__)))
31
- $LOAD_PATH.unshift(spec_dir)
30
+ spec_dir = File.expand_path File.join(File.dirname(__FILE__))
31
+ $LOAD_PATH.unshift spec_dir
32
32
  $LOAD_PATH.uniq!
33
33
 
34
- require 'googleauth'
35
- require 'googleauth/web_user_authorizer'
36
- require 'uri'
37
- require 'multi_json'
38
- require 'spec_helper'
39
- require 'rack'
34
+ require "googleauth"
35
+ require "googleauth/web_user_authorizer"
36
+ require "uri"
37
+ require "multi_json"
38
+ require "spec_helper"
39
+ require "rack"
40
40
 
41
41
  describe Google::Auth::WebUserAuthorizer do
42
42
  include TestHelpers
43
43
 
44
- let(:client_id) { Google::Auth::ClientId.new('testclient', 'notasecret') }
45
- let(:scope) { %w(email profile) }
44
+ let(:client_id) { Google::Auth::ClientId.new "testclient", "notasecret" }
45
+ let(:scope) { %w[email profile] }
46
46
  let(:token_store) { DummyTokenStore.new }
47
- let(:authorizer) do
48
- Google::Auth::WebUserAuthorizer.new(client_id, scope, token_store)
47
+ let :authorizer do
48
+ Google::Auth::WebUserAuthorizer.new client_id, scope, token_store
49
49
  end
50
50
 
51
- describe '#get_authorization_url' do
52
- let(:env) do
51
+ describe "#get_authorization_url" do
52
+ let :env do
53
53
  Rack::MockRequest.env_for(
54
- 'http://example.com:8080/test',
55
- 'REMOTE_ADDR' => '10.10.10.10'
54
+ "http://example.com:8080/test",
55
+ "REMOTE_ADDR" => "10.10.10.10"
56
56
  )
57
57
  end
58
- let(:request) { Rack::Request.new(env) }
59
- it 'should include current url in state' do
60
- url = authorizer.get_authorization_url(request: request)
58
+ let(:request) { Rack::Request.new env }
59
+ it "should include current url in state" do
60
+ url = authorizer.get_authorization_url request: request
61
61
  expect(url).to match(
62
62
  %r{%22current_uri%22:%22http://example.com:8080/test%22}
63
63
  )
64
64
  end
65
65
 
66
- it 'should include request forgery token in state' do
67
- expect(SecureRandom).to receive(:base64).and_return('aGVsbG8=')
68
- url = authorizer.get_authorization_url(request: request)
66
+ it "should include request forgery token in state" do
67
+ expect(SecureRandom).to receive(:base64).and_return("aGVsbG8=")
68
+ url = authorizer.get_authorization_url request: request
69
69
  expect(url).to match(/%22session_id%22:%22aGVsbG8=%22/)
70
70
  end
71
71
 
72
- it 'should include request forgery token in session' do
73
- expect(SecureRandom).to receive(:base64).and_return('aGVsbG8=')
74
- authorizer.get_authorization_url(request: request)
75
- expect(request.session['g-xsrf-token']).to eq 'aGVsbG8='
72
+ it "should include request forgery token in session" do
73
+ expect(SecureRandom).to receive(:base64).and_return("aGVsbG8=")
74
+ authorizer.get_authorization_url request: request
75
+ expect(request.session["g-xsrf-token"]).to eq "aGVsbG8="
76
76
  end
77
77
 
78
- it 'should resolve callback against base URL' do
79
- url = authorizer.get_authorization_url(request: request)
78
+ it "should resolve callback against base URL" do
79
+ url = authorizer.get_authorization_url request: request
80
80
  expect(url).to match(
81
81
  %r{redirect_uri=http://example.com:8080/oauth2callback}
82
82
  )
83
83
  end
84
84
 
85
- it 'should allow overriding the current URL' do
85
+ it "should allow overriding the current URL" do
86
86
  url = authorizer.get_authorization_url(
87
- request: request,
88
- redirect_to: '/foo'
87
+ request: request,
88
+ redirect_to: "/foo"
89
89
  )
90
90
  expect(url).to match %r{%22current_uri%22:%22/foo%22}
91
91
  end
92
92
 
93
- it 'should pass through login hint' do
93
+ it "should pass through login hint" do
94
94
  url = authorizer.get_authorization_url(
95
- request: request,
96
- login_hint: 'user@example.com'
95
+ request: request,
96
+ login_hint: "user@example.com"
97
97
  )
98
98
  expect(url).to match(/login_hint=user@example.com/)
99
99
  end
100
100
  end
101
101
 
102
- shared_examples 'handles callback' do
103
- let(:token_json) do
104
- MultiJson.dump('access_token' => '1/abc123',
105
- 'token_type' => 'Bearer',
106
- 'expires_in' => 3600)
102
+ shared_examples "handles callback" do
103
+ let :token_json do
104
+ MultiJson.dump("access_token" => "1/abc123",
105
+ "token_type" => "Bearer",
106
+ "expires_in" => 3600)
107
107
  end
108
108
 
109
- before(:example) do
110
- stub_request(:post, 'https://oauth2.googleapis.com/token')
111
- .to_return(body: token_json,
112
- status: 200,
113
- headers: { 'Content-Type' => 'application/json' })
109
+ before :example do
110
+ stub_request(:post, "https://oauth2.googleapis.com/token")
111
+ .to_return(body: token_json,
112
+ status: 200,
113
+ headers: { "Content-Type" => "application/json" })
114
114
  end
115
115
 
116
- let(:env) do
116
+ let :env do
117
117
  Rack::MockRequest.env_for(
118
- 'http://example.com:8080/oauth2callback?code=authcode&'\
119
- 'state=%7B%22current_uri%22%3A%22%2Ffoo%22%2C%22'\
120
- 'session_id%22%3A%22abc%22%7D',
121
- 'REMOTE_ADDR' => '10.10.10.10'
118
+ "http://example.com:8080/oauth2callback?code=authcode&"\
119
+ "state=%7B%22current_uri%22%3A%22%2Ffoo%22%2C%22"\
120
+ "session_id%22%3A%22abc%22%7D",
121
+ "REMOTE_ADDR" => "10.10.10.10"
122
122
  )
123
123
  end
124
- let(:request) { Rack::Request.new(env) }
124
+ let(:request) { Rack::Request.new env }
125
125
 
126
- before(:example) do
127
- request.session['g-xsrf-token'] = 'abc'
126
+ before :example do
127
+ request.session["g-xsrf-token"] = "abc"
128
128
  end
129
129
 
130
- it 'should return credentials when valid code present' do
130
+ it "should return credentials when valid code present" do
131
131
  expect(credentials).to be_instance_of(
132
132
  Google::Auth::UserRefreshCredentials
133
133
  )
134
134
  end
135
135
 
136
- it 'should return next URL to redirect to' do
137
- expect(next_url).to eq '/foo'
136
+ it "should return next URL to redirect to" do
137
+ expect(next_url).to eq "/foo"
138
138
  end
139
139
 
140
- it 'should fail if xrsf token in session and does not match request' do
141
- request.session['g-xsrf-token'] = '123'
140
+ it "should fail if xrsf token in session and does not match request" do
141
+ request.session["g-xsrf-token"] = "123"
142
142
  expect { credentials }.to raise_error(Signet::AuthorizationError)
143
143
  end
144
144
  end
145
145
 
146
- describe '#handle_auth_callback' do
147
- let(:result) { authorizer.handle_auth_callback('user1', request) }
146
+ describe "#handle_auth_callback" do
147
+ let(:result) { authorizer.handle_auth_callback "user1", request }
148
148
  let(:credentials) { result[0] }
149
149
  let(:next_url) { result[1] }
150
150
 
151
- it_behaves_like 'handles callback'
151
+ it_behaves_like "handles callback"
152
152
  end
153
153
 
154
- describe '#handle_auth_callback_deferred and #get_credentials' do
155
- let(:next_url) do
156
- Google::Auth::WebUserAuthorizer.handle_auth_callback_deferred(request)
154
+ describe "#handle_auth_callback_deferred and #get_credentials" do
155
+ let :next_url do
156
+ Google::Auth::WebUserAuthorizer.handle_auth_callback_deferred request
157
157
  end
158
158
 
159
- let(:credentials) do
159
+ let :credentials do
160
160
  next_url
161
- authorizer.get_credentials('user1', request)
161
+ authorizer.get_credentials "user1", request
162
162
  end
163
163
 
164
- it_behaves_like 'handles callback'
164
+ it_behaves_like "handles callback"
165
165
  end
166
166
  end
@@ -27,17 +27,17 @@
27
27
  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
28
  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
29
 
30
- spec_dir = File.expand_path(File.dirname(__FILE__))
31
- root_dir = File.expand_path(File.join(spec_dir, '..'))
32
- lib_dir = File.expand_path(File.join(root_dir, 'lib'))
30
+ spec_dir = __dir__
31
+ root_dir = File.expand_path File.join(spec_dir, "..")
32
+ lib_dir = File.expand_path File.join(root_dir, "lib")
33
33
 
34
- $LOAD_PATH.unshift(spec_dir)
35
- $LOAD_PATH.unshift(lib_dir)
34
+ $LOAD_PATH.unshift spec_dir
35
+ $LOAD_PATH.unshift lib_dir
36
36
  $LOAD_PATH.uniq!
37
37
 
38
38
  # set up coverage
39
- require 'simplecov'
40
- require 'coveralls'
39
+ require "simplecov"
40
+ require "coveralls"
41
41
 
42
42
  SimpleCov.formatters = [
43
43
  Coveralls::SimpleCov::Formatter,
@@ -45,18 +45,18 @@ SimpleCov.formatters = [
45
45
  ]
46
46
  SimpleCov.start
47
47
 
48
- require 'faraday'
49
- require 'rspec'
50
- require 'logging'
51
- require 'rspec/logging_helper'
52
- require 'webmock/rspec'
53
- require 'multi_json'
48
+ require "faraday"
49
+ require "rspec"
50
+ require "logging"
51
+ require "rspec/logging_helper"
52
+ require "webmock/rspec"
53
+ require "multi_json"
54
54
 
55
55
  # Preload adapter to work around Rubinius error with FakeFS
56
- MultiJson.use(:json_gem)
56
+ MultiJson.use :json_gem
57
57
 
58
58
  # Allow Faraday to support test stubs
59
- Faraday::Adapter.load_middleware(:test)
59
+ Faraday::Adapter.load_middleware :test
60
60
 
61
61
  # Configure RSpec to capture log messages for each test. The output from the
62
62
  # logs will be stored in the @log_output variable. It is a StringIO instance.
@@ -78,15 +78,15 @@ class DummyTokenStore
78
78
  @tokens = {}
79
79
  end
80
80
 
81
- def load(id)
81
+ def load id
82
82
  @tokens[id]
83
83
  end
84
84
 
85
- def store(id, token)
85
+ def store id, token
86
86
  @tokens[id] = token
87
87
  end
88
88
 
89
- def delete(id)
90
- @tokens.delete(id)
89
+ def delete id
90
+ @tokens.delete id
91
91
  end
92
92
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: googleauth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Emiola
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-03 00:00:00.000000000 Z
11
+ date: 2019-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -122,7 +122,6 @@ files:
122
122
  - ".gitignore"
123
123
  - ".kokoro/build.bat"
124
124
  - ".kokoro/build.sh"
125
- - ".kokoro/common.cfg"
126
125
  - ".kokoro/continuous/common.cfg"
127
126
  - ".kokoro/continuous/linux.cfg"
128
127
  - ".kokoro/continuous/osx.cfg"
@@ -132,11 +131,11 @@ files:
132
131
  - ".kokoro/presubmit/linux.cfg"
133
132
  - ".kokoro/presubmit/osx.cfg"
134
133
  - ".kokoro/presubmit/windows.cfg"
134
+ - ".kokoro/release.cfg"
135
135
  - ".kokoro/trampoline.sh"
136
136
  - ".kokoro/windows.sh"
137
137
  - ".rspec"
138
138
  - ".rubocop.yml"
139
- - ".travis.yml"
140
139
  - CHANGELOG.md
141
140
  - CODE_OF_CONDUCT.md
142
141
  - COPYING
@@ -198,8 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
197
  - !ruby/object:Gem::Version
199
198
  version: '0'
200
199
  requirements: []
201
- rubyforge_project:
202
- rubygems_version: 2.7.6
200
+ rubygems_version: 3.0.3
203
201
  signing_key:
204
202
  specification_version: 4
205
203
  summary: Google Auth Library for Ruby
@@ -1,22 +0,0 @@
1
- # Format: //devtools/kokoro/config/proto/build.proto
2
-
3
- # Download trampoline resources. These will be in ${KOKORO_GFILE_DIR}
4
- gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline"
5
-
6
- # All builds use the trampoline script to run in docker.
7
- build_file: "google-auth-library-ruby/.kokoro/trampoline.sh"
8
-
9
- # Download secrets from Cloud Storage.
10
- gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/google-auth-library-ruby"
11
-
12
- # Tell the trampoline which build file to use.
13
- env_vars: {
14
- key: "TRAMPOLINE_BUILD_FILE"
15
- value: "github/google-auth-library-ruby/.kokoro/build.sh"
16
- }
17
-
18
- action {
19
- define_artifacts {
20
- regex: "**/*sponge_log.xml"
21
- }
22
- }
@@ -1,40 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.5.1
5
- - 2.4.4
6
- - 2.3.7
7
- - 2.2.10
8
- - 2.1.10
9
- - 2.0.0
10
- - 1.9.3
11
- - rbx-2
12
- - jruby-9.1.9.0
13
- matrix:
14
- allow_failures:
15
- - rvm: rbx-2 # See rubinius/rubinius#3485 - rubocop segfaults
16
- script: "bundle exec rake"
17
- addons:
18
- apt:
19
- packages:
20
- - idn
21
- - build-essential # this and below attempt allow rubinius to be setup ok
22
- - bison
23
- - ruby-dev
24
- - rake zlib1g-dev
25
- - libyaml-dev
26
- - libssl-dev
27
- - libreadline-dev
28
- - libncurses5-dev
29
- - llvm
30
- - llvm-dev
31
- - libeditline-dev
32
- - libedit-dev
33
- before_install:
34
- - gem update bundler
35
- notifications:
36
- email:
37
- recipients:
38
- - ruby-cloud-eng@google.com
39
- on_success: change
40
- on_failure: change