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,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