grape 1.2.2 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -34,7 +34,6 @@ module Grape
34
34
  autoload :Namespace
35
35
 
36
36
  autoload :Path
37
-
38
37
  autoload :Cookies
39
38
  autoload :Validations
40
39
  autoload :ErrorFormatter
@@ -194,6 +193,7 @@ module Grape
194
193
  end
195
194
  end
196
195
 
196
+ require 'grape/config'
197
197
  require 'grape/util/content_types'
198
198
 
199
199
  require 'grape/validations/validators/base'
@@ -207,6 +207,7 @@ require 'grape/validations/validators/exactly_one_of'
207
207
  require 'grape/validations/validators/mutual_exclusion'
208
208
  require 'grape/validations/validators/presence'
209
209
  require 'grape/validations/validators/regexp'
210
+ require 'grape/validations/validators/same_as'
210
211
  require 'grape/validations/validators/values'
211
212
  require 'grape/validations/validators/except_values'
212
213
  require 'grape/validations/params_scope'
@@ -0,0 +1,32 @@
1
+ module Grape
2
+ module Config
3
+ class Configuration
4
+ ATTRIBUTES = %i[
5
+ param_builder
6
+ ].freeze
7
+
8
+ attr_accessor(*ATTRIBUTES)
9
+
10
+ def initialize
11
+ reset
12
+ end
13
+
14
+ def reset
15
+ self.param_builder = Grape::Extensions::ActiveSupport::HashWithIndifferentAccess::ParamBuilder
16
+ end
17
+ end
18
+
19
+ def self.extended(base)
20
+ def base.configure
21
+ block_given? ? yield(config) : config
22
+ end
23
+
24
+ def base.config
25
+ @configuration ||= Grape::Config::Configuration.new
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+ Grape.extend Grape::Config
32
+ Grape.config.reset
@@ -258,6 +258,7 @@ module Grape
258
258
  else
259
259
  run_filters before_validations, :before_validation
260
260
  run_validators validations, request
261
+ remove_aliased_params
261
262
  run_filters after_validations, :after_validation
262
263
  response_object = @block ? @block.call(self) : nil
263
264
  end
@@ -319,7 +320,14 @@ module Grape
319
320
  Module.new { helpers.each { |mod_to_include| include mod_to_include } }
320
321
  end
321
322
 
322
- private :build_stack, :build_helpers
323
+ def remove_aliased_params
324
+ return unless route_setting(:aliased_params)
325
+ route_setting(:aliased_params).flat_map(&:keys).each do |aliased_param|
326
+ @params.delete(aliased_param)
327
+ end
328
+ end
329
+
330
+ private :build_stack, :build_helpers, :remove_aliased_params
323
331
 
324
332
  def helpers
325
333
  lazy_initialize! && @helpers
@@ -9,6 +9,7 @@ en:
9
9
  blank: 'is empty'
10
10
  values: 'does not have a valid value'
11
11
  except_values: 'has a value not allowed'
12
+ same_as: 'is not the same as %{parameter}'
12
13
  missing_vendor_option:
13
14
  problem: 'missing :vendor option.'
14
15
  summary: 'when version using header, you must specify :vendor option. '
@@ -5,7 +5,7 @@ module Grape
5
5
  alias rack_params params
6
6
 
7
7
  def initialize(env, options = {})
8
- extend options[:build_params_with] || Grape::Extensions::ActiveSupport::HashWithIndifferentAccess::ParamBuilder
8
+ extend options[:build_params_with] || Grape.config.param_builder
9
9
  super(env)
10
10
  end
11
11
 
@@ -19,7 +19,7 @@ module Grape
19
19
  # Rack::Request creates a Hash with filename,
20
20
  # content type and an IO object. Do a bit of basic
21
21
  # duck-typing.
22
- value.is_a?(::Hash) && value.key?(:tempfile)
22
+ value.is_a?(::Hash) && value.key?(:tempfile) && value[:tempfile].is_a?(Tempfile)
23
23
  end
24
24
  end
25
25
  end
@@ -8,7 +8,6 @@ module Grape
8
8
 
9
9
  def validate_param!(attr_name, params)
10
10
  params[@alias] = params[attr_name]
11
- params.delete(attr_name)
12
11
  end
13
12
  end
14
13
  end
@@ -0,0 +1,23 @@
1
+ module Grape
2
+ module Validations
3
+ class SameAsValidator < Base
4
+ def validate_param!(attr_name, params)
5
+ confirmation = options_key?(:value) ? @option[:value] : @option
6
+ return if params[attr_name] == params[confirmation]
7
+ raise Grape::Exceptions::Validation,
8
+ params: [@scope.full_name(attr_name)],
9
+ message: build_message
10
+ end
11
+
12
+ private
13
+
14
+ def build_message
15
+ if options_key?(:message)
16
+ @option[:message]
17
+ else
18
+ format I18n.t(:same_as, scope: 'grape.errors.messages'), parameter: @option
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,4 +1,4 @@
1
1
  module Grape
2
2
  # The current version of Grape.
3
- VERSION = '1.2.2'.freeze
3
+ VERSION = '1.2.3'.freeze
4
4
  end
Binary file
Binary file
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe '.configure' do
4
+ before do
5
+ Grape.configure do |config|
6
+ config.param_builder = 42
7
+ end
8
+ end
9
+
10
+ after do
11
+ Grape.config.reset
12
+ end
13
+
14
+ it 'is configured to the new value' do
15
+ expect(Grape.config.param_builder).to eq 42
16
+ end
17
+ end
@@ -62,6 +62,30 @@ module Grape
62
62
  end
63
63
  end
64
64
 
65
+ describe 'when the param_builder is set to Hashie' do
66
+ before do
67
+ Grape.configure do |config|
68
+ config.param_builder = Grape::Extensions::Hashie::Mash::ParamBuilder
69
+ end
70
+ end
71
+
72
+ after do
73
+ Grape.config.reset
74
+ end
75
+
76
+ subject(:request_params) { Grape::Request.new(env, opts).params }
77
+
78
+ context 'when the API does not include a specific param builder' do
79
+ let(:opts) { {} }
80
+ it { is_expected.to be_a(Hashie::Mash) }
81
+ end
82
+
83
+ context 'when the API includes a specific param builder' do
84
+ let(:opts) { { build_params_with: Grape::Extensions::Hash::ParamBuilder } }
85
+ it { is_expected.to be_a(Hash) }
86
+ end
87
+ end
88
+
65
89
  describe '#headers' do
66
90
  let(:options) do
67
91
  default_options.merge(request_headers)
@@ -155,6 +155,16 @@ describe Grape::Validations::ParamsScope do
155
155
  expect(last_response.status).to eq(400)
156
156
  expect(last_response.body).to eq('foo is empty')
157
157
  end
158
+
159
+ it do
160
+ subject.params do
161
+ requires :foo, as: :bar, allow_blank: false
162
+ end
163
+ subject.get('/alias-not-blank-with-value') {}
164
+ get '/alias-not-blank-with-value', foo: 'any'
165
+
166
+ expect(last_response.status).to eq(200)
167
+ end
158
168
  end
159
169
 
160
170
  context 'array without coerce type explicitly given' do
@@ -397,6 +397,10 @@ describe Grape::Validations::CoerceValidator do
397
397
  post '/upload', file: 'not a file'
398
398
  expect(last_response.status).to eq(400)
399
399
  expect(last_response.body).to eq('file is invalid')
400
+
401
+ post '/upload', file: { filename: 'fake file', tempfile: '/etc/passwd' }
402
+ expect(last_response.status).to eq(400)
403
+ expect(last_response.body).to eq('file is invalid')
400
404
  end
401
405
 
402
406
  it 'Nests integers' do
@@ -0,0 +1,63 @@
1
+ require 'spec_helper'
2
+
3
+ describe Grape::Validations::SameAsValidator do
4
+ module ValidationsSpec
5
+ module SameAsValidatorSpec
6
+ class API < Grape::API
7
+ params do
8
+ requires :password
9
+ requires :password_confirmation, same_as: :password
10
+ end
11
+ post do
12
+ end
13
+
14
+ params do
15
+ requires :password
16
+ requires :password_confirmation, same_as: { value: :password, message: 'not match' }
17
+ end
18
+ post '/custom-message' do
19
+ end
20
+ end
21
+ end
22
+ end
23
+
24
+ def app
25
+ ValidationsSpec::SameAsValidatorSpec::API
26
+ end
27
+
28
+ describe '/' do
29
+ context 'is the same' do
30
+ it do
31
+ post '/', password: '987654', password_confirmation: '987654'
32
+ expect(last_response.status).to eq(201)
33
+ expect(last_response.body).to eq('')
34
+ end
35
+ end
36
+
37
+ context 'is not the same' do
38
+ it do
39
+ post '/', password: '123456', password_confirmation: 'whatever'
40
+ expect(last_response.status).to eq(400)
41
+ expect(last_response.body).to eq('password_confirmation is not the same as password')
42
+ end
43
+ end
44
+ end
45
+
46
+ describe '/custom-message' do
47
+ context 'is the same' do
48
+ it do
49
+ post '/custom-message', password: '987654', password_confirmation: '987654'
50
+ expect(last_response.status).to eq(201)
51
+ expect(last_response.body).to eq('')
52
+ end
53
+ end
54
+
55
+ context 'is not the same' do
56
+ it do
57
+ post '/custom-message', password: '123456', password_confirmation: 'whatever'
58
+ expect(last_response.status).to eq(400)
59
+ expect(last_response.body).to eq('password_confirmation not match')
60
+ end
61
+ end
62
+ end
63
+ end
@@ -20,6 +20,7 @@ RSpec.configure do |config|
20
20
  config.include Rack::Test::Methods
21
21
  config.include Spec::Support::Helpers
22
22
  config.raise_errors_for_deprecations!
23
+ config.filter_run_when_matching :focus
23
24
 
24
25
  config.before(:each) { Grape::Util::InheritableSetting.reset_global! }
25
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Bleigh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-07 00:00:00.000000000 Z
11
+ date: 2019-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -117,17 +117,23 @@ files:
117
117
  - benchmark/simple_with_type_coercer.rb
118
118
  - gemfiles/multi_json.gemfile
119
119
  - gemfiles/multi_xml.gemfile
120
+ - gemfiles/rack_1.5.2.gemfile.lock
120
121
  - gemfiles/rack_edge.gemfile
121
122
  - gemfiles/rails_3.gemfile
123
+ - gemfiles/rails_3.gemfile.lock
122
124
  - gemfiles/rails_4.gemfile
125
+ - gemfiles/rails_4.gemfile.lock
123
126
  - gemfiles/rails_5.gemfile
127
+ - gemfiles/rails_5.gemfile.lock
124
128
  - gemfiles/rails_edge.gemfile
129
+ - gemfiles/rails_edge.gemfile.lock
125
130
  - grape.gemspec
126
131
  - grape.png
127
132
  - lib/grape.rb
128
133
  - lib/grape/api.rb
129
134
  - lib/grape/api/helpers.rb
130
135
  - lib/grape/api/instance.rb
136
+ - lib/grape/config.rb
131
137
  - lib/grape/cookies.rb
132
138
  - lib/grape/dsl/api.rb
133
139
  - lib/grape/dsl/callbacks.rb
@@ -249,11 +255,11 @@ files:
249
255
  - lib/grape/validations/validators/mutual_exclusion.rb
250
256
  - lib/grape/validations/validators/presence.rb
251
257
  - lib/grape/validations/validators/regexp.rb
258
+ - lib/grape/validations/validators/same_as.rb
252
259
  - lib/grape/validations/validators/values.rb
253
260
  - lib/grape/version.rb
254
- - pkg/grape-0.19.1.gem
255
- - pkg/grape-1.0.1.gem
256
- - pkg/grape-1.0.2.gem
261
+ - pkg/grape-1.2.0.gem
262
+ - pkg/grape-1.2.1.gem
257
263
  - spec/grape/api/custom_validations_spec.rb
258
264
  - spec/grape/api/deeply_included_options_spec.rb
259
265
  - spec/grape/api/inherited_helpers_spec.rb
@@ -271,6 +277,7 @@ files:
271
277
  - spec/grape/api/shared_helpers_spec.rb
272
278
  - spec/grape/api_remount_spec.rb
273
279
  - spec/grape/api_spec.rb
280
+ - spec/grape/config_spec.rb
274
281
  - spec/grape/dsl/callbacks_spec.rb
275
282
  - spec/grape/dsl/configuration_spec.rb
276
283
  - spec/grape/dsl/desc_spec.rb
@@ -343,6 +350,7 @@ files:
343
350
  - spec/grape/validations/validators/mutual_exclusion_spec.rb
344
351
  - spec/grape/validations/validators/presence_spec.rb
345
352
  - spec/grape/validations/validators/regexp_spec.rb
353
+ - spec/grape/validations/validators/same_as_spec.rb
346
354
  - spec/grape/validations/validators/values_spec.rb
347
355
  - spec/grape/validations/validators/zh-CN.yml
348
356
  - spec/grape/validations_spec.rb
@@ -376,110 +384,112 @@ required_rubygems_version: !ruby/object:Gem::Requirement
376
384
  version: '0'
377
385
  requirements: []
378
386
  rubyforge_project:
379
- rubygems_version: 2.7.6
387
+ rubygems_version: 2.7.7
380
388
  signing_key:
381
389
  specification_version: 4
382
390
  summary: A simple Ruby framework for building REST-like APIs.
383
391
  test_files:
384
- - spec/spec_helper.rb
385
- - spec/integration/multi_xml/xml_spec.rb
386
- - spec/integration/multi_json/json_spec.rb
387
392
  - spec/shared/versioning_examples.rb
388
- - spec/support/basic_auth_encode_helpers.rb
389
- - spec/support/endpoint_faker.rb
390
- - spec/support/file_streamer.rb
391
- - spec/support/versioned_helpers.rb
392
- - spec/support/content_type_helpers.rb
393
- - spec/support/integer_helpers.rb
393
+ - spec/grape/api/shared_helpers_exactly_one_of_spec.rb
394
+ - spec/grape/api/custom_validations_spec.rb
395
+ - spec/grape/api/parameters_modification_spec.rb
396
+ - spec/grape/api/namespace_parameters_in_route_spec.rb
397
+ - spec/grape/api/deeply_included_options_spec.rb
398
+ - spec/grape/api/shared_helpers_spec.rb
399
+ - spec/grape/api/required_parameters_with_invalid_method_spec.rb
400
+ - spec/grape/api/inherited_helpers_spec.rb
401
+ - spec/grape/api/recognize_path_spec.rb
402
+ - spec/grape/api/required_parameters_in_route_spec.rb
403
+ - spec/grape/api/nested_helpers_spec.rb
404
+ - spec/grape/api/routes_with_requirements_spec.rb
405
+ - spec/grape/api/patch_method_helpers_spec.rb
406
+ - spec/grape/api/optional_parameters_in_route_spec.rb
407
+ - spec/grape/api/invalid_format_spec.rb
408
+ - spec/grape/named_api_spec.rb
409
+ - spec/grape/exceptions/validation_spec.rb
410
+ - spec/grape/exceptions/validation_errors_spec.rb
411
+ - spec/grape/exceptions/missing_option_spec.rb
412
+ - spec/grape/exceptions/unknown_options_spec.rb
413
+ - spec/grape/exceptions/missing_mime_type_spec.rb
414
+ - spec/grape/exceptions/base_spec.rb
415
+ - spec/grape/exceptions/invalid_versioner_option_spec.rb
416
+ - spec/grape/exceptions/invalid_response_spec.rb
417
+ - spec/grape/exceptions/body_parse_errors_spec.rb
418
+ - spec/grape/exceptions/unknown_validator_spec.rb
419
+ - spec/grape/exceptions/invalid_formatter_spec.rb
420
+ - spec/grape/exceptions/invalid_accept_header_spec.rb
421
+ - spec/grape/dsl/routing_spec.rb
422
+ - spec/grape/dsl/logger_spec.rb
423
+ - spec/grape/dsl/request_response_spec.rb
424
+ - spec/grape/dsl/validations_spec.rb
425
+ - spec/grape/dsl/desc_spec.rb
426
+ - spec/grape/dsl/headers_spec.rb
427
+ - spec/grape/dsl/configuration_spec.rb
428
+ - spec/grape/dsl/settings_spec.rb
429
+ - spec/grape/dsl/callbacks_spec.rb
430
+ - spec/grape/dsl/parameters_spec.rb
431
+ - spec/grape/dsl/inside_route_spec.rb
432
+ - spec/grape/dsl/middleware_spec.rb
433
+ - spec/grape/dsl/helpers_spec.rb
434
+ - spec/grape/endpoint_spec.rb
435
+ - spec/grape/validations_spec.rb
436
+ - spec/grape/entity_spec.rb
437
+ - spec/grape/extensions/param_builders/hash_spec.rb
438
+ - spec/grape/extensions/param_builders/hash_with_indifferent_access_spec.rb
439
+ - spec/grape/extensions/param_builders/hashie/mash_spec.rb
440
+ - spec/grape/api_remount_spec.rb
441
+ - spec/grape/parser_spec.rb
442
+ - spec/grape/util/inheritable_setting_spec.rb
443
+ - spec/grape/util/reverse_stackable_values_spec.rb
444
+ - spec/grape/util/stackable_values_spec.rb
445
+ - spec/grape/util/inheritable_values_spec.rb
446
+ - spec/grape/util/strict_hash_configuration_spec.rb
447
+ - spec/grape/config_spec.rb
448
+ - spec/grape/presenters/presenter_spec.rb
449
+ - spec/grape/middleware/versioner/header_spec.rb
450
+ - spec/grape/middleware/versioner/accept_version_header_spec.rb
451
+ - spec/grape/middleware/versioner/param_spec.rb
452
+ - spec/grape/middleware/versioner/path_spec.rb
394
453
  - spec/grape/middleware/error_spec.rb
395
454
  - spec/grape/middleware/globals_spec.rb
455
+ - spec/grape/middleware/base_spec.rb
396
456
  - spec/grape/middleware/formatter_spec.rb
457
+ - spec/grape/middleware/exception_spec.rb
458
+ - spec/grape/middleware/auth/base_spec.rb
397
459
  - spec/grape/middleware/auth/strategies_spec.rb
398
460
  - spec/grape/middleware/auth/dsl_spec.rb
399
- - spec/grape/middleware/auth/base_spec.rb
400
461
  - spec/grape/middleware/stack_spec.rb
401
- - spec/grape/middleware/exception_spec.rb
402
462
  - spec/grape/middleware/versioner_spec.rb
403
- - spec/grape/middleware/versioner/accept_version_header_spec.rb
404
- - spec/grape/middleware/versioner/header_spec.rb
405
- - spec/grape/middleware/versioner/path_spec.rb
406
- - spec/grape/middleware/versioner/param_spec.rb
407
- - spec/grape/middleware/base_spec.rb
408
- - spec/grape/loading_spec.rb
409
- - spec/grape/endpoint_spec.rb
410
- - spec/grape/api_spec.rb
411
- - spec/grape/util/reverse_stackable_values_spec.rb
412
- - spec/grape/util/stackable_values_spec.rb
413
- - spec/grape/util/inheritable_setting_spec.rb
414
- - spec/grape/util/strict_hash_configuration_spec.rb
415
- - spec/grape/util/inheritable_values_spec.rb
463
+ - spec/grape/request_spec.rb
464
+ - spec/grape/integration/global_namespace_function_spec.rb
416
465
  - spec/grape/integration/rack_spec.rb
417
466
  - spec/grape/integration/rack_sendfile_spec.rb
418
- - spec/grape/integration/global_namespace_function_spec.rb
419
- - spec/grape/validations_spec.rb
420
- - spec/grape/entity_spec.rb
421
- - spec/grape/exceptions/validation_spec.rb
422
- - spec/grape/exceptions/invalid_accept_header_spec.rb
423
- - spec/grape/exceptions/missing_option_spec.rb
424
- - spec/grape/exceptions/invalid_response_spec.rb
425
- - spec/grape/exceptions/body_parse_errors_spec.rb
426
- - spec/grape/exceptions/invalid_formatter_spec.rb
427
- - spec/grape/exceptions/missing_mime_type_spec.rb
428
- - spec/grape/exceptions/unknown_options_spec.rb
429
- - spec/grape/exceptions/validation_errors_spec.rb
430
- - spec/grape/exceptions/unknown_validator_spec.rb
431
- - spec/grape/exceptions/invalid_versioner_option_spec.rb
432
- - spec/grape/exceptions/base_spec.rb
433
- - spec/grape/presenters/presenter_spec.rb
434
467
  - spec/grape/validations/attributes_iterator_spec.rb
435
- - spec/grape/validations/params_scope_spec.rb
436
- - spec/grape/validations/instance_behaivour_spec.rb
437
- - spec/grape/validations/types_spec.rb
438
- - spec/grape/validations/validators/regexp_spec.rb
439
- - spec/grape/validations/validators/mutual_exclusion_spec.rb
440
468
  - spec/grape/validations/validators/exactly_one_of_spec.rb
441
- - spec/grape/validations/validators/except_values_spec.rb
442
- - spec/grape/validations/validators/presence_spec.rb
443
- - spec/grape/validations/validators/all_or_none_spec.rb
444
- - spec/grape/validations/validators/allow_blank_spec.rb
445
- - spec/grape/validations/validators/default_spec.rb
446
469
  - spec/grape/validations/validators/values_spec.rb
447
- - spec/grape/validations/validators/at_least_one_of_spec.rb
470
+ - spec/grape/validations/validators/presence_spec.rb
448
471
  - spec/grape/validations/validators/coerce_spec.rb
472
+ - spec/grape/validations/validators/at_least_one_of_spec.rb
473
+ - spec/grape/validations/validators/same_as_spec.rb
449
474
  - spec/grape/validations/validators/zh-CN.yml
450
- - spec/grape/extensions/param_builders/hashie/mash_spec.rb
451
- - spec/grape/extensions/param_builders/hash_spec.rb
452
- - spec/grape/extensions/param_builders/hash_with_indifferent_access_spec.rb
453
- - spec/grape/parser_spec.rb
454
- - spec/grape/request_spec.rb
455
- - spec/grape/api/parameters_modification_spec.rb
456
- - spec/grape/api/patch_method_helpers_spec.rb
457
- - spec/grape/api/required_parameters_with_invalid_method_spec.rb
458
- - spec/grape/api/nested_helpers_spec.rb
459
- - spec/grape/api/invalid_format_spec.rb
460
- - spec/grape/api/required_parameters_in_route_spec.rb
461
- - spec/grape/api/namespace_parameters_in_route_spec.rb
462
- - spec/grape/api/recognize_path_spec.rb
463
- - spec/grape/api/shared_helpers_exactly_one_of_spec.rb
464
- - spec/grape/api/inherited_helpers_spec.rb
465
- - spec/grape/api/shared_helpers_spec.rb
466
- - spec/grape/api/deeply_included_options_spec.rb
467
- - spec/grape/api/routes_with_requirements_spec.rb
468
- - spec/grape/api/custom_validations_spec.rb
469
- - spec/grape/api/optional_parameters_in_route_spec.rb
470
- - spec/grape/api_remount_spec.rb
471
- - spec/grape/named_api_spec.rb
472
- - spec/grape/dsl/request_response_spec.rb
473
- - spec/grape/dsl/desc_spec.rb
474
- - spec/grape/dsl/logger_spec.rb
475
- - spec/grape/dsl/configuration_spec.rb
476
- - spec/grape/dsl/validations_spec.rb
477
- - spec/grape/dsl/parameters_spec.rb
478
- - spec/grape/dsl/helpers_spec.rb
479
- - spec/grape/dsl/middleware_spec.rb
480
- - spec/grape/dsl/headers_spec.rb
481
- - spec/grape/dsl/callbacks_spec.rb
482
- - spec/grape/dsl/settings_spec.rb
483
- - spec/grape/dsl/routing_spec.rb
484
- - spec/grape/dsl/inside_route_spec.rb
475
+ - spec/grape/validations/validators/default_spec.rb
476
+ - spec/grape/validations/validators/regexp_spec.rb
477
+ - spec/grape/validations/validators/all_or_none_spec.rb
478
+ - spec/grape/validations/validators/except_values_spec.rb
479
+ - spec/grape/validations/validators/mutual_exclusion_spec.rb
480
+ - spec/grape/validations/validators/allow_blank_spec.rb
481
+ - spec/grape/validations/params_scope_spec.rb
482
+ - spec/grape/validations/instance_behaivour_spec.rb
483
+ - spec/grape/validations/types_spec.rb
484
+ - spec/grape/api_spec.rb
485
+ - spec/grape/loading_spec.rb
485
486
  - spec/grape/path_spec.rb
487
+ - spec/support/file_streamer.rb
488
+ - spec/support/versioned_helpers.rb
489
+ - spec/support/content_type_helpers.rb
490
+ - spec/support/integer_helpers.rb
491
+ - spec/support/basic_auth_encode_helpers.rb
492
+ - spec/support/endpoint_faker.rb
493
+ - spec/spec_helper.rb
494
+ - spec/integration/multi_json/json_spec.rb
495
+ - spec/integration/multi_xml/xml_spec.rb