auth0 5.15.0 → 5.16.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ceba936338486855137ba5c59358f8656aaba565e624865a6d0b5e4092e937e7
4
- data.tar.gz: 5d2521a3c29afe50813d3b53b7f56d260f075c88116bcb04f14f8b93e0eeaebe
3
+ metadata.gz: '0978f1fb53fb4cf3047f12b60ae15d131a47e225f124bb74b26a508ba51c1548'
4
+ data.tar.gz: 37dedc6fe3b8c9cf4a8fe795d0011a73c66a7c79f4485bb72c4f722772bf2644
5
5
  SHA512:
6
- metadata.gz: b14982084c5e6a3439a5261b4b2afa8712e0bba674ce0cc8c48f408fef5a16320de484f550b80102fb4f2bb21e6af751214e5682489ea2eeb1b9bc77ebfd0bf9
7
- data.tar.gz: 2702811340ebdd8748449bcec4f01e2366b02bd2f00aec66168a9f088af8755259a11f76268a22e7cfbb347ca5c02ebd4d6eb251070ee42fe19545dd6b73bc89
6
+ metadata.gz: 1f5c2df075fd3dea61c55467c3818561f763d459aaeb66c9147849f46c0ed366777e59982438d9479f197f16770e4615bedb3872326775f0ba3782d312a5ad84
7
+ data.tar.gz: d65412c6bc0a4a1806eb1ff08b92503ea3c60c3e44e359b4c45cde37c715109ced81bd2aa78f726784fc1c82c45a3482aacaacbdcdf3abf58ecf070b505d3de4
@@ -11,7 +11,7 @@ on:
11
11
  branches:
12
12
  - master
13
13
  schedule:
14
- - cron: '30 0 1,15 * *'
14
+ - cron: "30 0 1,15 * *"
15
15
 
16
16
  permissions:
17
17
  contents: read
@@ -42,6 +42,8 @@ jobs:
42
42
  with:
43
43
  ref: ${{ github.event.pull_request.head.sha || github.ref }}
44
44
 
45
- - uses: snyk/actions/php@b98d498629f1c368650224d6d212bf7dfa89e4bf # pin@0.4.0
45
+ - run: npm install -g snyk
46
+
47
+ - run: snyk test
46
48
  env:
47
49
  SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
@@ -14,7 +14,7 @@ permissions:
14
14
  contents: read
15
15
 
16
16
  concurrency:
17
- group: ${{ github.workflow }}-${{ github.ref }}
17
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
18
18
  cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
19
19
 
20
20
  env:
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Change Log
2
2
 
3
+ ## [v5.16.0](https://github.com/auth0/ruby-auth0/tree/v5.16.0) (2023-11-13)
4
+ [Full Changelog](https://github.com/auth0/ruby-auth0/compare/v5.15.0...v5.16.0)
5
+
6
+ **Added**
7
+ - [SDK-4546] Add orgs in client credentials support [\#540](https://github.com/auth0/ruby-auth0/pull/540) ([adamjmcgrath](https://github.com/adamjmcgrath))
8
+
3
9
  ## [v5.15.0](https://github.com/auth0/ruby-auth0/tree/v5.15.0) (2023-10-30)
4
10
  [Full Changelog](https://github.com/auth0/ruby-auth0/compare/v5.14.2...v5.15.0)
5
11
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- auth0 (5.15.0)
4
+ auth0 (5.16.0)
5
5
  addressable (~> 2.8)
6
6
  jwt (~> 2.7)
7
7
  rest-client (~> 2.1)
@@ -11,22 +11,23 @@ PATH
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- actionpack (7.1.1)
15
- actionview (= 7.1.1)
16
- activesupport (= 7.1.1)
14
+ actionpack (7.1.2)
15
+ actionview (= 7.1.2)
16
+ activesupport (= 7.1.2)
17
17
  nokogiri (>= 1.8.5)
18
+ racc
18
19
  rack (>= 2.2.4)
19
20
  rack-session (>= 1.0.1)
20
21
  rack-test (>= 0.6.3)
21
22
  rails-dom-testing (~> 2.2)
22
23
  rails-html-sanitizer (~> 1.6)
23
- actionview (7.1.1)
24
- activesupport (= 7.1.1)
24
+ actionview (7.1.2)
25
+ activesupport (= 7.1.2)
25
26
  builder (~> 3.1)
26
27
  erubi (~> 1.11)
27
28
  rails-dom-testing (~> 2.2)
28
29
  rails-html-sanitizer (~> 1.6)
29
- activesupport (7.1.1)
30
+ activesupport (7.1.2)
30
31
  base64
31
32
  bigdecimal
32
33
  concurrent-ruby (~> 1.0, >= 1.0.2)
@@ -39,7 +40,7 @@ GEM
39
40
  addressable (2.8.5)
40
41
  public_suffix (>= 2.0.2, < 6.0)
41
42
  ast (2.4.2)
42
- base64 (0.1.1)
43
+ base64 (0.2.0)
43
44
  bigdecimal (3.1.4)
44
45
  builder (3.2.4)
45
46
  coderay (1.1.3)
@@ -62,7 +63,7 @@ GEM
62
63
  dotenv-rails (2.8.1)
63
64
  dotenv (= 2.8.1)
64
65
  railties (>= 3.2)
65
- drb (2.1.1)
66
+ drb (2.2.0)
66
67
  ruby2_keywords
67
68
  erubi (1.12.0)
68
69
  faker (2.23.0)
@@ -93,7 +94,7 @@ GEM
93
94
  i18n (1.14.1)
94
95
  concurrent-ruby (~> 1.0)
95
96
  io-console (0.6.0)
96
- irb (1.8.3)
97
+ irb (1.9.0)
97
98
  rdoc
98
99
  reline (>= 0.3.8)
99
100
  json (2.6.3)
@@ -112,7 +113,7 @@ GEM
112
113
  mime-types-data (3.2023.1003)
113
114
  minitest (5.20.0)
114
115
  multi_json (1.15.0)
115
- mutex_m (0.1.2)
116
+ mutex_m (0.2.0)
116
117
  nenv (0.3.0)
117
118
  netrc (0.11.0)
118
119
  nokogiri (1.15.4-aarch64-linux)
@@ -130,16 +131,16 @@ GEM
130
131
  parser (3.2.2.4)
131
132
  ast (~> 2.4.1)
132
133
  racc
133
- pp (0.4.0)
134
+ pp (0.5.0)
134
135
  prettyprint
135
- prettyprint (0.1.1)
136
+ prettyprint (0.2.0)
136
137
  pry (0.14.2)
137
138
  coderay (~> 1.1)
138
139
  method_source (~> 1.0)
139
140
  psych (5.1.1.1)
140
141
  stringio
141
142
  public_suffix (5.0.3)
142
- racc (1.7.1)
143
+ racc (1.7.3)
143
144
  rack (3.0.8)
144
145
  rack-session (2.0.0)
145
146
  rack (>= 3.0.0)
@@ -155,9 +156,9 @@ GEM
155
156
  rails-html-sanitizer (1.6.0)
156
157
  loofah (~> 2.21)
157
158
  nokogiri (~> 1.14)
158
- railties (7.1.1)
159
- actionpack (= 7.1.1)
160
- activesupport (= 7.1.1)
159
+ railties (7.1.2)
160
+ actionpack (= 7.1.2)
161
+ activesupport (= 7.1.2)
161
162
  irb
162
163
  rackup (>= 1.0.0)
163
164
  rake (>= 12.2)
@@ -168,10 +169,10 @@ GEM
168
169
  rb-fsevent (0.11.2)
169
170
  rb-inotify (0.10.1)
170
171
  ffi (~> 1.0)
171
- rdoc (6.5.0)
172
+ rdoc (6.6.0)
172
173
  psych (>= 4.0.0)
173
174
  regexp_parser (2.8.2)
174
- reline (0.3.9)
175
+ reline (0.4.0)
175
176
  io-console (~> 0.5)
176
177
  rest-client (2.1.0)
177
178
  http-accept (>= 1.7.0, < 2.0)
@@ -222,7 +223,7 @@ GEM
222
223
  simplecov (~> 0.19)
223
224
  simplecov-html (0.12.3)
224
225
  simplecov_json_formatter (0.1.4)
225
- stringio (3.0.8)
226
+ stringio (3.0.9)
226
227
  sync (0.5.0)
227
228
  term-ansicolor (1.7.1)
228
229
  tins (~> 1.0)
@@ -235,7 +236,7 @@ GEM
235
236
  concurrent-ruby (~> 1.0)
236
237
  unf (0.1.4)
237
238
  unf_ext
238
- unf_ext (0.0.8.2)
239
+ unf_ext (0.0.9)
239
240
  unicode-display_width (2.5.0)
240
241
  vcr (6.2.0)
241
242
  webmock (3.19.1)
@@ -31,7 +31,8 @@ module Auth0
31
31
  request_params = {
32
32
  grant_type: 'client_credentials',
33
33
  client_id: client_id,
34
- audience: audience
34
+ audience: audience,
35
+ organization: organization
35
36
  }
36
37
 
37
38
  populate_client_assertion_or_secret(request_params, client_id: client_id, client_secret: client_secret)
@@ -11,13 +11,15 @@ module Auth0
11
11
  # @param audience [string] The audience of the client grant to retrieve.
12
12
  # @param page [int] Page number to get, 0-based.
13
13
  # @param per_page [int] Results per page if also passing a page number.
14
+ # @param allow_any_organization [bool] Optional filter on allow_any_organization.
14
15
  # @return [json] Returns the client grants.
15
- def client_grants (client_id: nil, audience: nil, page: nil, per_page: nil)
16
+ def client_grants (client_id: nil, audience: nil, page: nil, per_page: nil, allow_any_organization: nil)
16
17
  request_params = {
17
18
  client_id: client_id,
18
19
  audience: audience,
19
20
  page: page,
20
- per_page: per_page
21
+ per_page: per_page,
22
+ allow_any_organization: allow_any_organization
21
23
  }
22
24
  get(client_grants_path, request_params)
23
25
  end
@@ -54,6 +56,29 @@ module Auth0
54
56
  end
55
57
  alias update_client_grant patch_client_grant
56
58
 
59
+
60
+ # Get the organizations associated to a client grant.
61
+ # @param id [string] The client_grant_id of the client grant.
62
+ # @param options [hash] The Hash options used to define the paging of results
63
+ # * :per_page [integer] The amount of entries per page. Default: 50. Max value: 100.
64
+ # * :page [integer] The page number. Zero based.
65
+ # * :from [string] For checkpoint pagination, the ID from which to start selection from.
66
+ # * :take [integer] For checkpoint pagination, the number of entries to retrieve. Default is 50.
67
+ # * :include_totals [boolean] True to include query summary in the result, false or nil otherwise.
68
+ # @return [json] Returns the organizations.
69
+ def get_client_grants_organizations(client_grant_id, options = {})
70
+ raise Auth0::InvalidParameter, 'Must specify a client grant id' if client_grant_id.to_s.empty?
71
+ request_params = {
72
+ per_page: options.fetch(:per_page, nil),
73
+ page: options.fetch(:page, nil),
74
+ from: options.fetch(:from, nil),
75
+ take: options.fetch(:take, nil),
76
+ include_totals: options.fetch(:include_totals, nil)
77
+ }
78
+ path = "#{client_grants_path}/#{client_grant_id}/organizations"
79
+ get(path, request_params)
80
+ end
81
+
57
82
  private
58
83
 
59
84
  # Client Grants API path
@@ -330,6 +330,52 @@ module Auth0
330
330
  end
331
331
  alias remove_organizations_member_roles delete_organizations_member_roles
332
332
 
333
+ # Get client grants associated to an organization
334
+ # @param organization_id [string] The Organization ID
335
+ # @param options [hash] The Hash options used to define the paging of results
336
+ # * :client_id [string] The client_id of the client grant to retrieve.
337
+ # * :audience [string] The audience of the client grant to retrieve.
338
+ # * :per_page [integer] The amount of entries per page. Default: 50. Max value: 100.
339
+ # * :page [integer] The page number. Zero based.
340
+ # * :include_totals [boolean] True to include query summary in the result, false or nil otherwise.
341
+ def get_organizations_client_grants(organization_id, options= {})
342
+ raise Auth0::MissingOrganizationId, 'Must supply a valid organization_id' if organization_id.to_s.empty?
343
+ request_params = {
344
+ client_id: options.fetch(:client_id, nil),
345
+ audience: options.fetch(:audience, nil),
346
+ per_page: options.fetch(:per_page, nil),
347
+ page: options.fetch(:page, nil),
348
+ include_totals: options.fetch(:include_totals, nil)
349
+ }
350
+ path = "#{organizations_client_grants_path(organization_id)}"
351
+ get(path, request_params)
352
+ end
353
+
354
+ # Associate a client grant with an organization
355
+ # @param organization_id [string] The Organization ID
356
+ # @param grant_id [string] The Client Grant ID you want to associate to the Organization.
357
+ def create_organizations_client_grant(organization_id, grant_id)
358
+ raise Auth0::MissingOrganizationId, 'Must supply a valid organization_id' if organization_id.to_s.empty?
359
+ raise Auth0::InvalidParameter, 'Must supply a valid grant_id' if grant_id.to_s.empty?
360
+
361
+ body = {}
362
+ body[:grant_id] = grant_id
363
+
364
+ path = "#{organizations_client_grants_path(organization_id)}"
365
+ post(path, body)
366
+ end
367
+
368
+ # Remove a client grant from an organization
369
+ # @param organization_id [string] The Organization ID
370
+ # @param grant_id [string] The Client Grant ID you want to remove from the Organization.
371
+ def delete_organizations_client_grant(organization_id, grant_id)
372
+ raise Auth0::MissingOrganizationId, 'Must supply a valid organization_id' if organization_id.to_s.empty?
373
+ raise Auth0::InvalidParameter, 'Must supply a valid grant_id' if grant_id.to_s.empty?
374
+
375
+ path = "#{organizations_path}/#{organization_id}/client-grants/#{grant_id}"
376
+ delete(path)
377
+ end
378
+
333
379
  private
334
380
  # Organizations API path
335
381
  def organizations_path
@@ -351,6 +397,10 @@ module Auth0
351
397
  def organizations_invitations_path(org_id)
352
398
  "#{organizations_path}/#{org_id}/invitations"
353
399
  end
400
+
401
+ def organizations_client_grants_path(org_id)
402
+ "#{organizations_path}/#{org_id}/client-grants"
403
+ end
354
404
  end
355
405
  end
356
406
  end
data/lib/auth0/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # current version of gem
2
2
  module Auth0
3
- VERSION = '5.15.0'.freeze
3
+ VERSION = '5.16.0'.freeze
4
4
  end
@@ -56,6 +56,7 @@ describe Auth0::Api::AuthenticationEndpoints do
56
56
  grant_type: 'client_credentials',
57
57
  client_id: client_id,
58
58
  audience: api_identifier,
59
+ organization: nil,
59
60
  client_secret: client_secret
60
61
  }.to_json
61
62
  ))
@@ -74,6 +75,33 @@ describe Auth0::Api::AuthenticationEndpoints do
74
75
  expect(result.expires_in).not_to be_nil
75
76
  end
76
77
 
78
+ it 'requests a new token using organization' do
79
+ expect(RestClient::Request).to receive(:execute).with(hash_including(
80
+ method: :post,
81
+ url: 'https://samples.auth0.com/oauth/token',
82
+ payload: {
83
+ grant_type: 'client_credentials',
84
+ client_id: client_id,
85
+ audience: api_identifier,
86
+ organization: 'foo',
87
+ client_secret: client_secret
88
+ }.to_json
89
+ ))
90
+ .and_return(StubResponse.new({
91
+ "access_token" => "test_response",
92
+ "expires_in" => 86400,
93
+ "scope" => "scope"},
94
+ true,
95
+ 200))
96
+
97
+ result = client_secret_instance.send :api_token, audience: api_identifier, organization: 'foo'
98
+
99
+ expect(result).to be_a_kind_of(Auth0::ApiToken)
100
+ expect(result.access_token).not_to be_nil
101
+ expect(result.scope).not_to be_nil
102
+ expect(result.expires_in).not_to be_nil
103
+ end
104
+
77
105
  it 'requests a new token using client_assertion' do
78
106
  expect(RestClient::Request).to receive(:execute) do |arg|
79
107
  expect(arg).to match(
@@ -14,6 +14,7 @@ describe Auth0::Api::V2::ClientGrants do
14
14
  expect(@instance).to receive(:get).with(
15
15
  '/api/v2/client-grants', {
16
16
  client_id: nil,
17
+ allow_any_organization: nil,
17
18
  audience: nil,
18
19
  page: nil,
19
20
  per_page: nil
@@ -27,6 +28,7 @@ describe Auth0::Api::V2::ClientGrants do
27
28
  expect(@instance).to receive(:get).with(
28
29
  '/api/v2/client-grants', {
29
30
  client_id: '1',
31
+ allow_any_organization: nil,
30
32
  audience: audience,
31
33
  page: nil,
32
34
  per_page: nil
@@ -38,12 +40,25 @@ describe Auth0::Api::V2::ClientGrants do
38
40
  expect(@instance).to receive(:get).with(
39
41
  '/api/v2/client-grants', {
40
42
  client_id: nil,
43
+ allow_any_organization: nil,
41
44
  audience: nil,
42
45
  page: 1,
43
46
  per_page: 2
44
47
  })
45
48
  expect { @instance.client_grants(page: 1, per_page: 2) }.not_to raise_error
46
49
  end
50
+
51
+ it 'is expected to send get /api/v2/client-grants/ with allow_any_organization' do
52
+ expect(@instance).to receive(:get).with(
53
+ '/api/v2/client-grants', {
54
+ client_id: nil,
55
+ allow_any_organization: true,
56
+ audience: nil,
57
+ page: nil,
58
+ per_page: nil
59
+ })
60
+ expect { @instance.client_grants(allow_any_organization: true) }.not_to raise_error
61
+ end
47
62
  end
48
63
 
49
64
  context '.create_client_grant' do
@@ -73,4 +88,19 @@ describe Auth0::Api::V2::ClientGrants do
73
88
  it { expect { @instance.patch_client_grant('', nil) }.to raise_error 'Must specify a client grant id' }
74
89
  it { expect { @instance.patch_client_grant('some', nil) }.to raise_error 'Must specify a valid body' }
75
90
  end
91
+
92
+ context '.get_client_grants_organizations' do
93
+ it { expect(@instance).to respond_to(:get_client_grants_organizations) }
94
+ it 'is expected to send get to /api/v2/client-grants/organizations' do
95
+ expect(@instance).to receive(:get).with('/api/v2/client-grants/1/organizations', {
96
+ per_page: nil,
97
+ page: nil,
98
+ from: nil,
99
+ take: nil,
100
+ include_totals: nil
101
+ })
102
+ expect { @instance.get_client_grants_organizations('1') }.not_to raise_error
103
+ end
104
+ it { expect { @instance.get_client_grants_organizations('') }.to raise_error 'Must specify a client grant id' }
105
+ end
76
106
  end
@@ -639,4 +639,70 @@ describe Auth0::Api::V2::Organizations do
639
639
  expect { @instance.delete_organizations_member_roles('org_id', 'user_id') }.to raise_error 'Must supply an array of role ids'
640
640
  end
641
641
  end
642
+
643
+ context '.get_organizations_client_grants' do
644
+ it 'is expected to respond to a get_organizations_client_grants method' do
645
+ expect(@instance).to respond_to(:get_organizations_client_grants)
646
+ end
647
+
648
+ it 'is expected to get /api/v2/organizations/org_id/client-grants' do
649
+ expect(@instance).to receive(:get).with(
650
+ '/api/v2/organizations/org_id/client-grants', {
651
+ per_page: nil,
652
+ page: nil,
653
+ client_id: nil,
654
+ audience: nil,
655
+ include_totals: nil
656
+ })
657
+ expect { @instance.get_organizations_client_grants('org_id') }.not_to raise_error
658
+ end
659
+
660
+ it 'is expected to get /api/v2/organizations/org_id/client-grants with custom parameters' do
661
+ expect(@instance).to receive(:get).with(
662
+ '/api/v2/organizations/org_id/client-grants', {
663
+ per_page: 10,
664
+ page: 1,
665
+ client_id: 'client_id',
666
+ audience: 'api',
667
+ include_totals: true
668
+ })
669
+ expect do
670
+ @instance.get_organizations_client_grants(
671
+ 'org_id',
672
+ per_page: 10,
673
+ page: 1,
674
+ client_id: 'client_id',
675
+ audience: 'api',
676
+ include_totals: true
677
+ )
678
+ end.not_to raise_error
679
+ end
680
+ end
681
+
682
+ context '.create_organizations_client_grants' do
683
+ it 'is expected to respond to a create_organizations_client_grants method' do
684
+ expect(@instance).to respond_to(:create_organizations_client_grant)
685
+ end
686
+
687
+ it 'is expected to post /api/v2/organizations/org_id/client-grants' do
688
+ expect(@instance).to receive(:post).with(
689
+ '/api/v2/organizations/org_id/client-grants', {
690
+ grant_id: 'grant_id'
691
+ })
692
+ expect { @instance.create_organizations_client_grant('org_id', 'grant_id') }.not_to raise_error
693
+ end
694
+ end
695
+
696
+ context '.delete_organizations_client_grant' do
697
+ it 'is expected to respond to a delete_organizations_client_grant method' do
698
+ expect(@instance).to respond_to(:delete_organizations_client_grant)
699
+ end
700
+
701
+ it 'is expected to delete /api/v2/organizations/org_id/client-grants' do
702
+ expect(@instance).to receive(:delete).with(
703
+ '/api/v2/organizations/org_id/client-grants/grant_id')
704
+ expect { @instance.delete_organizations_client_grant('org_id', 'grant_id') }.not_to raise_error
705
+ end
706
+ end
707
+
642
708
  end
@@ -64,7 +64,8 @@ describe Auth0::Mixins::Initializer do
64
64
  grant_type: 'client_credentials',
65
65
  client_id: client_id,
66
66
  client_secret: client_secret,
67
- audience: api_identifier
67
+ audience: api_identifier,
68
+ organization: nil
68
69
  }
69
70
 
70
71
  expect(RestClient::Request).to receive(:execute) do |arg|
@@ -11,7 +11,8 @@ describe Auth0::Mixins::TokenManagement do
11
11
  grant_type: 'client_credentials',
12
12
  client_id: client_id,
13
13
  client_secret: client_secret,
14
- audience: api_identifier
14
+ audience: api_identifier,
15
+ organization: nil
15
16
  } }
16
17
 
17
18
  let(:params) { {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auth0
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.15.0
4
+ version: 5.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Auth0
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2023-10-30 00:00:00.000000000 Z
14
+ date: 2023-11-13 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rest-client
@@ -203,7 +203,6 @@ extensions: []
203
203
  extra_rdoc_files: []
204
204
  files:
205
205
  - ".bundle/config"
206
- - ".circleci/config.yml"
207
206
  - ".devcontainer/Dockerfile"
208
207
  - ".devcontainer/devcontainer.json"
209
208
  - ".env.example"
data/.circleci/config.yml DELETED
@@ -1,60 +0,0 @@
1
- version: 2.1
2
- orbs:
3
- ship: auth0/ship@0
4
- codecov: codecov/codecov@3
5
-
6
- matrix_ruby_versions: &matrix_ruby_versions
7
- matrix:
8
- parameters:
9
- ruby_version: ["3.0", "3.1", "3.2"]
10
- # Default version of ruby to use for lint and publishing
11
- default_ruby_version: &default_ruby_version "3.2"
12
-
13
- executors:
14
- ruby-image:
15
- parameters:
16
- ruby_version:
17
- type: string
18
- default: *default_ruby_version
19
- docker:
20
- - image: cimg/ruby:<< parameters.ruby_version >>
21
-
22
- jobs:
23
- run-tests:
24
- parameters:
25
- ruby_version:
26
- type: string
27
- default: *default_ruby_version
28
- executor:
29
- name: ruby-image
30
- ruby_version: << parameters.ruby_version >>
31
- steps:
32
- - checkout
33
- - run: gem install bundler:2.3.22
34
- - restore_cache:
35
- key: gems-v2-{{ checksum "Gemfile.lock" }}
36
- - run: bundle check --path=vendor/bundle || bundle install --path=vendor/bundle
37
- - save_cache:
38
- key: gems-v2-{{ checksum "Gemfile.lock" }}
39
- paths:
40
- - vendor/bundle
41
- # Must define DOMAIN, CLIENT_ID, CLIENT_SECRET and MASTER_JWT env
42
- - run: bundle exec rake test
43
- - codecov/upload:
44
- file: /home/circleci/project/coverage/coverage.xml
45
-
46
- workflows:
47
- tests:
48
- jobs:
49
- - run-tests:
50
- <<: *matrix_ruby_versions
51
- - ship/ruby-publish:
52
- context:
53
- - publish-rubygems
54
- - publish-gh
55
- filters:
56
- branches:
57
- only:
58
- - master
59
- requires:
60
- - run-tests