Skip to content

Commit 2db4736

Browse files
authored
Merge pull request #58 from envato/jaf/rack-3-support
Fix compatibility with Rack 3 + general tidy up
2 parents a06e196 + 9a86076 commit 2db4736

19 files changed

+124
-32
lines changed

.github/workflows/test.yml

+22-14
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,35 @@
11
---
22
name: tests
3-
on: [ push, pull_request ]
3+
on: [push, pull_request]
44
jobs:
55
test:
66
name: Test (Ruby ${{ matrix.ruby }} on ${{ matrix.gemfile }})
77
runs-on: ubuntu-latest
88
strategy:
99
fail-fast: false
1010
matrix:
11-
ruby: [ '2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2', '3.3' ]
12-
gemfile: [ 'faraday_1.10.0', 'faraday_2.1.0', 'faraday_2.2.0', 'faraday_2.3.0', 'jwt_1.5.6', 'jwt_2.2.3', 'jwt_2.3.0', 'jwt_2.4.1' ]
11+
ruby: ["2.6", "2.7", "3.0", "3.1", "3.2", "3.3"]
12+
gemfile:
13+
[
14+
"faraday_1.10.0",
15+
"faraday_2.8.0",
16+
"faraday_2.9.0",
17+
"faraday_2.10.0",
18+
"jwt_1.5.0",
19+
"jwt_2.6.0",
20+
"jwt_2.7.0",
21+
"jwt_2.8.0",
22+
"rack_2.1.0",
23+
"rack_2.2.0",
24+
"rack_3.0.0",
25+
"rack_3.1.0",
26+
]
1327
exclude:
14-
- { ruby: '2.4', gemfile: 'faraday_2.1.0' }
15-
- { ruby: '2.4', gemfile: 'faraday_2.2.0' }
16-
- { ruby: '2.4', gemfile: 'faraday_2.3.0' }
17-
- { ruby: '2.4', gemfile: 'jwt_2.4.1' }
18-
- { ruby: '2.5', gemfile: 'faraday_2.1.0' }
19-
- { ruby: '2.5', gemfile: 'faraday_2.2.0' }
20-
- { ruby: '2.5', gemfile: 'faraday_2.3.0' }
21-
- { ruby: '3.0', gemfile: 'faraday_1.10.0' }
22-
- { ruby: '3.1', gemfile: 'faraday_1.10.0' }
23-
- { ruby: '3.2', gemfile: 'faraday_1.10.0' }
24-
- { ruby: '3.3', gemfile: 'faraday_1.10.0' }
28+
- { ruby: "2.6", gemfile: "faraday_2.9.0" }
29+
- { ruby: "2.7", gemfile: "faraday_2.9.0" }
30+
- { ruby: "2.6", gemfile: "faraday_2.10.0" }
31+
- { ruby: "2.7", gemfile: "faraday_2.10.0" }
32+
- { ruby: "3.3", gemfile: "rack_2.1.0" }
2533

2634
env: # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps
2735
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile

Appraisals

+22-9
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,38 @@
33
# Latest JWT minor versions
44
# Source: https://rubygems.org/gems/jwt/versions
55
%w[
6-
1.5.6
7-
2.2.3
8-
2.3.0
9-
2.4.1
6+
1.5.0
7+
2.6.0
8+
2.7.0
9+
2.8.0
1010
].each do |jwt_version|
1111
appraise "jwt-#{jwt_version}" do
12-
gem "jwt", jwt_version
12+
gem 'jwt', "~> #{jwt_version}"
1313
end
1414
end
1515

1616
# Latest Faraday minor versions
1717
# Source: https://rubygems.org/gems/faraday/versions
1818
%w[
1919
1.10.0
20-
2.1.0
21-
2.2.0
22-
2.3.0
20+
2.8.0
21+
2.9.0
22+
2.10.0
2323
].each do |faraday_version|
2424
appraise "faraday-#{faraday_version}" do
25-
gem "faraday", faraday_version, require: false
25+
gem 'faraday', "~> #{faraday_version}", require: false
26+
end
27+
end
28+
29+
# Latest Rack minor versions
30+
# Source: https://rubygems.org/gems/rack/versions
31+
%w[
32+
2.1.0
33+
2.2.0
34+
3.0.0
35+
3.1.0
36+
].each do |rack_version|
37+
appraise "rack-#{rack_version}" do
38+
gem 'rack', "~> #{rack_version}"
2639
end
2740
end

CHANGELOG.md

+15
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,26 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
66

77
## Unreleased
88

9+
## [v4.0.0]
10+
911
### Changed
1012

1113
- Moved CI build to GitHub Actions ([#52]).
14+
- Updated test matrix to test against the following gem versions, any gem versions outside of this matrix are no longer fully supported ([#58]):
15+
- `faraday`: `~> 1.10.0`, `~> 2.8.0`, `~> 2.9.0` & `~> 2.10.0`
16+
- `jwt`: `~> 1.5.0`, `~> 2.6.0`, `~> 2.7.0` & `~> 2.8.0`
17+
- `rack`: `~> 2.1.0`
18+
- Removed support for Ruby 2.4 & 2.5 ([#58])
19+
- Add Ruby 3.3 ([#56]), 3.2 ([#55]) to our test matrix
20+
21+
### Fixed
22+
23+
- Compatibility with Rack 3+ ([#58])
1224

1325
[#52]: https://github.com/envato/jwt_signed_request/pull/52
26+
[#55]: https://github.com/envato/jwt_signed_request/pull/55
27+
[#56]: https://github.com/envato/jwt_signed_request/pull/56
28+
[#58]: https://github.com/envato/jwt_signed_request/pull/58
1429

1530
## [v3.0.0] - 2021-01-12
1631

README.md

+6
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,12 @@ Configured versions are defined in [Appraisals](./Appraisals), which at time of
299299
].each do |jwt_version|
300300
```
301301

302+
Ensure you set up your local environment by running:
303+
304+
```sh
305+
bundle exec appraisal install
306+
```
307+
302308
Run the test suite like this:
303309

304310
```sh

gemfiles/faraday_1.10.0.gemfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
source "https://rubygems.org"
44

5-
gem "faraday", "1.10.0", require: false
5+
gem "faraday", "~> 1.10.0", require: false
66

77
gemspec path: "../"

gemfiles/faraday_2.3.0.gemfile gemfiles/faraday_2.10.0.gemfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
source "https://rubygems.org"
44

5-
gem "faraday", "2.3.0", require: false
5+
gem "faraday", "~> 2.10.0", require: false
66

77
gemspec path: "../"

gemfiles/faraday_2.1.0.gemfile gemfiles/faraday_2.8.0.gemfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
source "https://rubygems.org"
44

5-
gem "faraday", "2.1.0", require: false
5+
gem "faraday", "~> 2.8.0", require: false
66

77
gemspec path: "../"

gemfiles/faraday_2.2.0.gemfile gemfiles/faraday_2.9.0.gemfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
source "https://rubygems.org"
44

5-
gem "faraday", "2.2.0", require: false
5+
gem "faraday", "~> 2.9.0", require: false
66

77
gemspec path: "../"

gemfiles/jwt_2.2.3.gemfile gemfiles/jwt_1.5.0.gemfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
source "https://rubygems.org"
44

55
gem "faraday", require: false
6-
gem "jwt", "2.2.3"
6+
gem "jwt", "~> 1.5.0"
77

88
gemspec path: "../"

gemfiles/jwt_2.3.0.gemfile gemfiles/jwt_2.6.0.gemfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
source "https://rubygems.org"
44

55
gem "faraday", require: false
6-
gem "jwt", "2.3.0"
6+
gem "jwt", "~> 2.6.0"
77

88
gemspec path: "../"

gemfiles/jwt_2.4.1.gemfile gemfiles/jwt_2.7.0.gemfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
source "https://rubygems.org"
44

55
gem "faraday", require: false
6-
gem "jwt", "2.4.1"
6+
gem "jwt", "~> 2.7.0"
77

88
gemspec path: "../"

gemfiles/jwt_1.5.6.gemfile gemfiles/jwt_2.8.0.gemfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
source "https://rubygems.org"
44

55
gem "faraday", require: false
6-
gem "jwt", "1.5.6"
6+
gem "jwt", "~> 2.8.0"
77

88
gemspec path: "../"

gemfiles/rack_2.1.0.gemfile

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# This file was generated by Appraisal
2+
3+
source "https://rubygems.org"
4+
5+
gem "faraday", require: false
6+
gem "rack", "~> 2.1.0"
7+
8+
gemspec path: "../"

gemfiles/rack_2.2.0.gemfile

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# This file was generated by Appraisal
2+
3+
source "https://rubygems.org"
4+
5+
gem "faraday", require: false
6+
gem "rack", "~> 2.2.0"
7+
8+
gemspec path: "../"

gemfiles/rack_3.0.0.gemfile

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# This file was generated by Appraisal
2+
3+
source "https://rubygems.org"
4+
5+
gem "faraday", require: false
6+
gem "rack", "~> 3.0.0"
7+
8+
gemspec path: "../"

gemfiles/rack_3.1.0.gemfile

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# This file was generated by Appraisal
2+
3+
source "https://rubygems.org"
4+
5+
gem "faraday", require: false
6+
gem "rack", "~> 3.1.0"
7+
8+
gemspec path: "../"

lib/jwt_signed_request/verify.rb

+3
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,9 @@ def verify_request!
109109
end
110110

111111
def request_body
112+
return '' if request.body.nil?
113+
114+
request.body.rewind
112115
string = request.body.read
113116
request.body.rewind
114117
string

lib/jwt_signed_request/version.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# frozen_string_literal: true
22

33
module JWTSignedRequest
4-
VERSION = '3.0.0'
4+
VERSION = '4.0.0'
55
end

spec/jwt_signed_request/verify_spec.rb

+15
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,21 @@
221221
expect(request.body.read).to eq 'data=body'
222222
end
223223

224+
context 'and the body has already been read' do
225+
before do
226+
body.read
227+
end
228+
229+
it 'does not raise any errors' do
230+
expect { verify_request }.not_to raise_error
231+
end
232+
233+
it 'allows the body to be read' do
234+
verify_request
235+
expect(request.body.read).to eq 'data=body'
236+
end
237+
end
238+
224239
context 'when secret key and algorithm are unspecified' do
225240
subject(:verify_request) { described_class.call(request: request) }
226241

0 commit comments

Comments
 (0)