drillbit 2.11.0 → 3.0.0

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.
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,19 +1,20 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Drillbit
3
4
  module Serializers
4
5
  module JsonApi
5
6
  def json_api_type
6
- object.
7
- class.
8
- name.
9
- gsub(/\A[^:]+::/, '').
10
- split('::').
11
- reverse.
12
- join('::').
13
- tableize.
14
- dasherize.
15
- tr('/', '-').
16
- pluralize
7
+ object
8
+ .class
9
+ .name
10
+ .gsub(/\A[^:]+::/, '')
11
+ .split('::')
12
+ .reverse
13
+ .join('::')
14
+ .tableize
15
+ .dasherize
16
+ .tr('/', '-')
17
+ .pluralize
17
18
  end
18
19
  end
19
20
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'base64'
3
4
  require 'drillbit/tokens/base64s/null'
4
5
  require 'drillbit/tokens/base64s/invalid'
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'drillbit/tokens/invalid'
3
4
 
4
5
  module Drillbit
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'drillbit/tokens/null'
3
4
 
4
5
  module Drillbit
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'singleton'
3
4
 
4
5
  module Drillbit
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'jwt'
3
4
  require 'json/jwt'
4
5
  require 'drillbit/configuration'
@@ -48,7 +49,7 @@ class JsonWebToken
48
49
  new(data: data, headers: headers)
49
50
  end
50
51
 
51
- # rubocop:disable Metrics/ParameterLists, Metrics/AbcSize, Metrics/LineLength
52
+ # rubocop:disable Metrics/ParameterLists, Metrics/LineLength
52
53
  def self.build(id: SecureRandom.uuid,
53
54
  audience: Drillbit.configuration.default_token_audience,
54
55
  expiration: Time.now.utc.to_i + (60 * Drillbit.configuration.default_token_expiration_in_minutes),
@@ -156,7 +157,7 @@ class JsonWebToken
156
157
  end
157
158
 
158
159
  def to_jws
159
- @jws ||= to_jwt.sign(private_key, 'RS256')
160
+ @jws ||= to_jwt.sign(private_key, 'RS256')
160
161
  end
161
162
 
162
163
  def to_jws_s
@@ -176,9 +177,9 @@ class JsonWebToken
176
177
 
177
178
  return JsonWebTokens::Null.instance if encrypted_token.to_s == ''
178
179
 
179
- decrypted_token = JSON::JWT.
180
- decode(encrypted_token, private_key).
181
- plain_text
180
+ decrypted_token = JSON::JWT
181
+ .decode(encrypted_token, private_key)
182
+ .plain_text
182
183
 
183
184
  from_jws(decrypted_token, private_key: private_key)
184
185
  rescue *TRANSFORMATION_EXCEPTIONS
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'drillbit/tokens/invalid'
3
4
 
4
5
  module Drillbit
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'drillbit/configuration'
3
4
  require 'drillbit/tokens/null'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'drillbit/tokens/json_web_token'
3
4
 
4
5
  module Drillbit
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'singleton'
3
4
 
4
5
  module Drillbit
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Drillbit
3
4
  module Utilities
4
5
  class String
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Drillbit
3
- VERSION = '2.11.0'
4
+ VERSION = '3.0.0'
4
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: drillbit
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.11.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - thegranddesign
@@ -12,26 +12,26 @@ cert_chain:
12
12
  -----BEGIN CERTIFICATE-----
13
13
  MIIDqjCCApKgAwIBAgIBATANBgkqhkiG9w0BAQUFADBNMREwDwYDVQQDDAhydWJ5
14
14
  Z2VtczEjMCEGCgmSJomT8ixkARkWE2xpdmluZ2hpZ2hvbnRoZWJsb2cxEzARBgoJ
15
- kiaJk/IsZAEZFgNjb20wHhcNMTYwNTAxMDIzMDIzWhcNMTcwNTAxMDIzMDIzWjBN
15
+ kiaJk/IsZAEZFgNjb20wHhcNMTcwODAyMjI1OTM1WhcNMTgwODAyMjI1OTM1WjBN
16
16
  MREwDwYDVQQDDAhydWJ5Z2VtczEjMCEGCgmSJomT8ixkARkWE2xpdmluZ2hpZ2hv
17
17
  bnRoZWJsb2cxEzARBgoJkiaJk/IsZAEZFgNjb20wggEiMA0GCSqGSIb3DQEBAQUA
18
- A4IBDwAwggEKAoIBAQC/Oxo4PMAOCC3dfzGt7DZJwoDY9MGBXoWkbWIEP91yyKIB
19
- mWheQ1epDXkj1R6SM1+iclwgUKJQvFrSeD5i1NS9+3qRrD6gPCf3RDAbWNdUpyei
20
- F/W4+G7eCxGC6FHv7WsBjrGWQVTjZtKYOiQCxwwkPlZSX8aBXViO8D9bZJAURocY
21
- CbsMGeS0sPISRb0GCnI8VOIoab7GM8tdmIj4Uv0lzp4uOlKRJBss5/Sjp1mjgCvI
22
- vuXy0X+r1l2xiXL3/uTT/Tch3lPWctEEDw9rUzNz0N5oTGK4vooq4m4AIzU1pa1Z
23
- ZneO33rn3QVWVpOsK6NQVpBNhSism+Ju1mlvdmKFAgMBAAGjgZQwgZEwCQYDVR0T
24
- BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFLpr4AqEQwV9hUch3fxKvCkHUw3i
18
+ A4IBDwAwggEKAoIBAQDtLa7+7p49gW15OgOyRZad/F92iZcMdDjZ2kAxZlviXgVe
19
+ PCtjfdURobH+YMdt++6eRkE25utIFqHyN51Shxfdc21T3fPQe/ZEoMyiJK4tYzbh
20
+ 7VjNJG4ldvKKpS1p7iVz9imnyTxNwb0JaIOsOFCA04T0u6aCQi2acNvAPLviXk0q
21
+ xJ/CKjI4QUTZKVrBt8Q1Egrp2yzmEnSNftDuTbBb8m4vDR+w325CwbKCgycHJ1/g
22
+ YZ3FO76TzJuRVbsYS/bU5XKHVEpkeFmWBqEXsk4DuUIWLa6WZEJcoZf+YP+1pycG
23
+ 7YqSbydpINtEdopD+EEI+g+zNJ4nSI8/eQcQyEjBAgMBAAGjgZQwgZEwCQYDVR0T
24
+ BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFDWuVrg4ve0vLu71kqiGdyBnzJGV
25
25
  MCsGA1UdEQQkMCKBIHJ1YnlnZW1zQGxpdmluZ2hpZ2hvbnRoZWJsb2cuY29tMCsG
26
26
  A1UdEgQkMCKBIHJ1YnlnZW1zQGxpdmluZ2hpZ2hvbnRoZWJsb2cuY29tMA0GCSqG
27
- SIb3DQEBBQUAA4IBAQB5lDS+51DxC1GMpILDt++z5Isx2gSybmGKhNFFWWWo5iVW
28
- 6jLsj7H1T934Bn31sVET2cvrFGMVLKoitGgZuZPxjzkmm2+TDPbt02ThsLqjsh7W
29
- 000RFl0u7xJE8dg9y3Kmntar83Mr/Uf1F88/4mQsvGNnxGa39QP9IY4p6FkyEO3L
30
- RRz+3xE8j0OBl1FNALFtP74/A3zmBRbCizr8En/jbQe/DISJG2o8QOyqm/64uNoy
31
- zRIv8lqQM8QFT76rzP5SBCERwN+ltKAFbQ5/FwmZNGWYnmCP3RZMQiRnbh+9H9lh
32
- mlbwaYZTjgsXq6cy8N38EecewgBbZYS1IYJraE/M
27
+ SIb3DQEBBQUAA4IBAQDJIpHjbBPGiaY4wOHcXlltQ+BMmhWQNh+1fZtyajQd+7Ay
28
+ fv23mO7Mf25Q38gopQlpaODkfxq54Jt8FvQbr5RYRS4j+JEKb75NgrAtehd8USUd
29
+ CiJJGH+yvGNWug9IGZCGX91HIbTsLQ5IUUWQasC5jGP8nxXufUr9xgAJZZenewny
30
+ B2qKu8q1A/kj6cw62RCY7yBmUXxlcJBj8g+JKYAFbYYKUdQSzf50k9IiWLWunJM+
31
+ Y2GAoHKstmfIVhc4XHOPpmTd2o/C29O9oaRgjrkfQEhF/KvJ/PhoV5hvokzsCyI5
32
+ iUeXPfvrGD/itYIBCgk+fnzyQQ4QtE5hTQaWQ3o2
33
33
  -----END CERTIFICATE-----
34
- date: 2017-02-18 00:00:00.000000000 Z
34
+ date: 2018-01-24 00:00:00.000000000 Z
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: erratum
@@ -39,56 +39,56 @@ dependencies:
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: '1.0'
42
+ version: '2.0'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: '1.0'
49
+ version: '2.0'
50
50
  - !ruby/object:Gem::Dependency
51
51
  name: json-jwt
52
52
  requirement: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
- version: '1.5'
56
+ version: '1.8'
57
57
  type: :runtime
58
58
  prerelease: false
59
59
  version_requirements: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - "~>"
62
62
  - !ruby/object:Gem::Version
63
- version: '1.5'
63
+ version: '1.8'
64
64
  - !ruby/object:Gem::Dependency
65
65
  name: jwt
66
66
  requirement: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - "~>"
69
69
  - !ruby/object:Gem::Version
70
- version: '1.5'
70
+ version: '2.1'
71
71
  type: :runtime
72
72
  prerelease: false
73
73
  version_requirements: !ruby/object:Gem::Requirement
74
74
  requirements:
75
75
  - - "~>"
76
76
  - !ruby/object:Gem::Version
77
- version: '1.5'
77
+ version: '2.1'
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: rspec
80
80
  requirement: !ruby/object:Gem::Requirement
81
81
  requirements:
82
82
  - - "~>"
83
83
  - !ruby/object:Gem::Version
84
- version: '3.4'
84
+ version: '3.7'
85
85
  type: :development
86
86
  prerelease: false
87
87
  version_requirements: !ruby/object:Gem::Requirement
88
88
  requirements:
89
89
  - - "~>"
90
90
  - !ruby/object:Gem::Version
91
- version: '3.4'
91
+ version: '3.7'
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: rspeckled
94
94
  requirement: !ruby/object:Gem::Requirement
@@ -118,14 +118,14 @@ dependencies:
118
118
  - !ruby/object:Gem::Version
119
119
  version: 0.8.0
120
120
  description: ''
121
- email: rubygems@livinghighontheblog.com
121
+ email:
122
+ - rubygems@livinghighontheblog.com
122
123
  executables: []
123
124
  extensions: []
124
125
  extra_rdoc_files: []
125
126
  files:
126
127
  - LICENSE.txt
127
128
  - README.md
128
- - Rakefile
129
129
  - lib/drillbit.rb
130
130
  - lib/drillbit/accept_header.rb
131
131
  - lib/drillbit/authorizable_resource.rb
@@ -179,39 +179,6 @@ files:
179
179
  - lib/drillbit/tokens/null.rb
180
180
  - lib/drillbit/utilities/string.rb
181
181
  - lib/drillbit/version.rb
182
- - spec/drillbit/accept_header_spec.rb
183
- - spec/drillbit/authorizers/parameters/filtering_spec.rb
184
- - spec/drillbit/authorizers/parameters/resource_spec.rb
185
- - spec/drillbit/authorizers/parameters_spec.rb
186
- - spec/drillbit/authorizers/query_spec.rb
187
- - spec/drillbit/authorizers/scope_spec.rb
188
- - spec/drillbit/errors/invalid_api_request_spec.rb
189
- - spec/drillbit/errors/invalid_request_body_spec.rb
190
- - spec/drillbit/errors/invalid_subdomain_spec.rb
191
- - spec/drillbit/errors/invalid_token_spec.rb
192
- - spec/drillbit/invalid_subdomain_spec.rb
193
- - spec/drillbit/invalid_token_spec.rb
194
- - spec/drillbit/matchers/accept_header_spec.rb
195
- - spec/drillbit/matchers/subdomain_spec.rb
196
- - spec/drillbit/matchers/version_spec.rb
197
- - spec/drillbit/middleware/api_request_validator_spec.rb
198
- - spec/drillbit/middleware/parameter_parser_spec.rb
199
- - spec/drillbit/middleware/token_processor_spec.rb
200
- - spec/drillbit/requests/base_spec.rb
201
- - spec/drillbit/requests/rack_spec.rb
202
- - spec/drillbit/requests/rails_spec.rb
203
- - spec/drillbit/resource/model_spec.rb
204
- - spec/drillbit/resource/processors/filtering_spec.rb
205
- - spec/drillbit/resource/processors/indexing_spec.rb
206
- - spec/drillbit/resource/processors/paging_spec.rb
207
- - spec/drillbit/resource/processors/sorting_spec.rb
208
- - spec/drillbit/tokens/base64_spec.rb
209
- - spec/drillbit/tokens/json_web_token_spec.rb
210
- - spec/drillbit/tokens/json_web_tokens/password_reset_spec.rb
211
- - spec/fixtures/test_rsa_key
212
- - spec/fixtures/test_rsa_key.pub
213
- - spec/spec_helper.rb
214
- - spec/support/private_keys.rb
215
182
  homepage: ''
216
183
  licenses:
217
184
  - MIT
@@ -233,41 +200,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
233
200
  version: '0'
234
201
  requirements: []
235
202
  rubyforge_project:
236
- rubygems_version: 2.6.8
203
+ rubygems_version: 2.6.14
237
204
  signing_key:
238
205
  specification_version: 4
239
206
  summary: APIs Need Love Too
240
- test_files:
241
- - spec/drillbit/accept_header_spec.rb
242
- - spec/drillbit/authorizers/parameters/filtering_spec.rb
243
- - spec/drillbit/authorizers/parameters/resource_spec.rb
244
- - spec/drillbit/authorizers/parameters_spec.rb
245
- - spec/drillbit/authorizers/query_spec.rb
246
- - spec/drillbit/authorizers/scope_spec.rb
247
- - spec/drillbit/errors/invalid_api_request_spec.rb
248
- - spec/drillbit/errors/invalid_request_body_spec.rb
249
- - spec/drillbit/errors/invalid_subdomain_spec.rb
250
- - spec/drillbit/errors/invalid_token_spec.rb
251
- - spec/drillbit/invalid_subdomain_spec.rb
252
- - spec/drillbit/invalid_token_spec.rb
253
- - spec/drillbit/matchers/accept_header_spec.rb
254
- - spec/drillbit/matchers/subdomain_spec.rb
255
- - spec/drillbit/matchers/version_spec.rb
256
- - spec/drillbit/middleware/api_request_validator_spec.rb
257
- - spec/drillbit/middleware/parameter_parser_spec.rb
258
- - spec/drillbit/middleware/token_processor_spec.rb
259
- - spec/drillbit/requests/base_spec.rb
260
- - spec/drillbit/requests/rack_spec.rb
261
- - spec/drillbit/requests/rails_spec.rb
262
- - spec/drillbit/resource/model_spec.rb
263
- - spec/drillbit/resource/processors/filtering_spec.rb
264
- - spec/drillbit/resource/processors/indexing_spec.rb
265
- - spec/drillbit/resource/processors/paging_spec.rb
266
- - spec/drillbit/resource/processors/sorting_spec.rb
267
- - spec/drillbit/tokens/base64_spec.rb
268
- - spec/drillbit/tokens/json_web_token_spec.rb
269
- - spec/drillbit/tokens/json_web_tokens/password_reset_spec.rb
270
- - spec/fixtures/test_rsa_key
271
- - spec/fixtures/test_rsa_key.pub
272
- - spec/spec_helper.rb
273
- - spec/support/private_keys.rb
207
+ test_files: []
metadata.gz.sig CHANGED
Binary file
data/Rakefile DELETED
@@ -1,2 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'bundler/gem_tasks'
@@ -1,119 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'rspeckled/spec_helpers/rspeckled'
3
- require 'drillbit/accept_header'
4
-
5
- # rubocop:disable Metrics/LineLength
6
- module Drillbit
7
- describe AcceptHeader do
8
- it 'can validate an accept header with all the pieces of information' do
9
- header = AcceptHeader.new(application: 'westeros',
10
- header: 'application/vnd.westeros+redkeep;version=1.0.0')
11
-
12
- expect(header).to be_valid
13
- end
14
-
15
- it 'can validate an accept header with multiple accept options' do
16
- header = AcceptHeader.new(application: 'westeros',
17
- header: 'application/json,application/vnd.westeros+redkeep;version=1.0.0,application/json')
18
-
19
- expect(header).to be_valid
20
- end
21
-
22
- it 'does not validate an accept header without passing an application' do
23
- header = AcceptHeader.new(application: '',
24
- header: 'application/vnd.westeros+redkeep;version=1.0.0')
25
-
26
- expect(header).not_to be_valid
27
- end
28
-
29
- it 'does not validate an accept header if it is not passed in' do
30
- header = AcceptHeader.new(application: '',
31
- header: '')
32
-
33
- expect(header).not_to be_valid
34
-
35
- header = AcceptHeader.new(application: '',
36
- header: nil)
37
-
38
- expect(header).not_to be_valid
39
- end
40
-
41
- it 'does not validate an accept header without an application in the header' do
42
- header = AcceptHeader.new(application: 'westeros',
43
- header: 'application/vnd.+redkeep;version=1.0.0')
44
-
45
- expect(header).not_to be_valid
46
-
47
- header = AcceptHeader.new(application: 'westeros',
48
- header: 'application/+redkeep;version=1.0.0')
49
-
50
- expect(header).not_to be_valid
51
-
52
- header = AcceptHeader.new(application: 'westeros',
53
- header: 'application/westeros+redkeep;version=1.0.0')
54
-
55
- expect(header).not_to be_valid
56
- end
57
-
58
- it 'does not validate an accept header with an invalid version' do
59
- header = AcceptHeader.new(application: 'westeros',
60
- header: 'application/vnd.westeros+redkeep;version=10..0')
61
-
62
- expect(header).not_to be_valid
63
-
64
- header = AcceptHeader.new(application: 'westeros',
65
- header: 'application/vnd.westeros+redkeep;version=neo')
66
-
67
- expect(header).not_to be_valid
68
-
69
- header = AcceptHeader.new(application: 'westeros',
70
- header: 'application/vnd.westeros+redkeep;version=')
71
-
72
- expect(header).not_to be_valid
73
-
74
- header = AcceptHeader.new(application: 'westeros',
75
- header: 'application/vnd.westeros+redkeep;10.0')
76
-
77
- expect(header).not_to be_valid
78
- end
79
-
80
- it 'does validate an accept header even with a missing content type' do
81
- header = AcceptHeader.new(application: 'westeros',
82
- header: 'application/vnd.westeros;version=10.0')
83
-
84
- expect(header).to be_valid
85
- end
86
-
87
- it 'does validate an accept header with only the minimal information' do
88
- header = AcceptHeader.new(application: 'westeros',
89
- header: 'application/vnd.westeros')
90
-
91
- expect(header).to be_valid
92
- end
93
-
94
- it 'does validate an accept header with only a content type but no version' do
95
- header = AcceptHeader.new(application: 'westeros',
96
- header: 'application/vnd.westeros+redkeep')
97
-
98
- expect(header).to be_valid
99
- end
100
-
101
- it 'can extract version information from an accept header' do
102
- header = AcceptHeader.new(
103
- application: 'westeros',
104
- header: 'application/json,application/vnd.westeros+redkeep;version=10.0.0beta1,application/json',
105
- )
106
-
107
- expect(header.version).to eql '10.0.0beta1'
108
- end
109
-
110
- it 'can extract the content type from an accept header' do
111
- header = AcceptHeader.new(
112
- application: 'westeros',
113
- header: 'application/vnd.westeros+redkeep;version=10.0.0beta1',
114
- )
115
-
116
- expect(header.content_type).to eql 'redkeep'
117
- end
118
- end
119
- end