drillbit 2.11.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/drillbit.rb +1 -0
- data/lib/drillbit/accept_header.rb +1 -0
- data/lib/drillbit/authorizable_resource.rb +61 -60
- data/lib/drillbit/authorizers/parameters.rb +1 -0
- data/lib/drillbit/authorizers/parameters/filtering.rb +7 -6
- data/lib/drillbit/authorizers/parameters/inclusions.rb +6 -9
- data/lib/drillbit/authorizers/parameters/resource.rb +20 -19
- data/lib/drillbit/authorizers/query.rb +1 -0
- data/lib/drillbit/authorizers/scope.rb +5 -4
- data/lib/drillbit/compatibility/controllers.rb +1 -0
- data/lib/drillbit/configuration.rb +14 -16
- data/lib/drillbit/errors/invalid_api_request.rb +1 -0
- data/lib/drillbit/errors/invalid_request_body.rb +1 -0
- data/lib/drillbit/errors/invalid_subdomain.rb +1 -0
- data/lib/drillbit/errors/invalid_token.rb +1 -0
- data/lib/drillbit/errors/unpermitted_inclusions.rb +1 -0
- data/lib/drillbit/matchers/accept_header.rb +1 -0
- data/lib/drillbit/matchers/generic.rb +4 -3
- data/lib/drillbit/matchers/subdomain.rb +5 -6
- data/lib/drillbit/matchers/version.rb +3 -2
- data/lib/drillbit/middleware/api_request_validator.rb +4 -3
- data/lib/drillbit/middleware/parameter_parser.rb +1 -0
- data/lib/drillbit/middleware/token_processor.rb +1 -0
- data/lib/drillbit/parameters/filter.rb +12 -11
- data/lib/drillbit/parameters/index.rb +3 -2
- data/lib/drillbit/parameters/page.rb +1 -0
- data/lib/drillbit/parameters/sort.rb +1 -0
- data/lib/drillbit/requests/base.rb +1 -1
- data/lib/drillbit/requests/rack.rb +3 -0
- data/lib/drillbit/requests/rails.rb +1 -0
- data/lib/drillbit/resource.rb +1 -0
- data/lib/drillbit/resource/model.rb +5 -4
- data/lib/drillbit/resource/naming.rb +11 -10
- data/lib/drillbit/resource/processors/filtering.rb +1 -0
- data/lib/drillbit/resource/processors/indexing.rb +1 -0
- data/lib/drillbit/resource/processors/paging.rb +4 -3
- data/lib/drillbit/resource/processors/sorting.rb +1 -0
- data/lib/drillbit/responses/invalid_api_request.rb +3 -0
- data/lib/drillbit/responses/invalid_request_body.rb +3 -0
- data/lib/drillbit/responses/invalid_subdomain.rb +3 -0
- data/lib/drillbit/responses/invalid_token.rb +3 -0
- data/lib/drillbit/serializers/json_api.rb +12 -11
- data/lib/drillbit/tokens/base64.rb +1 -0
- data/lib/drillbit/tokens/base64s/invalid.rb +1 -0
- data/lib/drillbit/tokens/base64s/null.rb +1 -0
- data/lib/drillbit/tokens/invalid.rb +1 -0
- data/lib/drillbit/tokens/json_web_token.rb +6 -5
- data/lib/drillbit/tokens/json_web_tokens/invalid.rb +1 -0
- data/lib/drillbit/tokens/json_web_tokens/null.rb +1 -0
- data/lib/drillbit/tokens/json_web_tokens/password_reset.rb +1 -0
- data/lib/drillbit/tokens/null.rb +1 -0
- data/lib/drillbit/utilities/string.rb +1 -0
- data/lib/drillbit/version.rb +2 -1
- metadata +28 -94
- metadata.gz.sig +0 -0
- data/Rakefile +0 -2
- data/spec/drillbit/accept_header_spec.rb +0 -119
- data/spec/drillbit/authorizers/parameters/filtering_spec.rb +0 -101
- data/spec/drillbit/authorizers/parameters/resource_spec.rb +0 -12
- data/spec/drillbit/authorizers/parameters_spec.rb +0 -19
- data/spec/drillbit/authorizers/query_spec.rb +0 -24
- data/spec/drillbit/authorizers/scope_spec.rb +0 -21
- data/spec/drillbit/errors/invalid_api_request_spec.rb +0 -31
- data/spec/drillbit/errors/invalid_request_body_spec.rb +0 -25
- data/spec/drillbit/errors/invalid_subdomain_spec.rb +0 -30
- data/spec/drillbit/errors/invalid_token_spec.rb +0 -24
- data/spec/drillbit/invalid_subdomain_spec.rb +0 -45
- data/spec/drillbit/invalid_token_spec.rb +0 -44
- data/spec/drillbit/matchers/accept_header_spec.rb +0 -114
- data/spec/drillbit/matchers/subdomain_spec.rb +0 -78
- data/spec/drillbit/matchers/version_spec.rb +0 -86
- data/spec/drillbit/middleware/api_request_validator_spec.rb +0 -185
- data/spec/drillbit/middleware/parameter_parser_spec.rb +0 -200
- data/spec/drillbit/middleware/token_processor_spec.rb +0 -27
- data/spec/drillbit/requests/base_spec.rb +0 -37
- data/spec/drillbit/requests/rack_spec.rb +0 -252
- data/spec/drillbit/requests/rails_spec.rb +0 -264
- data/spec/drillbit/resource/model_spec.rb +0 -64
- data/spec/drillbit/resource/processors/filtering_spec.rb +0 -106
- data/spec/drillbit/resource/processors/indexing_spec.rb +0 -45
- data/spec/drillbit/resource/processors/paging_spec.rb +0 -74
- data/spec/drillbit/resource/processors/sorting_spec.rb +0 -66
- data/spec/drillbit/tokens/base64_spec.rb +0 -44
- data/spec/drillbit/tokens/json_web_token_spec.rb +0 -231
- data/spec/drillbit/tokens/json_web_tokens/password_reset_spec.rb +0 -43
- data/spec/fixtures/test_rsa_key +0 -27
- data/spec/fixtures/test_rsa_key.pub +0 -9
- data/spec/spec_helper.rb +0 -4
- data/spec/support/private_keys.rb +0 -42
@@ -1,43 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require 'rspeckled/spec_helpers/rspeckled'
|
3
|
-
require 'drillbit/tokens/json_web_tokens/password_reset'
|
4
|
-
|
5
|
-
module Drillbit
|
6
|
-
module Tokens
|
7
|
-
module JsonWebTokens
|
8
|
-
describe PasswordReset do
|
9
|
-
it 'can build a token that expires during the password reset timeframe', :time_mock do
|
10
|
-
token = JsonWebToken.build(id: 'test_id',
|
11
|
-
subject_id: 'subject_id',
|
12
|
-
token_private_key: test_private_key)
|
13
|
-
|
14
|
-
jwe_s = token.to_jwe_s
|
15
|
-
|
16
|
-
converted_token = JsonWebToken.from_jwe(jwe_s,
|
17
|
-
private_key: test_private_key)
|
18
|
-
|
19
|
-
expect(converted_token.to_h).to eql(
|
20
|
-
[
|
21
|
-
{
|
22
|
-
'aud' => 'public',
|
23
|
-
'exp' => 1_343_930_400,
|
24
|
-
'iat' => 1_343_325_600,
|
25
|
-
'iss' => 'drillbit',
|
26
|
-
'jti' => 'test_id',
|
27
|
-
'nbf' => 1_343_325_600,
|
28
|
-
'own' => 'subject_id',
|
29
|
-
'rol' => 'standard',
|
30
|
-
'sid' => 'subject_id',
|
31
|
-
'sub' => 'User',
|
32
|
-
},
|
33
|
-
{
|
34
|
-
'typ' => 'JWT',
|
35
|
-
'alg' => 'RS256',
|
36
|
-
},
|
37
|
-
],
|
38
|
-
)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
data/spec/fixtures/test_rsa_key
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
-----BEGIN RSA PRIVATE KEY-----
|
2
|
-
MIIEpQIBAAKCAQEAzQNhPtJl68EAoLBh92nBpDlif2M61dS+HBoRinfWT5sD3CeJ
|
3
|
-
eMPmlj9vqOdmBzBfMuoHkr3QPVjTAvsTMthoVFKVUEA28eglFABZYP99+VDIKJtr
|
4
|
-
rpXMkwjKBXaXP58QZ1bkQfMdNHuKC9xY7w4tpZP3q3PcW7xqI2bR/APQPfW3xfhU
|
5
|
-
8gDAVWkv0+LM76wcGdqfqXd/Z7P9ZtXb74qI575KZR6l+4v22ZYOn0yYL3wc0g3l
|
6
|
-
jskF5qeTD4nuSqSzIanYAIo+0jy/BLY9gzFUQPS1Z4INtkEVwX9TO1IpwJvYpqYU
|
7
|
-
0KpJSo5G5eyxM37iQWTTCbmq2byanRLlinXstQIDAQABAoIBAQChO+VBGQubTCEI
|
8
|
-
P2/suznVxGPYt9vPzA7v3vioo/LijJGOlXGijr9MrvtMJSCyyrI0QqZOHAYoGTFr
|
9
|
-
CLdip5v1pTVU9gvAWMjAYD3q8UTLzWJ9vS4FEj7f7GulvEzbdmfaPhYqX986JWa+
|
10
|
-
ST+QUuBHdoW0S9ykMRxwVy8SOpWOA8YqfRbb9J4IYwbYXIDv7yJNE039x3cVqp1Q
|
11
|
-
oSoOjW0rka0NObjjEJuJTZKpshze08B6gL1Vi7lcUWyeCXuDbMh18dSGEYU2YN2f
|
12
|
-
9eMLXI981zgBP8BnnR6UuSR2PpsLRSkqC7ZPGZZXC/xP3Ln+I8YPmqMlUDtXeaMf
|
13
|
-
zLmBGCoJAoGBAPl1sMFne3E4kFscjyYQytqED2h0DUF4zT4tefUL7wTwsTm6WTgW
|
14
|
-
8xYlegW5kvdFsVq7PM1hLTNKK74QRoHFn+uwyCw9w9/fmU2FJ3BIB4MhFyQRu0MM
|
15
|
-
J/3qJHHjILFz+gHYMtxsWEnAviWPPznxR0ocP+6eSE9HerZqOyBnpoP3AoGBANJj
|
16
|
-
YDH1K8RneSTYDSqJ93yM2wE+Y0YutOeteJOyOtpA8Xdi7V81BcHo4aemjZ6kyjIF
|
17
|
-
KydYbWh/9dekY89QrUOjQOwfFon7Gf3RHZAklgy4Kibkyt29fakP3m+CCdQJhPrM
|
18
|
-
y/c5HpCG1M/pyizAg8O3l6bmn4QfNgH+DmOCTdGzAoGAEsvFV60+ZdeHOPY76vhU
|
19
|
-
8IYGyy4DWa2KeWbfy5Dsn4irMdhSpKFGC6MjQI8s/aiopld5S1hJGZY7GYUMavbD
|
20
|
-
B/U3/+1fdtzYJjkkMZebyUuS/MrBO1oNIVqlCFe+vOAqND1gB6+6L0Rwj0/tyaXe
|
21
|
-
Yz0hrA8ND7wpCNmUPurQZx0CgYEAi3VYJIVx16UHRob4Y0RFCwiLe42RXMpFHHV+
|
22
|
-
wdiY7meyKAMpeby57kmimvDqW0i8xt9qNZCGJYj8u0664oeF8pnaxSnuVNRf7EGb
|
23
|
-
qRq3ZAMH3fQ3DTk4fMKKHbxDK4yL23u5kE0Kl57onlFItNWAAlJGclnZT0kpEbUI
|
24
|
-
cKnFT8UCgYEApdfJ7GCA3vz45AWV9ya16BwfwTcmLnL2YsfbF+d1Rb3Frzl1G+kj
|
25
|
-
UG8TuiRAF2oTQSlXaU1118Fty9DN5goC+N8NQuz6neVPD47on8J7BkjtfTVY7Jbi
|
26
|
-
hDxOp9E0EpC5EfHarYyfst1/iWQqRbqJZe7414EhAlfL2T5a6Y05j/g=
|
27
|
-
-----END RSA PRIVATE KEY-----
|
@@ -1,9 +0,0 @@
|
|
1
|
-
-----BEGIN PUBLIC KEY-----
|
2
|
-
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzQNhPtJl68EAoLBh92nB
|
3
|
-
pDlif2M61dS+HBoRinfWT5sD3CeJeMPmlj9vqOdmBzBfMuoHkr3QPVjTAvsTMtho
|
4
|
-
VFKVUEA28eglFABZYP99+VDIKJtrrpXMkwjKBXaXP58QZ1bkQfMdNHuKC9xY7w4t
|
5
|
-
pZP3q3PcW7xqI2bR/APQPfW3xfhU8gDAVWkv0+LM76wcGdqfqXd/Z7P9ZtXb74qI
|
6
|
-
575KZR6l+4v22ZYOn0yYL3wc0g3ljskF5qeTD4nuSqSzIanYAIo+0jy/BLY9gzFU
|
7
|
-
QPS1Z4INtkEVwX9TO1IpwJvYpqYU0KpJSo5G5eyxM37iQWTTCbmq2byanRLlinXs
|
8
|
-
tQIDAQAB
|
9
|
-
-----END PUBLIC KEY-----
|
data/spec/spec_helper.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require 'json/jwt'
|
3
|
-
require 'base64'
|
4
|
-
|
5
|
-
def test_private_key
|
6
|
-
OpenSSL::PKey::RSA.new File.read(File.expand_path('../fixtures/test_rsa_key', __dir__))
|
7
|
-
end
|
8
|
-
|
9
|
-
def valid_jws_token(payload = { 'bar' => 'baz' })
|
10
|
-
@valid_jws_token ||= begin
|
11
|
-
jwt = JSON::JWT.new(payload)
|
12
|
-
jws = jwt.sign(test_private_key, :RS256)
|
13
|
-
|
14
|
-
jws.to_s
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def valid_jwe_token(payload = { 'bar' => 'baz' })
|
19
|
-
@valid_jwe_token ||= begin
|
20
|
-
jwt = JSON::JWT.new(payload)
|
21
|
-
jws = jwt.sign(test_private_key, :RS256)
|
22
|
-
jwe = jws.encrypt(test_private_key, :'RSA-OAEP', :A256GCM)
|
23
|
-
|
24
|
-
jwe.to_s
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def invalid_jws_token
|
29
|
-
@invalid_jws_token ||= valid_jws_token.tr('a', 'f')
|
30
|
-
end
|
31
|
-
|
32
|
-
def invalid_jwe_token
|
33
|
-
@invalid_jwe_token ||= valid_jwe_token.tr('a', 'f')
|
34
|
-
end
|
35
|
-
|
36
|
-
def valid_b64_token(payload = 'hereisacoollittlestring')
|
37
|
-
@valid_b64_token ||= Base64.encode64(payload).chomp
|
38
|
-
end
|
39
|
-
|
40
|
-
def invalid_b64_token
|
41
|
-
@invalid_b64_token ||= valid_b64_token.tr('abcdefghijklmnop', '$o#m$k#i$g#e$c#a')
|
42
|
-
end
|