grape 1.1.0 → 1.2.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 (47) hide show
  1. checksums.yaml +4 -4
  2. data/Appraisals +3 -7
  3. data/CHANGELOG.md +21 -1
  4. data/Gemfile.lock +26 -26
  5. data/README.md +109 -29
  6. data/UPGRADING.md +45 -0
  7. data/gemfiles/rack_1.5.2.gemfile.lock +232 -0
  8. data/gemfiles/rails_3.gemfile +1 -1
  9. data/gemfiles/rails_3.gemfile.lock +288 -0
  10. data/gemfiles/rails_4.gemfile +1 -1
  11. data/gemfiles/rails_4.gemfile.lock +280 -0
  12. data/gemfiles/rails_5.gemfile +1 -1
  13. data/gemfiles/rails_5.gemfile.lock +312 -0
  14. data/lib/grape.rb +1 -0
  15. data/lib/grape/api.rb +74 -195
  16. data/lib/grape/api/instance.rb +242 -0
  17. data/lib/grape/dsl/desc.rb +17 -1
  18. data/lib/grape/dsl/middleware.rb +7 -0
  19. data/lib/grape/dsl/parameters.rb +9 -4
  20. data/lib/grape/dsl/routing.rb +5 -1
  21. data/lib/grape/endpoint.rb +1 -1
  22. data/lib/grape/exceptions/base.rb +9 -1
  23. data/lib/grape/exceptions/invalid_response.rb +9 -0
  24. data/lib/grape/locale/en.yml +1 -0
  25. data/lib/grape/middleware/error.rb +8 -2
  26. data/lib/grape/middleware/versioner/header.rb +2 -2
  27. data/lib/grape/validations/params_scope.rb +1 -0
  28. data/lib/grape/validations/validators/multiple_params_base.rb +1 -1
  29. data/lib/grape/version.rb +1 -1
  30. data/pkg/grape-1.2.0.gem +0 -0
  31. data/spec/grape/api/routes_with_requirements_spec.rb +59 -0
  32. data/spec/grape/api_remount_spec.rb +85 -0
  33. data/spec/grape/api_spec.rb +70 -1
  34. data/spec/grape/dsl/desc_spec.rb +17 -1
  35. data/spec/grape/dsl/middleware_spec.rb +8 -0
  36. data/spec/grape/dsl/routing_spec.rb +10 -0
  37. data/spec/grape/exceptions/base_spec.rb +61 -0
  38. data/spec/grape/exceptions/invalid_response_spec.rb +11 -0
  39. data/spec/grape/middleware/auth/dsl_spec.rb +3 -3
  40. data/spec/grape/middleware/exception_spec.rb +1 -1
  41. data/spec/grape/middleware/versioner/header_spec.rb +6 -0
  42. data/spec/grape/validations/params_scope_spec.rb +133 -0
  43. data/spec/spec_helper.rb +3 -1
  44. metadata +99 -87
  45. data/gemfiles/rack_1.5.2.gemfile +0 -35
  46. data/pkg/grape-0.17.0.gem +0 -0
  47. data/pkg/grape-0.19.0.gem +0 -0
@@ -21,6 +21,7 @@ module Grape
21
21
 
22
22
  it 'can be set with a block' do
23
23
  expected_options = {
24
+ summary: 'summary',
24
25
  description: 'The description',
25
26
  detail: 'more details',
26
27
  params: { first: :param },
@@ -34,10 +35,18 @@ module Grape
34
35
  XOptionalHeader: {
35
36
  description: 'Not really needed',
36
37
  required: false
37
- }]
38
+ }],
39
+ hidden: false,
40
+ deprecated: false,
41
+ is_array: true,
42
+ nickname: 'nickname',
43
+ produces: %w[array of mime_types],
44
+ consumes: %w[array of mime_types],
45
+ tags: %w[tag1 tag2]
38
46
  }
39
47
 
40
48
  subject.desc 'The description' do
49
+ summary 'summary'
41
50
  detail 'more details'
42
51
  params(first: :param)
43
52
  success Object
@@ -51,6 +60,13 @@ module Grape
51
60
  description: 'Not really needed',
52
61
  required: false
53
62
  }]
63
+ hidden false
64
+ deprecated false
65
+ is_array true
66
+ nickname 'nickname'
67
+ produces %w[array of mime_types]
68
+ consumes %w[array of mime_types]
69
+ tags %w[tag1 tag2]
54
70
  end
55
71
 
56
72
  expect(subject.namespace_setting(:description)).to eq(expected_options)
@@ -22,6 +22,14 @@ module Grape
22
22
  end
23
23
  end
24
24
 
25
+ describe '.insert' do
26
+ it 'adds a middleware with the right operation' do
27
+ expect(subject).to receive(:namespace_stackable).with(:middleware, [:insert, 0, :arg1, proc])
28
+
29
+ subject.insert 0, :arg1, &proc
30
+ end
31
+ end
32
+
25
33
  describe '.insert_before' do
26
34
  it 'adds a middleware with the right operation' do
27
35
  expect(subject).to receive(:namespace_stackable).with(:middleware, [:insert_before, foo_middleware, :arg1, proc])
@@ -70,6 +70,16 @@ module Grape
70
70
 
71
71
  expect(app2.inheritable_setting.to_hash[:namespace_stackable]).to eq(mount_path: ['/app1', '/app2'])
72
72
  end
73
+
74
+ it 'mounts multiple routes at once' do
75
+ base_app = Class.new(Grape::API)
76
+ app1 = Class.new(Grape::API)
77
+ app2 = Class.new(Grape::API)
78
+ base_app.mount(app1 => '/app1', app2 => '/app2')
79
+
80
+ expect(app1.inheritable_setting.to_hash[:namespace_stackable]).to eq(mount_path: ['/app1'])
81
+ expect(app2.inheritable_setting.to_hash[:namespace_stackable]).to eq(mount_path: ['/app2'])
82
+ end
73
83
  end
74
84
 
75
85
  describe '.route' do
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ describe Grape::Exceptions::Base do
4
+ describe '#compose_message' do
5
+ subject { described_class.new.send(:compose_message, key, attributes) }
6
+
7
+ let(:key) { :invalid_formatter }
8
+ let(:attributes) { { klass: String, to_format: 'xml' } }
9
+
10
+ after do
11
+ I18n.available_locales = %i[en]
12
+ I18n.default_locale = :en
13
+ end
14
+
15
+ context 'when I18n enforces available locales' do
16
+ before { I18n.enforce_available_locales = true }
17
+
18
+ context 'when the fallback locale is available' do
19
+ before do
20
+ I18n.available_locales = %i[de en]
21
+ I18n.default_locale = :de
22
+ end
23
+
24
+ it 'returns the translated message' do
25
+ expect(subject).to eq('cannot convert String to xml')
26
+ end
27
+ end
28
+
29
+ context 'when the fallback locale is not available' do
30
+ before do
31
+ I18n.available_locales = %i[de jp]
32
+ I18n.default_locale = :de
33
+ end
34
+
35
+ it 'returns the translation string' do
36
+ expect(subject).to eq("grape.errors.messages.#{key}")
37
+ end
38
+ end
39
+ end
40
+
41
+ context 'when I18n does not enforce available locales' do
42
+ before { I18n.enforce_available_locales = false }
43
+
44
+ context 'when the fallback locale is available' do
45
+ before { I18n.available_locales = %i[de en] }
46
+
47
+ it 'returns the translated message' do
48
+ expect(subject).to eq('cannot convert String to xml')
49
+ end
50
+ end
51
+
52
+ context 'when the fallback locale is not available' do
53
+ before { I18n.available_locales = %i[de jp] }
54
+
55
+ it 'returns the translated message' do
56
+ expect(subject).to eq('cannot convert String to xml')
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Grape::Exceptions::InvalidResponse do
4
+ describe '#message' do
5
+ let(:error) { described_class.new }
6
+
7
+ it 'contains the problem in the message' do
8
+ expect(error.message).to include('Invalid response')
9
+ end
10
+ end
11
+ end
@@ -15,15 +15,15 @@ describe Grape::Middleware::Auth::DSL do
15
15
 
16
16
  describe '.auth' do
17
17
  it 'stets auth parameters' do
18
- expect(subject).to receive(:use).with(Grape::Middleware::Auth::Base, settings)
18
+ expect(subject.base_instance).to receive(:use).with(Grape::Middleware::Auth::Base, settings)
19
19
 
20
20
  subject.auth :http_digest, realm: settings[:realm], opaque: settings[:opaque], &settings[:proc]
21
21
  expect(subject.auth).to eq(settings)
22
22
  end
23
23
 
24
24
  it 'can be called multiple times' do
25
- expect(subject).to receive(:use).with(Grape::Middleware::Auth::Base, settings)
26
- expect(subject).to receive(:use).with(Grape::Middleware::Auth::Base, settings.merge(realm: 'super_secret'))
25
+ expect(subject.base_instance).to receive(:use).with(Grape::Middleware::Auth::Base, settings)
26
+ expect(subject.base_instance).to receive(:use).with(Grape::Middleware::Auth::Base, settings.merge(realm: 'super_secret'))
27
27
 
28
28
  subject.auth :http_digest, realm: settings[:realm], opaque: settings[:opaque], &settings[:proc]
29
29
  first_settings = subject.auth
@@ -128,7 +128,7 @@ describe Grape::Middleware::Error do
128
128
  subject do
129
129
  Rack::Builder.app do
130
130
  use Spec::Support::EndpointFaker
131
- use Grape::Middleware::Error, rescue_handlers: { NotImplementedError => -> { [200, {}, 'rescued'] } }
131
+ use Grape::Middleware::Error, rescue_handlers: { NotImplementedError => -> { Rack::Response.new('rescued', 200, {}) } }
132
132
  run ExceptionSpec::OtherExceptionApp
133
133
  end
134
134
  end
@@ -160,6 +160,12 @@ describe Grape::Middleware::Versioner::Header do
160
160
  expect(subject.call({}).first).to eq(200)
161
161
  end
162
162
 
163
+ it 'succeeds if :strict is set to false and given an invalid header' do
164
+ @options[:version_options][:strict] = false
165
+ expect(subject.call('HTTP_ACCEPT' => 'yaml').first).to eq(200)
166
+ expect(subject.call({}).first).to eq(200)
167
+ end
168
+
163
169
  context 'when :strict is set' do
164
170
  before do
165
171
  @options[:versions] = ['v1']
@@ -479,6 +479,49 @@ describe Grape::Validations::ParamsScope do
479
479
  end.to_not raise_error
480
480
  end
481
481
 
482
+ it 'does not raise an error if when using nested given' do
483
+ expect do
484
+ subject.params do
485
+ optional :a, type: Hash do
486
+ requires :b
487
+ end
488
+ given :a do
489
+ requires :c
490
+ given :c do
491
+ requires :d
492
+ end
493
+ end
494
+ end
495
+ end.to_not raise_error
496
+ end
497
+
498
+ it 'allows nested dependent parameters' do
499
+ subject.params do
500
+ optional :a
501
+ given a: ->(val) { val == 'a' } do
502
+ optional :b
503
+ given b: ->(val) { val == 'b' } do
504
+ optional :c
505
+ given c: ->(val) { val == 'c' } do
506
+ requires :d
507
+ end
508
+ end
509
+ end
510
+ end
511
+ subject.get('/') { declared(params).to_json }
512
+
513
+ get '/'
514
+ expect(last_response.status).to eq 200
515
+
516
+ get '/', a: 'a', b: 'b', c: 'c'
517
+ expect(last_response.status).to eq 400
518
+ expect(last_response.body).to eq 'd is missing'
519
+
520
+ get '/', a: 'a', b: 'b', c: 'c', d: 'd'
521
+ expect(last_response.status).to eq 200
522
+ expect(last_response.body).to eq({ a: 'a', b: 'b', c: 'c', d: 'd' }.to_json)
523
+ end
524
+
482
525
  it 'allows aliasing of dependent parameters' do
483
526
  subject.params do
484
527
  optional :a
@@ -497,6 +540,34 @@ describe Grape::Validations::ParamsScope do
497
540
  expect(body.keys).to_not include('b')
498
541
  end
499
542
 
543
+ it 'allows aliasing of dependent on parameter' do
544
+ subject.params do
545
+ optional :a, as: :b
546
+ given b: ->(val) { val == 'x' } do
547
+ requires :c
548
+ end
549
+ end
550
+ subject.get('/') { declared(params) }
551
+
552
+ get '/', a: 'x'
553
+ expect(last_response.status).to eq 400
554
+ expect(last_response.body).to eq 'c is missing'
555
+
556
+ get '/', a: 'y'
557
+ expect(last_response.status).to eq 200
558
+ end
559
+
560
+ it 'raises an error if the dependent parameter is not the aliased one' do
561
+ expect do
562
+ subject.params do
563
+ optional :a, as: :b
564
+ given :a do
565
+ requires :c
566
+ end
567
+ end
568
+ end.to raise_error(Grape::Exceptions::UnknownParameter)
569
+ end
570
+
500
571
  it 'does not validate nested requires when given is false' do
501
572
  subject.params do
502
573
  requires :a, type: String, allow_blank: false, values: %w[x y z]
@@ -592,6 +663,32 @@ describe Grape::Validations::ParamsScope do
592
663
  end
593
664
  end
594
665
 
666
+ context 'default value in given block' do
667
+ before do
668
+ subject.params do
669
+ optional :a, values: %w[a b]
670
+ given a: ->(val) { val == 'a' } do
671
+ optional :b, default: 'default'
672
+ end
673
+ end
674
+ subject.get('/') { params.to_json }
675
+ end
676
+
677
+ context 'when dependency meets' do
678
+ it 'sets default value for dependent parameter' do
679
+ get '/', a: 'a'
680
+ expect(last_response.body).to eq({ a: 'a', b: 'default' }.to_json)
681
+ end
682
+ end
683
+
684
+ context 'when dependency does not meet' do
685
+ it 'does not set default value for dependent parameter' do
686
+ get '/', a: 'b'
687
+ expect(last_response.body).to eq({ a: 'b' }.to_json)
688
+ end
689
+ end
690
+ end
691
+
595
692
  context 'when validations are dependent on a parameter within an array param' do
596
693
  before do
597
694
  subject.params do
@@ -948,4 +1045,40 @@ describe Grape::Validations::ParamsScope do
948
1045
  end
949
1046
  end
950
1047
  end
1048
+
1049
+ context 'with exactly_one_of validation for optional parameters within an Hash param' do
1050
+ before do
1051
+ subject.params do
1052
+ optional :memo, type: Hash do
1053
+ optional :text, type: String
1054
+ optional :custom_body, type: Hash, coerce_with: JSON
1055
+ exactly_one_of :text, :custom_body
1056
+ end
1057
+ end
1058
+ subject.get('test')
1059
+ end
1060
+
1061
+ context 'when correct data is provided' do
1062
+ it 'returns a successful response' do
1063
+ get 'test', memo: {}
1064
+ expect(last_response.status).to eq(200)
1065
+
1066
+ get 'test', memo: { text: 'HOGEHOGE' }
1067
+ expect(last_response.status).to eq(200)
1068
+
1069
+ get 'test', memo: { custom_body: '{ "xxx": "yyy" }' }
1070
+ expect(last_response.status).to eq(200)
1071
+ end
1072
+ end
1073
+
1074
+ context 'when invalid data is provided' do
1075
+ it 'returns a failure response' do
1076
+ get 'test', memo: { text: 'HOGEHOGE', custom_body: '{ "xxx": "yyy" }' }
1077
+ expect(last_response.status).to eq(400)
1078
+
1079
+ get 'test', memo: '{ "custom_body": "HOGE" }'
1080
+ expect(last_response.status).to eq(400)
1081
+ end
1082
+ end
1083
+ end
951
1084
  end
@@ -12,7 +12,9 @@ Dir["#{File.dirname(__FILE__)}/support/*.rb"].each do |file|
12
12
  require file
13
13
  end
14
14
 
15
- I18n.enforce_available_locales = false
15
+ # The default value for this setting is true in a standard Rails app,
16
+ # so it should be set to true here as well to reflect that.
17
+ I18n.enforce_available_locales = true
16
18
 
17
19
  RSpec.configure do |config|
18
20
  config.include Rack::Test::Methods
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.1.0
4
+ version: 1.2.0
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-08-04 00:00:00.000000000 Z
11
+ date: 2018-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -117,17 +117,21 @@ 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
120
+ - gemfiles/rack_1.5.2.gemfile.lock
121
121
  - gemfiles/rack_edge.gemfile
122
122
  - gemfiles/rails_3.gemfile
123
+ - gemfiles/rails_3.gemfile.lock
123
124
  - gemfiles/rails_4.gemfile
125
+ - gemfiles/rails_4.gemfile.lock
124
126
  - gemfiles/rails_5.gemfile
127
+ - gemfiles/rails_5.gemfile.lock
125
128
  - gemfiles/rails_edge.gemfile
126
129
  - grape.gemspec
127
130
  - grape.png
128
131
  - lib/grape.rb
129
132
  - lib/grape/api.rb
130
133
  - lib/grape/api/helpers.rb
134
+ - lib/grape/api/instance.rb
131
135
  - lib/grape/cookies.rb
132
136
  - lib/grape/dsl/api.rb
133
137
  - lib/grape/dsl/callbacks.rb
@@ -154,6 +158,7 @@ files:
154
158
  - lib/grape/exceptions/invalid_accept_header.rb
155
159
  - lib/grape/exceptions/invalid_formatter.rb
156
160
  - lib/grape/exceptions/invalid_message_body.rb
161
+ - lib/grape/exceptions/invalid_response.rb
157
162
  - lib/grape/exceptions/invalid_version_header.rb
158
163
  - lib/grape/exceptions/invalid_versioner_option.rb
159
164
  - lib/grape/exceptions/invalid_with_option_for_represent.rb
@@ -250,8 +255,7 @@ files:
250
255
  - lib/grape/validations/validators/regexp.rb
251
256
  - lib/grape/validations/validators/values.rb
252
257
  - lib/grape/version.rb
253
- - pkg/grape-0.17.0.gem
254
- - pkg/grape-0.19.0.gem
258
+ - pkg/grape-1.2.0.gem
255
259
  - spec/grape/api/custom_validations_spec.rb
256
260
  - spec/grape/api/deeply_included_options_spec.rb
257
261
  - spec/grape/api/inherited_helpers_spec.rb
@@ -264,8 +268,10 @@ files:
264
268
  - spec/grape/api/recognize_path_spec.rb
265
269
  - spec/grape/api/required_parameters_in_route_spec.rb
266
270
  - spec/grape/api/required_parameters_with_invalid_method_spec.rb
271
+ - spec/grape/api/routes_with_requirements_spec.rb
267
272
  - spec/grape/api/shared_helpers_exactly_one_of_spec.rb
268
273
  - spec/grape/api/shared_helpers_spec.rb
274
+ - spec/grape/api_remount_spec.rb
269
275
  - spec/grape/api_spec.rb
270
276
  - spec/grape/dsl/callbacks_spec.rb
271
277
  - spec/grape/dsl/configuration_spec.rb
@@ -282,9 +288,11 @@ files:
282
288
  - spec/grape/dsl/validations_spec.rb
283
289
  - spec/grape/endpoint_spec.rb
284
290
  - spec/grape/entity_spec.rb
291
+ - spec/grape/exceptions/base_spec.rb
285
292
  - spec/grape/exceptions/body_parse_errors_spec.rb
286
293
  - spec/grape/exceptions/invalid_accept_header_spec.rb
287
294
  - spec/grape/exceptions/invalid_formatter_spec.rb
295
+ - spec/grape/exceptions/invalid_response_spec.rb
288
296
  - spec/grape/exceptions/invalid_versioner_option_spec.rb
289
297
  - spec/grape/exceptions/missing_mime_type_spec.rb
290
298
  - spec/grape/exceptions/missing_option_spec.rb
@@ -369,105 +377,109 @@ required_rubygems_version: !ruby/object:Gem::Requirement
369
377
  version: '0'
370
378
  requirements: []
371
379
  rubyforge_project:
372
- rubygems_version: 2.7.6
380
+ rubygems_version: 2.7.7
373
381
  signing_key:
374
382
  specification_version: 4
375
383
  summary: A simple Ruby framework for building REST-like APIs.
376
384
  test_files:
377
- - spec/spec_helper.rb
378
- - spec/integration/multi_xml/xml_spec.rb
379
- - spec/integration/multi_json/json_spec.rb
380
385
  - spec/shared/versioning_examples.rb
381
- - spec/support/basic_auth_encode_helpers.rb
382
- - spec/support/endpoint_faker.rb
383
- - spec/support/file_streamer.rb
384
- - spec/support/versioned_helpers.rb
385
- - spec/support/content_type_helpers.rb
386
- - spec/support/integer_helpers.rb
386
+ - spec/grape/api/shared_helpers_exactly_one_of_spec.rb
387
+ - spec/grape/api/custom_validations_spec.rb
388
+ - spec/grape/api/parameters_modification_spec.rb
389
+ - spec/grape/api/namespace_parameters_in_route_spec.rb
390
+ - spec/grape/api/deeply_included_options_spec.rb
391
+ - spec/grape/api/shared_helpers_spec.rb
392
+ - spec/grape/api/required_parameters_with_invalid_method_spec.rb
393
+ - spec/grape/api/inherited_helpers_spec.rb
394
+ - spec/grape/api/recognize_path_spec.rb
395
+ - spec/grape/api/required_parameters_in_route_spec.rb
396
+ - spec/grape/api/nested_helpers_spec.rb
397
+ - spec/grape/api/routes_with_requirements_spec.rb
398
+ - spec/grape/api/patch_method_helpers_spec.rb
399
+ - spec/grape/api/optional_parameters_in_route_spec.rb
400
+ - spec/grape/api/invalid_format_spec.rb
401
+ - spec/grape/exceptions/validation_spec.rb
402
+ - spec/grape/exceptions/validation_errors_spec.rb
403
+ - spec/grape/exceptions/missing_option_spec.rb
404
+ - spec/grape/exceptions/unknown_options_spec.rb
405
+ - spec/grape/exceptions/missing_mime_type_spec.rb
406
+ - spec/grape/exceptions/base_spec.rb
407
+ - spec/grape/exceptions/invalid_versioner_option_spec.rb
408
+ - spec/grape/exceptions/invalid_response_spec.rb
409
+ - spec/grape/exceptions/body_parse_errors_spec.rb
410
+ - spec/grape/exceptions/unknown_validator_spec.rb
411
+ - spec/grape/exceptions/invalid_formatter_spec.rb
412
+ - spec/grape/exceptions/invalid_accept_header_spec.rb
413
+ - spec/grape/dsl/routing_spec.rb
414
+ - spec/grape/dsl/logger_spec.rb
415
+ - spec/grape/dsl/request_response_spec.rb
416
+ - spec/grape/dsl/validations_spec.rb
417
+ - spec/grape/dsl/desc_spec.rb
418
+ - spec/grape/dsl/headers_spec.rb
419
+ - spec/grape/dsl/configuration_spec.rb
420
+ - spec/grape/dsl/settings_spec.rb
421
+ - spec/grape/dsl/callbacks_spec.rb
422
+ - spec/grape/dsl/parameters_spec.rb
423
+ - spec/grape/dsl/inside_route_spec.rb
424
+ - spec/grape/dsl/middleware_spec.rb
425
+ - spec/grape/dsl/helpers_spec.rb
426
+ - spec/grape/endpoint_spec.rb
427
+ - spec/grape/validations_spec.rb
428
+ - spec/grape/entity_spec.rb
429
+ - spec/grape/extensions/param_builders/hash_spec.rb
430
+ - spec/grape/extensions/param_builders/hash_with_indifferent_access_spec.rb
431
+ - spec/grape/extensions/param_builders/hashie/mash_spec.rb
432
+ - spec/grape/api_remount_spec.rb
433
+ - spec/grape/parser_spec.rb
434
+ - spec/grape/util/inheritable_setting_spec.rb
435
+ - spec/grape/util/reverse_stackable_values_spec.rb
436
+ - spec/grape/util/stackable_values_spec.rb
437
+ - spec/grape/util/inheritable_values_spec.rb
438
+ - spec/grape/util/strict_hash_configuration_spec.rb
439
+ - spec/grape/presenters/presenter_spec.rb
440
+ - spec/grape/middleware/versioner/header_spec.rb
441
+ - spec/grape/middleware/versioner/accept_version_header_spec.rb
442
+ - spec/grape/middleware/versioner/param_spec.rb
443
+ - spec/grape/middleware/versioner/path_spec.rb
387
444
  - spec/grape/middleware/error_spec.rb
388
445
  - spec/grape/middleware/globals_spec.rb
446
+ - spec/grape/middleware/base_spec.rb
389
447
  - spec/grape/middleware/formatter_spec.rb
448
+ - spec/grape/middleware/exception_spec.rb
449
+ - spec/grape/middleware/auth/base_spec.rb
390
450
  - spec/grape/middleware/auth/strategies_spec.rb
391
451
  - spec/grape/middleware/auth/dsl_spec.rb
392
- - spec/grape/middleware/auth/base_spec.rb
393
452
  - spec/grape/middleware/stack_spec.rb
394
- - spec/grape/middleware/exception_spec.rb
395
453
  - spec/grape/middleware/versioner_spec.rb
396
- - spec/grape/middleware/versioner/accept_version_header_spec.rb
397
- - spec/grape/middleware/versioner/header_spec.rb
398
- - spec/grape/middleware/versioner/path_spec.rb
399
- - spec/grape/middleware/versioner/param_spec.rb
400
- - spec/grape/middleware/base_spec.rb
401
- - spec/grape/loading_spec.rb
402
- - spec/grape/endpoint_spec.rb
403
- - spec/grape/api_spec.rb
404
- - spec/grape/util/reverse_stackable_values_spec.rb
405
- - spec/grape/util/stackable_values_spec.rb
406
- - spec/grape/util/inheritable_setting_spec.rb
407
- - spec/grape/util/strict_hash_configuration_spec.rb
408
- - spec/grape/util/inheritable_values_spec.rb
454
+ - spec/grape/request_spec.rb
455
+ - spec/grape/integration/global_namespace_function_spec.rb
409
456
  - spec/grape/integration/rack_spec.rb
410
457
  - spec/grape/integration/rack_sendfile_spec.rb
411
- - spec/grape/integration/global_namespace_function_spec.rb
412
- - spec/grape/validations_spec.rb
413
- - spec/grape/entity_spec.rb
414
- - spec/grape/exceptions/validation_spec.rb
415
- - spec/grape/exceptions/invalid_accept_header_spec.rb
416
- - spec/grape/exceptions/missing_option_spec.rb
417
- - spec/grape/exceptions/body_parse_errors_spec.rb
418
- - spec/grape/exceptions/invalid_formatter_spec.rb
419
- - spec/grape/exceptions/missing_mime_type_spec.rb
420
- - spec/grape/exceptions/unknown_options_spec.rb
421
- - spec/grape/exceptions/validation_errors_spec.rb
422
- - spec/grape/exceptions/unknown_validator_spec.rb
423
- - spec/grape/exceptions/invalid_versioner_option_spec.rb
424
- - spec/grape/presenters/presenter_spec.rb
425
458
  - spec/grape/validations/attributes_iterator_spec.rb
426
- - spec/grape/validations/params_scope_spec.rb
427
- - spec/grape/validations/instance_behaivour_spec.rb
428
- - spec/grape/validations/types_spec.rb
429
- - spec/grape/validations/validators/regexp_spec.rb
430
- - spec/grape/validations/validators/mutual_exclusion_spec.rb
431
459
  - spec/grape/validations/validators/exactly_one_of_spec.rb
432
- - spec/grape/validations/validators/except_values_spec.rb
433
- - spec/grape/validations/validators/presence_spec.rb
434
- - spec/grape/validations/validators/all_or_none_spec.rb
435
- - spec/grape/validations/validators/allow_blank_spec.rb
436
- - spec/grape/validations/validators/default_spec.rb
437
460
  - spec/grape/validations/validators/values_spec.rb
438
- - spec/grape/validations/validators/at_least_one_of_spec.rb
461
+ - spec/grape/validations/validators/presence_spec.rb
439
462
  - spec/grape/validations/validators/coerce_spec.rb
463
+ - spec/grape/validations/validators/at_least_one_of_spec.rb
440
464
  - spec/grape/validations/validators/zh-CN.yml
441
- - spec/grape/extensions/param_builders/hashie/mash_spec.rb
442
- - spec/grape/extensions/param_builders/hash_spec.rb
443
- - spec/grape/extensions/param_builders/hash_with_indifferent_access_spec.rb
444
- - spec/grape/parser_spec.rb
445
- - spec/grape/request_spec.rb
446
- - spec/grape/api/parameters_modification_spec.rb
447
- - spec/grape/api/patch_method_helpers_spec.rb
448
- - spec/grape/api/required_parameters_with_invalid_method_spec.rb
449
- - spec/grape/api/nested_helpers_spec.rb
450
- - spec/grape/api/invalid_format_spec.rb
451
- - spec/grape/api/required_parameters_in_route_spec.rb
452
- - spec/grape/api/namespace_parameters_in_route_spec.rb
453
- - spec/grape/api/recognize_path_spec.rb
454
- - spec/grape/api/shared_helpers_exactly_one_of_spec.rb
455
- - spec/grape/api/inherited_helpers_spec.rb
456
- - spec/grape/api/shared_helpers_spec.rb
457
- - spec/grape/api/deeply_included_options_spec.rb
458
- - spec/grape/api/custom_validations_spec.rb
459
- - spec/grape/api/optional_parameters_in_route_spec.rb
460
- - spec/grape/dsl/request_response_spec.rb
461
- - spec/grape/dsl/desc_spec.rb
462
- - spec/grape/dsl/logger_spec.rb
463
- - spec/grape/dsl/configuration_spec.rb
464
- - spec/grape/dsl/validations_spec.rb
465
- - spec/grape/dsl/parameters_spec.rb
466
- - spec/grape/dsl/helpers_spec.rb
467
- - spec/grape/dsl/middleware_spec.rb
468
- - spec/grape/dsl/headers_spec.rb
469
- - spec/grape/dsl/callbacks_spec.rb
470
- - spec/grape/dsl/settings_spec.rb
471
- - spec/grape/dsl/routing_spec.rb
472
- - spec/grape/dsl/inside_route_spec.rb
465
+ - spec/grape/validations/validators/default_spec.rb
466
+ - spec/grape/validations/validators/regexp_spec.rb
467
+ - spec/grape/validations/validators/all_or_none_spec.rb
468
+ - spec/grape/validations/validators/except_values_spec.rb
469
+ - spec/grape/validations/validators/mutual_exclusion_spec.rb
470
+ - spec/grape/validations/validators/allow_blank_spec.rb
471
+ - spec/grape/validations/params_scope_spec.rb
472
+ - spec/grape/validations/instance_behaivour_spec.rb
473
+ - spec/grape/validations/types_spec.rb
474
+ - spec/grape/api_spec.rb
475
+ - spec/grape/loading_spec.rb
473
476
  - spec/grape/path_spec.rb
477
+ - spec/support/file_streamer.rb
478
+ - spec/support/versioned_helpers.rb
479
+ - spec/support/content_type_helpers.rb
480
+ - spec/support/integer_helpers.rb
481
+ - spec/support/basic_auth_encode_helpers.rb
482
+ - spec/support/endpoint_faker.rb
483
+ - spec/spec_helper.rb
484
+ - spec/integration/multi_json/json_spec.rb
485
+ - spec/integration/multi_xml/xml_spec.rb