traitify 2.1.3 → 2.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +26 -22
- data/lib/traitify/response.rb +2 -0
- data/lib/traitify/version.rb +1 -1
- data/spec/traitify_spec.rb +20 -20
- data/traitify.gemspec +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: feed6897360bb3066938841923aa886175ddf19d1526de01469b7ae6ccce9e33
|
|
4
|
+
data.tar.gz: 82c74df22ce680c28892206a23d8068db93704a595b342e09368f776e0374b86
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: eaea796664d9301a5bd49d8d833da81237ffd57a248b81bf7cd7cd58b4b607afd0b0f5db482ee10b380a8e8e644ef557d830c46d6fcd37b33e79a558b80d3f1a
|
|
7
|
+
data.tar.gz: 6f277ccf18b51a321bdb6bb4d55d38f58b3a3b8fd6350d63a8053ddd5b1bedb25de92b806f78de294577987852543f020c61092af0461cc2061505c5b1b5d16d
|
data/Gemfile.lock
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
traitify (2.1.
|
|
5
|
-
activesupport (>= 5.1, <
|
|
4
|
+
traitify (2.1.4)
|
|
5
|
+
activesupport (>= 5.1, < 9)
|
|
6
6
|
faraday (~> 2.5)
|
|
7
7
|
faraday-net_http (~> 3.0)
|
|
8
8
|
faraday-retry (~> 2.2)
|
|
@@ -11,30 +11,29 @@ PATH
|
|
|
11
11
|
GEM
|
|
12
12
|
remote: https://rubygems.org/
|
|
13
13
|
specs:
|
|
14
|
-
activesupport (
|
|
14
|
+
activesupport (8.1.3)
|
|
15
15
|
base64
|
|
16
|
-
benchmark (>= 0.3)
|
|
17
16
|
bigdecimal
|
|
18
|
-
concurrent-ruby (~> 1.0, >= 1.
|
|
17
|
+
concurrent-ruby (~> 1.0, >= 1.3.1)
|
|
19
18
|
connection_pool (>= 2.2.5)
|
|
20
19
|
drb
|
|
21
20
|
i18n (>= 1.6, < 2)
|
|
21
|
+
json
|
|
22
22
|
logger (>= 1.4.2)
|
|
23
23
|
minitest (>= 5.1)
|
|
24
|
-
mutex_m
|
|
25
24
|
securerandom (>= 0.3)
|
|
26
|
-
tzinfo (~> 2.0)
|
|
25
|
+
tzinfo (~> 2.0, >= 2.0.5)
|
|
26
|
+
uri (>= 0.13.1)
|
|
27
27
|
addressable (2.8.7)
|
|
28
28
|
public_suffix (>= 2.0.2, < 7.0)
|
|
29
29
|
ast (2.4.3)
|
|
30
30
|
base64 (0.3.0)
|
|
31
|
-
|
|
32
|
-
bigdecimal (3.3.0)
|
|
31
|
+
bigdecimal (4.1.2)
|
|
33
32
|
binding_of_caller (1.0.1)
|
|
34
33
|
debug_inspector (>= 1.2.0)
|
|
35
34
|
coderay (1.1.3)
|
|
36
|
-
concurrent-ruby (1.3.
|
|
37
|
-
connection_pool (
|
|
35
|
+
concurrent-ruby (1.3.6)
|
|
36
|
+
connection_pool (3.0.2)
|
|
38
37
|
crack (1.0.0)
|
|
39
38
|
bigdecimal
|
|
40
39
|
rexml
|
|
@@ -42,15 +41,16 @@ GEM
|
|
|
42
41
|
diff-lcs (1.6.2)
|
|
43
42
|
docile (1.4.1)
|
|
44
43
|
drb (2.2.3)
|
|
45
|
-
faraday (2.
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
faraday-net_http (3.
|
|
50
|
-
|
|
44
|
+
faraday (2.14.1)
|
|
45
|
+
faraday-net_http (>= 2.0, < 3.5)
|
|
46
|
+
json
|
|
47
|
+
logger
|
|
48
|
+
faraday-net_http (3.4.2)
|
|
49
|
+
net-http (~> 0.5)
|
|
50
|
+
faraday-retry (2.4.0)
|
|
51
51
|
faraday (~> 2.0)
|
|
52
52
|
hashdiff (1.2.1)
|
|
53
|
-
i18n (1.14.
|
|
53
|
+
i18n (1.14.8)
|
|
54
54
|
concurrent-ruby (~> 1.0)
|
|
55
55
|
json (2.15.1)
|
|
56
56
|
jwt (2.10.2)
|
|
@@ -59,8 +59,11 @@ GEM
|
|
|
59
59
|
lint_roller (1.1.0)
|
|
60
60
|
logger (1.7.0)
|
|
61
61
|
method_source (1.1.0)
|
|
62
|
-
minitest (
|
|
63
|
-
|
|
62
|
+
minitest (6.0.6)
|
|
63
|
+
drb (~> 2.0)
|
|
64
|
+
prism (~> 1.5)
|
|
65
|
+
net-http (0.9.1)
|
|
66
|
+
uri (>= 0.11.1)
|
|
64
67
|
parallel (1.27.0)
|
|
65
68
|
parser (3.3.9.0)
|
|
66
69
|
ast (~> 2.4.1)
|
|
@@ -133,8 +136,7 @@ GEM
|
|
|
133
136
|
rubocop-traitify (1.3.0)
|
|
134
137
|
rubocop-airbnb (~> 8.0.0)
|
|
135
138
|
ruby-progressbar (1.13.0)
|
|
136
|
-
|
|
137
|
-
securerandom (0.3.2)
|
|
139
|
+
securerandom (0.4.1)
|
|
138
140
|
simplecov (0.21.2)
|
|
139
141
|
docile (~> 1.1)
|
|
140
142
|
simplecov-html (~> 0.11)
|
|
@@ -146,6 +148,7 @@ GEM
|
|
|
146
148
|
unicode-display_width (3.2.0)
|
|
147
149
|
unicode-emoji (~> 4.1)
|
|
148
150
|
unicode-emoji (4.1.0)
|
|
151
|
+
uri (1.1.1)
|
|
149
152
|
webmock (3.25.1)
|
|
150
153
|
addressable (>= 2.8.0)
|
|
151
154
|
crack (>= 0.3.2)
|
|
@@ -154,6 +157,7 @@ GEM
|
|
|
154
157
|
PLATFORMS
|
|
155
158
|
arm64-darwin-20
|
|
156
159
|
arm64-darwin-21
|
|
160
|
+
arm64-darwin-24
|
|
157
161
|
x86_64-linux
|
|
158
162
|
|
|
159
163
|
DEPENDENCIES
|
data/lib/traitify/response.rb
CHANGED
data/lib/traitify/version.rb
CHANGED
data/spec/traitify_spec.rb
CHANGED
|
@@ -2,8 +2,8 @@ require "spec_helper"
|
|
|
2
2
|
|
|
3
3
|
describe Traitify do
|
|
4
4
|
describe ".valid_jwt_token?" do
|
|
5
|
-
let(:private_key){ OpenSSL::PKey::
|
|
6
|
-
let(:
|
|
5
|
+
let(:private_key){ OpenSSL::PKey::EC.generate("prime256v1") }
|
|
6
|
+
let(:public_key_pem){ private_key.public_to_pem }
|
|
7
7
|
let(:valid_payload) do
|
|
8
8
|
{
|
|
9
9
|
iss: "Traitify by Paradox",
|
|
@@ -14,7 +14,7 @@ describe Traitify do
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
before do
|
|
17
|
-
Traitify.jwt_public_keys = [
|
|
17
|
+
Traitify.jwt_public_keys = [public_key_pem]
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
after do
|
|
@@ -23,7 +23,7 @@ describe Traitify do
|
|
|
23
23
|
|
|
24
24
|
context "with valid token" do
|
|
25
25
|
let(:valid_token) do
|
|
26
|
-
JWT.encode(valid_payload, private_key, "
|
|
26
|
+
JWT.encode(valid_payload, private_key, "ES256")
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
it "returns true" do
|
|
@@ -33,8 +33,8 @@ describe Traitify do
|
|
|
33
33
|
|
|
34
34
|
context "with invalid signature" do
|
|
35
35
|
let(:invalid_token) do
|
|
36
|
-
other_private_key = OpenSSL::PKey::
|
|
37
|
-
JWT.encode(valid_payload, other_private_key, "
|
|
36
|
+
other_private_key = OpenSSL::PKey::EC.generate("prime256v1")
|
|
37
|
+
JWT.encode(valid_payload, other_private_key, "ES256")
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
it "returns false" do
|
|
@@ -55,7 +55,7 @@ describe Traitify do
|
|
|
55
55
|
valid_payload.merge(iat: 1.hour.ago.to_i, exp: 1.hour.ago.to_i)
|
|
56
56
|
end
|
|
57
57
|
let(:expired_token) do
|
|
58
|
-
JWT.encode(expired_payload, private_key, "
|
|
58
|
+
JWT.encode(expired_payload, private_key, "ES256")
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
it "returns false" do
|
|
@@ -68,7 +68,7 @@ describe Traitify do
|
|
|
68
68
|
valid_payload.merge(iss: "Wrong Issuer")
|
|
69
69
|
end
|
|
70
70
|
let(:wrong_issuer_token) do
|
|
71
|
-
JWT.encode(wrong_issuer_payload, private_key, "
|
|
71
|
+
JWT.encode(wrong_issuer_payload, private_key, "ES256")
|
|
72
72
|
end
|
|
73
73
|
|
|
74
74
|
it "returns false" do
|
|
@@ -77,16 +77,16 @@ describe Traitify do
|
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
context "with multiple public keys" do
|
|
80
|
-
let(:legacy_private_key){ OpenSSL::PKey::
|
|
81
|
-
let(:
|
|
80
|
+
let(:legacy_private_key){ OpenSSL::PKey::EC.generate("prime256v1") }
|
|
81
|
+
let(:legacy_public_key_pem){ legacy_private_key.public_to_pem }
|
|
82
82
|
|
|
83
83
|
before do
|
|
84
|
-
Traitify.jwt_public_keys = [
|
|
84
|
+
Traitify.jwt_public_keys = [public_key_pem, legacy_public_key_pem]
|
|
85
85
|
end
|
|
86
86
|
|
|
87
87
|
context "when token is signed with current key" do
|
|
88
88
|
let(:current_token) do
|
|
89
|
-
JWT.encode(valid_payload, private_key, "
|
|
89
|
+
JWT.encode(valid_payload, private_key, "ES256")
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
it "returns true" do
|
|
@@ -96,7 +96,7 @@ describe Traitify do
|
|
|
96
96
|
|
|
97
97
|
context "when token is signed with legacy key" do
|
|
98
98
|
let(:legacy_token) do
|
|
99
|
-
JWT.encode(valid_payload, legacy_private_key, "
|
|
99
|
+
JWT.encode(valid_payload, legacy_private_key, "ES256")
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
it "returns true" do
|
|
@@ -115,7 +115,7 @@ describe Traitify do
|
|
|
115
115
|
}
|
|
116
116
|
end
|
|
117
117
|
let(:future_iat_token) do
|
|
118
|
-
JWT.encode(future_iat_payload, private_key, "
|
|
118
|
+
JWT.encode(future_iat_payload, private_key, "ES256")
|
|
119
119
|
end
|
|
120
120
|
|
|
121
121
|
it "returns false" do
|
|
@@ -133,7 +133,7 @@ describe Traitify do
|
|
|
133
133
|
}
|
|
134
134
|
end
|
|
135
135
|
let(:future_nbf_token) do
|
|
136
|
-
JWT.encode(future_nbf_payload, private_key, "
|
|
136
|
+
JWT.encode(future_nbf_payload, private_key, "ES256")
|
|
137
137
|
end
|
|
138
138
|
|
|
139
139
|
it "returns false" do
|
|
@@ -150,7 +150,7 @@ describe Traitify do
|
|
|
150
150
|
}
|
|
151
151
|
end
|
|
152
152
|
let(:missing_jti_token) do
|
|
153
|
-
JWT.encode(missing_jti_payload, private_key, "
|
|
153
|
+
JWT.encode(missing_jti_payload, private_key, "ES256")
|
|
154
154
|
end
|
|
155
155
|
|
|
156
156
|
it "returns false" do
|
|
@@ -168,7 +168,7 @@ describe Traitify do
|
|
|
168
168
|
}
|
|
169
169
|
end
|
|
170
170
|
let(:blank_jti_token) do
|
|
171
|
-
JWT.encode(blank_jti_payload, private_key, "
|
|
171
|
+
JWT.encode(blank_jti_payload, private_key, "ES256")
|
|
172
172
|
end
|
|
173
173
|
|
|
174
174
|
it "returns false" do
|
|
@@ -186,7 +186,7 @@ describe Traitify do
|
|
|
186
186
|
}
|
|
187
187
|
end
|
|
188
188
|
let(:nil_jti_token) do
|
|
189
|
-
JWT.encode(nil_jti_payload, private_key, "
|
|
189
|
+
JWT.encode(nil_jti_payload, private_key, "ES256")
|
|
190
190
|
end
|
|
191
191
|
|
|
192
192
|
it "returns false" do
|
|
@@ -203,7 +203,7 @@ describe Traitify do
|
|
|
203
203
|
}
|
|
204
204
|
end
|
|
205
205
|
let(:missing_iat_token) do
|
|
206
|
-
JWT.encode(missing_iat_payload, private_key, "
|
|
206
|
+
JWT.encode(missing_iat_payload, private_key, "ES256")
|
|
207
207
|
end
|
|
208
208
|
|
|
209
209
|
it "returns true" do
|
|
@@ -220,7 +220,7 @@ describe Traitify do
|
|
|
220
220
|
}
|
|
221
221
|
end
|
|
222
222
|
let(:missing_nbf_token) do
|
|
223
|
-
JWT.encode(missing_nbf_payload, private_key, "
|
|
223
|
+
JWT.encode(missing_nbf_payload, private_key, "ES256")
|
|
224
224
|
end
|
|
225
225
|
|
|
226
226
|
it "returns true" do
|
data/traitify.gemspec
CHANGED
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
19
|
spec.require_paths = ["lib"]
|
|
20
20
|
|
|
21
|
-
spec.add_runtime_dependency "activesupport", ">= 5.1", "<
|
|
21
|
+
spec.add_runtime_dependency "activesupport", ">= 5.1", "< 9"
|
|
22
22
|
spec.add_runtime_dependency "faraday", "~> 2.5"
|
|
23
23
|
spec.add_runtime_dependency "faraday-net_http", "~> 3.0"
|
|
24
24
|
spec.add_runtime_dependency "faraday-retry", "~> 2.2"
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: traitify
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.1.
|
|
4
|
+
version: 2.1.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tom Prats
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2026-01
|
|
13
|
+
date: 2026-05-01 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: activesupport
|
|
@@ -21,7 +21,7 @@ dependencies:
|
|
|
21
21
|
version: '5.1'
|
|
22
22
|
- - "<"
|
|
23
23
|
- !ruby/object:Gem::Version
|
|
24
|
-
version:
|
|
24
|
+
version: '9'
|
|
25
25
|
type: :runtime
|
|
26
26
|
prerelease: false
|
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -31,7 +31,7 @@ dependencies:
|
|
|
31
31
|
version: '5.1'
|
|
32
32
|
- - "<"
|
|
33
33
|
- !ruby/object:Gem::Version
|
|
34
|
-
version:
|
|
34
|
+
version: '9'
|
|
35
35
|
- !ruby/object:Gem::Dependency
|
|
36
36
|
name: faraday
|
|
37
37
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -290,7 +290,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
290
290
|
- !ruby/object:Gem::Version
|
|
291
291
|
version: '0'
|
|
292
292
|
requirements: []
|
|
293
|
-
rubygems_version: 3.
|
|
293
|
+
rubygems_version: 3.5.11
|
|
294
294
|
signing_key:
|
|
295
295
|
specification_version: 4
|
|
296
296
|
summary: Traitify Gem
|