drillbit 2.11.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/lib/drillbit.rb +1 -0
  5. data/lib/drillbit/accept_header.rb +1 -0
  6. data/lib/drillbit/authorizable_resource.rb +61 -60
  7. data/lib/drillbit/authorizers/parameters.rb +1 -0
  8. data/lib/drillbit/authorizers/parameters/filtering.rb +7 -6
  9. data/lib/drillbit/authorizers/parameters/inclusions.rb +6 -9
  10. data/lib/drillbit/authorizers/parameters/resource.rb +20 -19
  11. data/lib/drillbit/authorizers/query.rb +1 -0
  12. data/lib/drillbit/authorizers/scope.rb +5 -4
  13. data/lib/drillbit/compatibility/controllers.rb +1 -0
  14. data/lib/drillbit/configuration.rb +14 -16
  15. data/lib/drillbit/errors/invalid_api_request.rb +1 -0
  16. data/lib/drillbit/errors/invalid_request_body.rb +1 -0
  17. data/lib/drillbit/errors/invalid_subdomain.rb +1 -0
  18. data/lib/drillbit/errors/invalid_token.rb +1 -0
  19. data/lib/drillbit/errors/unpermitted_inclusions.rb +1 -0
  20. data/lib/drillbit/matchers/accept_header.rb +1 -0
  21. data/lib/drillbit/matchers/generic.rb +4 -3
  22. data/lib/drillbit/matchers/subdomain.rb +5 -6
  23. data/lib/drillbit/matchers/version.rb +3 -2
  24. data/lib/drillbit/middleware/api_request_validator.rb +4 -3
  25. data/lib/drillbit/middleware/parameter_parser.rb +1 -0
  26. data/lib/drillbit/middleware/token_processor.rb +1 -0
  27. data/lib/drillbit/parameters/filter.rb +12 -11
  28. data/lib/drillbit/parameters/index.rb +3 -2
  29. data/lib/drillbit/parameters/page.rb +1 -0
  30. data/lib/drillbit/parameters/sort.rb +1 -0
  31. data/lib/drillbit/requests/base.rb +1 -1
  32. data/lib/drillbit/requests/rack.rb +3 -0
  33. data/lib/drillbit/requests/rails.rb +1 -0
  34. data/lib/drillbit/resource.rb +1 -0
  35. data/lib/drillbit/resource/model.rb +5 -4
  36. data/lib/drillbit/resource/naming.rb +11 -10
  37. data/lib/drillbit/resource/processors/filtering.rb +1 -0
  38. data/lib/drillbit/resource/processors/indexing.rb +1 -0
  39. data/lib/drillbit/resource/processors/paging.rb +4 -3
  40. data/lib/drillbit/resource/processors/sorting.rb +1 -0
  41. data/lib/drillbit/responses/invalid_api_request.rb +3 -0
  42. data/lib/drillbit/responses/invalid_request_body.rb +3 -0
  43. data/lib/drillbit/responses/invalid_subdomain.rb +3 -0
  44. data/lib/drillbit/responses/invalid_token.rb +3 -0
  45. data/lib/drillbit/serializers/json_api.rb +12 -11
  46. data/lib/drillbit/tokens/base64.rb +1 -0
  47. data/lib/drillbit/tokens/base64s/invalid.rb +1 -0
  48. data/lib/drillbit/tokens/base64s/null.rb +1 -0
  49. data/lib/drillbit/tokens/invalid.rb +1 -0
  50. data/lib/drillbit/tokens/json_web_token.rb +6 -5
  51. data/lib/drillbit/tokens/json_web_tokens/invalid.rb +1 -0
  52. data/lib/drillbit/tokens/json_web_tokens/null.rb +1 -0
  53. data/lib/drillbit/tokens/json_web_tokens/password_reset.rb +1 -0
  54. data/lib/drillbit/tokens/null.rb +1 -0
  55. data/lib/drillbit/utilities/string.rb +1 -0
  56. data/lib/drillbit/version.rb +2 -1
  57. metadata +28 -94
  58. metadata.gz.sig +0 -0
  59. data/Rakefile +0 -2
  60. data/spec/drillbit/accept_header_spec.rb +0 -119
  61. data/spec/drillbit/authorizers/parameters/filtering_spec.rb +0 -101
  62. data/spec/drillbit/authorizers/parameters/resource_spec.rb +0 -12
  63. data/spec/drillbit/authorizers/parameters_spec.rb +0 -19
  64. data/spec/drillbit/authorizers/query_spec.rb +0 -24
  65. data/spec/drillbit/authorizers/scope_spec.rb +0 -21
  66. data/spec/drillbit/errors/invalid_api_request_spec.rb +0 -31
  67. data/spec/drillbit/errors/invalid_request_body_spec.rb +0 -25
  68. data/spec/drillbit/errors/invalid_subdomain_spec.rb +0 -30
  69. data/spec/drillbit/errors/invalid_token_spec.rb +0 -24
  70. data/spec/drillbit/invalid_subdomain_spec.rb +0 -45
  71. data/spec/drillbit/invalid_token_spec.rb +0 -44
  72. data/spec/drillbit/matchers/accept_header_spec.rb +0 -114
  73. data/spec/drillbit/matchers/subdomain_spec.rb +0 -78
  74. data/spec/drillbit/matchers/version_spec.rb +0 -86
  75. data/spec/drillbit/middleware/api_request_validator_spec.rb +0 -185
  76. data/spec/drillbit/middleware/parameter_parser_spec.rb +0 -200
  77. data/spec/drillbit/middleware/token_processor_spec.rb +0 -27
  78. data/spec/drillbit/requests/base_spec.rb +0 -37
  79. data/spec/drillbit/requests/rack_spec.rb +0 -252
  80. data/spec/drillbit/requests/rails_spec.rb +0 -264
  81. data/spec/drillbit/resource/model_spec.rb +0 -64
  82. data/spec/drillbit/resource/processors/filtering_spec.rb +0 -106
  83. data/spec/drillbit/resource/processors/indexing_spec.rb +0 -45
  84. data/spec/drillbit/resource/processors/paging_spec.rb +0 -74
  85. data/spec/drillbit/resource/processors/sorting_spec.rb +0 -66
  86. data/spec/drillbit/tokens/base64_spec.rb +0 -44
  87. data/spec/drillbit/tokens/json_web_token_spec.rb +0 -231
  88. data/spec/drillbit/tokens/json_web_tokens/password_reset_spec.rb +0 -43
  89. data/spec/fixtures/test_rsa_key +0 -27
  90. data/spec/fixtures/test_rsa_key.pub +0 -9
  91. data/spec/spec_helper.rb +0 -4
  92. 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
@@ -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-----
@@ -1,4 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'rspeckled'
3
-
4
- Dir[File.expand_path('support/**/*.rb', __dir__)].each { |f| require f }
@@ -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