googleauth 0.15.1 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.github/renovate.json +6 -0
  3. data/.github/sync-repo-settings.yaml +18 -0
  4. data/.github/workflows/ci.yml +55 -0
  5. data/.github/workflows/{release.yml → release-please.yml} +3 -3
  6. data/.gitignore +3 -0
  7. data/.kokoro/populate-secrets.sh +76 -0
  8. data/.kokoro/release.cfg +7 -49
  9. data/.kokoro/release.sh +18 -0
  10. data/.kokoro/trampoline_v2.sh +489 -0
  11. data/.repo-metadata.json +3 -3
  12. data/.rubocop.yml +0 -2
  13. data/.toys/.toys.rb +45 -0
  14. data/.toys/ci.rb +43 -0
  15. data/.toys/kokoro/.toys.rb +66 -0
  16. data/.toys/kokoro/publish-docs.rb +67 -0
  17. data/.toys/kokoro/publish-gem.rb +53 -0
  18. data/.toys/linkinator.rb +43 -0
  19. data/.trampolinerc +48 -0
  20. data/CHANGELOG.md +28 -0
  21. data/Gemfile +2 -7
  22. data/README.md +9 -7
  23. data/SECURITY.md +7 -0
  24. data/googleauth.gemspec +2 -1
  25. data/lib/googleauth/compute_engine.rb +1 -1
  26. data/lib/googleauth/credentials.rb +8 -3
  27. data/lib/googleauth/credentials_loader.rb +1 -1
  28. data/lib/googleauth/iam.rb +1 -1
  29. data/lib/googleauth/id_tokens/key_sources.rb +7 -5
  30. data/lib/googleauth/id_tokens/verifier.rb +7 -9
  31. data/lib/googleauth/scope_util.rb +1 -1
  32. data/lib/googleauth/service_account.rb +21 -15
  33. data/lib/googleauth/signet.rb +1 -1
  34. data/lib/googleauth/stores/file_token_store.rb +1 -0
  35. data/lib/googleauth/stores/redis_token_store.rb +1 -0
  36. data/lib/googleauth/version.rb +1 -1
  37. data/lib/googleauth/web_user_authorizer.rb +1 -1
  38. data/spec/googleauth/service_account_spec.rb +24 -10
  39. metadata +19 -23
  40. data/.kokoro/build.bat +0 -16
  41. data/.kokoro/build.sh +0 -4
  42. data/.kokoro/continuous/common.cfg +0 -24
  43. data/.kokoro/continuous/linux.cfg +0 -25
  44. data/.kokoro/continuous/osx.cfg +0 -8
  45. data/.kokoro/continuous/post.cfg +0 -30
  46. data/.kokoro/continuous/windows.cfg +0 -29
  47. data/.kokoro/osx.sh +0 -4
  48. data/.kokoro/presubmit/common.cfg +0 -24
  49. data/.kokoro/presubmit/linux.cfg +0 -24
  50. data/.kokoro/presubmit/osx.cfg +0 -8
  51. data/.kokoro/presubmit/windows.cfg +0 -29
  52. data/.kokoro/trampoline.bat +0 -10
  53. data/.kokoro/trampoline.sh +0 -4
  54. data/Rakefile +0 -132
  55. data/rakelib/devsite_builder.rb +0 -45
  56. data/rakelib/link_checker.rb +0 -64
  57. data/rakelib/repo_metadata.rb +0 -59
data/.repo-metadata.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "googleauth",
3
2
  "language": "ruby",
4
- "distribution-name": "googleauth"
5
- }
3
+ "distribution-name": "googleauth",
4
+ "library_type": "AUTH"
5
+ }
data/.rubocop.yml CHANGED
@@ -15,5 +15,3 @@ Metrics/ModuleLength:
15
15
  Metrics/BlockLength:
16
16
  Exclude:
17
17
  - "googleauth.gemspec"
18
- Style/SafeNavigation:
19
- Enabled: false
data/.toys/.toys.rb ADDED
@@ -0,0 +1,45 @@
1
+ # Copyright 2021 Google LLC
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
+ expand :clean, paths: :gitignore
16
+
17
+ expand :rspec do |t|
18
+ t.libs = ["lib", "spec"]
19
+ t.use_bundler
20
+ end
21
+
22
+ expand :minitest do |t|
23
+ t.libs = ["lib", "test"]
24
+ t.use_bundler
25
+ t.files = "test/**/*_test.rb"
26
+ end
27
+
28
+ expand :minitest do |t|
29
+ t.name = "integration"
30
+ t.libs = ["lib", "integration"]
31
+ t.use_bundler
32
+ t.files = "integration/**/*_test.rb"
33
+ end
34
+
35
+ expand :rubocop, bundler: true
36
+
37
+ expand :yardoc do |t|
38
+ t.generate_output_flag = true
39
+ # t.fail_on_warning = true
40
+ t.use_bundler
41
+ end
42
+
43
+ expand :gem_build
44
+
45
+ expand :gem_build, name: "install", install_gem: true
data/.toys/ci.rb ADDED
@@ -0,0 +1,43 @@
1
+ # Copyright 2021 Google LLC
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
+ desc "Run CI checks"
16
+
17
+ TESTS = ["test", "integration", "spec", "rubocop", "yardoc", "build", "linkinator"]
18
+
19
+ flag :only
20
+ TESTS.each do |name|
21
+ flag "include_#{name}".to_sym, "--[no-]include-#{name}"
22
+ end
23
+
24
+ include :exec, result_callback: :handle_result
25
+ include :terminal
26
+
27
+ def handle_result result
28
+ if result.success?
29
+ puts "** #{result.name} passed\n\n", :green, :bold
30
+ else
31
+ puts "** CI terminated: #{result.name} failed!", :red, :bold
32
+ exit 1
33
+ end
34
+ end
35
+
36
+ def run
37
+ ::Dir.chdir context_directory
38
+ TESTS.each do |name|
39
+ setting = get "include_#{name}".to_sym
40
+ setting = !only if setting.nil?
41
+ exec ["toys", name], name: name.capitalize if setting
42
+ end
43
+ end
@@ -0,0 +1,66 @@
1
+ # Copyright 2021 Google LLC
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
+ mixin "kokoro-tools" do
16
+ def load_env
17
+ return if defined? @loaded_env
18
+
19
+ service_account = "#{::ENV['KOKORO_GFILE_DIR']}/service-account.json"
20
+ raise "#{service_account} is not a file" unless ::File.file? service_account
21
+ ::ENV["GOOGLE_APPLICATION_CREDENTIALS"] = service_account
22
+
23
+ filename = "#{::ENV['KOKORO_GFILE_DIR']}/ruby_env_vars.json"
24
+ raise "#{filename} is not a file" unless ::File.file? filename
25
+ env_vars = ::JSON.parse ::File.read filename
26
+ env_vars.each { |k, v| ::ENV[k] = v }
27
+
28
+ ::ENV["DOCS_CREDENTIALS"] ||= "#{::ENV['KOKORO_KEYSTORE_DIR']}/73713_docuploader_service_account"
29
+ ::ENV["GITHUB_TOKEN"] ||= "#{::ENV['KOKORO_KEYSTORE_DIR']}/73713_yoshi-automation-github-key"
30
+
31
+ @loaded_env = true
32
+ end
33
+
34
+ def package_name
35
+ @package_name ||=
36
+ ::ENV["RELEASE_PACKAGE"] || ::ENV["PACKAGE"] || begin
37
+ files = ::Dir.glob("*.gemspec")
38
+ raise "Unable to determine package" unless files.length == 1
39
+ ::File.basename files.first, ".gemspec"
40
+ end
41
+ end
42
+
43
+ def package_directory
44
+ @package_directory ||= begin
45
+ if ::File.file? "#{package_name}.gemspec"
46
+ ::File.expand_path "."
47
+ elsif ::File.file? "#{package_name}/#{package_name}.gemspec"
48
+ ::File.expand_path package_name
49
+ else
50
+ raise "Unable to determine package directory"
51
+ end
52
+ end
53
+ end
54
+
55
+ def package_gemspec_path
56
+ @package_gemspec_path ||= ::File.join package_directory, "#{package_name}.gemspec"
57
+ end
58
+
59
+ def package_gemspec
60
+ @package_gemspec ||= eval ::File.read package_gemspec_path
61
+ end
62
+
63
+ def package_version
64
+ @package_version ||= package_gemspec.version
65
+ end
66
+ end
@@ -0,0 +1,67 @@
1
+ # Copyright 2021 Google LLC
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 "json"
16
+
17
+ include "kokoro-tools"
18
+ include :exec, e: true
19
+ include :fileutils
20
+
21
+ flag :credentials, "--credentials=PATH"
22
+ flag :bucket, "--bucket=NAME"
23
+ flag :dry_run, default: ["true", "docs"].include?(::ENV["RELEASE_DRY_RUN"].to_s)
24
+
25
+ def run
26
+ ::Dir.chdir package_directory
27
+ load_env
28
+ build_docs
29
+ write_metadata
30
+ if dry_run
31
+ puts "DRY RUN: Skipping doc uploading for #{package_name}"
32
+ else
33
+ upload_docs
34
+ end
35
+ end
36
+
37
+ def build_docs
38
+ rm_rf "doc"
39
+ exec ["toys", "yardoc"]
40
+ end
41
+
42
+ def write_metadata
43
+ allowed_fields = [
44
+ "name", "version", "language", "distribution-name",
45
+ "product-page", "github-repository", "issue-tracker"
46
+ ]
47
+ metadata = ::JSON.parse ::File.read ".repo-metadata.json"
48
+ metadata.transform_keys! { |k| k.tr "_", "-" }
49
+ metadata.keep_if { |k, _v| allowed_fields.include? k }
50
+ metadata["version"] = package_version
51
+ metadata["name"] = metadata["distribution-name"]
52
+ args = metadata.transform_keys { |k| "--#{k}" }.to_a.flatten
53
+ cmd = ["python3", "-m", "docuploader", "create-metadata"] + args
54
+ exec cmd, chdir: "doc"
55
+ end
56
+
57
+ def upload_docs
58
+ creds = credentials || "#{::ENV['KOKORO_KEYSTORE_DIR']}/73713_docuploader_service_account"
59
+ buck = bucket || ::ENV["STAGING_BUCKET"] || "docs-staging"
60
+ cmd = [
61
+ "python3", "-m", "docuploader", "upload", ".",
62
+ "--credentials=#{creds}",
63
+ "--staging-bucket=#{buck}",
64
+ "--metadata-file=./docs.metadata"
65
+ ]
66
+ exec cmd, chdir: "doc"
67
+ end
@@ -0,0 +1,53 @@
1
+ # Copyright 2021 Google LLC
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
+ include "kokoro-tools"
16
+ include :exec, e: true
17
+ include :fileutils
18
+ include :gems
19
+
20
+ flag :rubygems_token, "--rubygems-token=TOKEN"
21
+ flag :dry_run, default: ["true", "gem"].include?(::ENV["RELEASE_DRY_RUN"].to_s)
22
+
23
+ def run
24
+ gem "gems", "~> 1.2"
25
+ require "gems"
26
+ ::Dir.chdir package_directory
27
+ load_env
28
+ configure_gems
29
+ gem_path = build_gem
30
+ if dry_run
31
+ puts "DRY RUN: Skipping Rubygems push of #{gem_path}"
32
+ else
33
+ push_gem gem_path
34
+ end
35
+ end
36
+
37
+ def configure_gems
38
+ token = rubygems_token || ::ENV["RUBYGEMS_API_TOKEN"]
39
+ ::Gems.configure { |config| config.key = token } if token
40
+ end
41
+
42
+ def build_gem
43
+ gem_path = "pkg/#{package_name}-#{package_version}.gem"
44
+ rm_rf gem_path
45
+ exec ["toys", "build"]
46
+ gem_path
47
+ end
48
+
49
+ def push_gem gem_path
50
+ response = ::Gems.push ::File.new gem_path
51
+ puts response
52
+ raise "Gem push didn't report success" unless response.include? "Successfully registered gem:"
53
+ end
@@ -0,0 +1,43 @@
1
+ # Copyright 2021 Google LLC
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
+ desc "Run Link checks"
16
+
17
+ flag :install, desc: "Install linkinator instead of running checks"
18
+
19
+ include :exec, e: true
20
+ include :terminal
21
+
22
+ def run
23
+ ::Dir.chdir context_directory
24
+ if install
25
+ Kernel.exec "npm install linkinator"
26
+ else
27
+ exec_tool ["yardoc"]
28
+ check_links
29
+ end
30
+ end
31
+
32
+ def check_links
33
+ result = exec ["npx", "linkinator", "./doc"], out: :capture
34
+ puts result.captured_out
35
+ checked_links = result.captured_out.split "\n"
36
+ checked_links.select! { |link| link =~ /^\[(\d+)\]/ && ::Regexp.last_match[1] != "200" }
37
+ unless checked_links.empty?
38
+ checked_links.each do |link|
39
+ puts link, :yellow
40
+ end
41
+ exit 1
42
+ end
43
+ end
data/.trampolinerc ADDED
@@ -0,0 +1,48 @@
1
+ # Copyright 2021 Google LLC
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
+ # Add required env vars here.
16
+ required_envvars+=(
17
+ )
18
+
19
+ # Add env vars which are passed down into the container here.
20
+ pass_down_envvars+=(
21
+ "AUTORELEASE_PR" "RELEASE_DRY_RUN"
22
+ )
23
+
24
+ # Prevent unintentional override on the default image.
25
+ if [[ "${TRAMPOLINE_IMAGE_UPLOAD:-false}" == "true" ]] && [[ -z "${TRAMPOLINE_IMAGE:-}" ]]; then
26
+ echo "Please set TRAMPOLINE_IMAGE if you want to upload the Docker image."
27
+ exit 1
28
+ fi
29
+
30
+ # Define the default value if it makes sense.
31
+ if [[ -z "${TRAMPOLINE_IMAGE_UPLOAD:-}" ]]; then
32
+ TRAMPOLINE_IMAGE_UPLOAD=""
33
+ fi
34
+
35
+ if [[ -z "${TRAMPOLINE_IMAGE:-}" ]]; then
36
+ TRAMPOLINE_IMAGE=""
37
+ fi
38
+
39
+ if [[ -z "${TRAMPOLINE_DOCKERFILE:-}" ]]; then
40
+ TRAMPOLINE_DOCKERFILE=""
41
+ fi
42
+
43
+ if [[ -z "${TRAMPOLINE_BUILD_FILE:-}" ]]; then
44
+ TRAMPOLINE_BUILD_FILE=""
45
+ fi
46
+
47
+ # Secret Manager secrets.
48
+ source ${PROJECT_ROOT}/.kokoro/populate-secrets.sh
data/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # Release History
2
2
 
3
+ ## [0.17.0](https://www.github.com/googleapis/google-auth-library-ruby/compare/google-auth-library-ruby/v0.16.2...google-auth-library-ruby/v0.17.0) (2021-07-30)
4
+
5
+
6
+ ### Features
7
+
8
+ * Allow scopes to be self-signed into jwts ([e67ce40](https://www.github.com/googleapis/google-auth-library-ruby/commit/e67ce40f919b7eb3723c2ec95f5b8d58315ab1ee))
9
+
10
+ ### [0.16.2](https://www.github.com/googleapis/google-auth-library-ruby/compare/google-auth-library-ruby/v0.16.1...google-auth-library-ruby/v0.16.2) (2021-04-28)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * Stop attempting to get the project from gcloud when applying self-signed JWTs ([#317](https://www.github.com/googleapis/google-auth-library-ruby/issues/317)) ([39258ca](https://www.github.com/googleapis/google-auth-library-ruby/commit/39258cacafa5c770fb40d99075a97b8e6427adba))
16
+
17
+ ### [0.16.1](https://www.github.com/googleapis/google-auth-library-ruby/compare/google-auth-library-ruby/v0.16.0...google-auth-library-ruby/v0.16.1) (2021-04-01)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * Accept application/text content-type for plain idtoken response ([4948ebb](https://www.github.com/googleapis/google-auth-library-ruby/commit/4948ebb3ca151e9f0433585a41bad6f415416b2d))
23
+
24
+ ## [0.16.0](https://www.github.com/googleapis/google-auth-library-ruby/compare/v0.15.1...v0.16.0) (2021-03-04)
25
+
26
+
27
+ ### Features
28
+
29
+ * Drop support for Ruby 2.4 and add support for Ruby 3.0 ([6644806](https://www.github.com/googleapis/google-auth-library-ruby/commit/6644806ab47cea6d08e1901c2ed808e53a579bc3))
30
+
3
31
  ## [0.15.1](https://www.github.com/googleapis/google-auth-library-ruby/compare/v0.15.0...v0.15.1) (2021-02-08)
4
32
 
5
33
 
data/Gemfile CHANGED
@@ -8,7 +8,7 @@ group :development do
8
8
  gem "coveralls", "~> 0.7"
9
9
  gem "fakefs", "~> 0.6"
10
10
  gem "fakeredis", "~> 0.5"
11
- gem "google-style", "~> 1.24.0"
11
+ gem "google-style", "~> 1.25.1"
12
12
  gem "logging", "~> 2.0"
13
13
  gem "minitest", "~> 5.14"
14
14
  gem "minitest-focus", "~> 1.1"
@@ -21,10 +21,5 @@ group :development do
21
21
  gem "webmock", "~> 3.8"
22
22
  end
23
23
 
24
- platforms :jruby do
25
- group :development do
26
- end
27
- end
28
-
29
- gem "faraday", "~> 0.17"
24
+ gem "faraday", ">= 0.17.3", "< 2.0"
30
25
  gem "gems", "~> 1.2"