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.
- checksums.yaml +4 -4
- data/Appraisals +3 -7
- data/CHANGELOG.md +21 -1
- data/Gemfile.lock +26 -26
- data/README.md +109 -29
- data/UPGRADING.md +45 -0
- data/gemfiles/rack_1.5.2.gemfile.lock +232 -0
- data/gemfiles/rails_3.gemfile +1 -1
- data/gemfiles/rails_3.gemfile.lock +288 -0
- data/gemfiles/rails_4.gemfile +1 -1
- data/gemfiles/rails_4.gemfile.lock +280 -0
- data/gemfiles/rails_5.gemfile +1 -1
- data/gemfiles/rails_5.gemfile.lock +312 -0
- data/lib/grape.rb +1 -0
- data/lib/grape/api.rb +74 -195
- data/lib/grape/api/instance.rb +242 -0
- data/lib/grape/dsl/desc.rb +17 -1
- data/lib/grape/dsl/middleware.rb +7 -0
- data/lib/grape/dsl/parameters.rb +9 -4
- data/lib/grape/dsl/routing.rb +5 -1
- data/lib/grape/endpoint.rb +1 -1
- data/lib/grape/exceptions/base.rb +9 -1
- data/lib/grape/exceptions/invalid_response.rb +9 -0
- data/lib/grape/locale/en.yml +1 -0
- data/lib/grape/middleware/error.rb +8 -2
- data/lib/grape/middleware/versioner/header.rb +2 -2
- data/lib/grape/validations/params_scope.rb +1 -0
- data/lib/grape/validations/validators/multiple_params_base.rb +1 -1
- data/lib/grape/version.rb +1 -1
- data/pkg/grape-1.2.0.gem +0 -0
- data/spec/grape/api/routes_with_requirements_spec.rb +59 -0
- data/spec/grape/api_remount_spec.rb +85 -0
- data/spec/grape/api_spec.rb +70 -1
- data/spec/grape/dsl/desc_spec.rb +17 -1
- data/spec/grape/dsl/middleware_spec.rb +8 -0
- data/spec/grape/dsl/routing_spec.rb +10 -0
- data/spec/grape/exceptions/base_spec.rb +61 -0
- data/spec/grape/exceptions/invalid_response_spec.rb +11 -0
- data/spec/grape/middleware/auth/dsl_spec.rb +3 -3
- data/spec/grape/middleware/exception_spec.rb +1 -1
- data/spec/grape/middleware/versioner/header_spec.rb +6 -0
- data/spec/grape/validations/params_scope_spec.rb +133 -0
- data/spec/spec_helper.rb +3 -1
- metadata +99 -87
- data/gemfiles/rack_1.5.2.gemfile +0 -35
- data/pkg/grape-0.17.0.gem +0 -0
- data/pkg/grape-0.19.0.gem +0 -0
data/spec/grape/dsl/desc_spec.rb
CHANGED
@@ -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
|
@@ -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 => -> {
|
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
|
data/spec/spec_helper.rb
CHANGED
@@ -12,7 +12,9 @@ Dir["#{File.dirname(__FILE__)}/support/*.rb"].each do |file|
|
|
12
12
|
require file
|
13
13
|
end
|
14
14
|
|
15
|
-
|
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.
|
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-
|
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-
|
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.
|
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/
|
382
|
-
- spec/
|
383
|
-
- spec/
|
384
|
-
- spec/
|
385
|
-
- spec/
|
386
|
-
- spec/
|
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/
|
397
|
-
- spec/grape/
|
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/
|
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/
|
442
|
-
- spec/grape/
|
443
|
-
- spec/grape/
|
444
|
-
- spec/grape/
|
445
|
-
- spec/grape/
|
446
|
-
- spec/grape/
|
447
|
-
- spec/grape/
|
448
|
-
- spec/grape/
|
449
|
-
- spec/grape/
|
450
|
-
- spec/grape/
|
451
|
-
- spec/grape/
|
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
|