apipie-rails 0.3.6 → 0.5.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/.travis.yml +13 -3
- data/CHANGELOG.md +33 -0
- data/Gemfile +3 -3
- data/Gemfile.rails41 +1 -0
- data/Gemfile.rails42 +7 -1
- data/Gemfile.rails50 +7 -0
- data/Gemfile.rails51 +7 -0
- data/README.rst +12 -12
- data/apipie-rails.gemspec +2 -3
- data/app/controllers/apipie/apipies_controller.rb +10 -6
- data/config/locales/it.yml +31 -0
- data/config/locales/ja.yml +31 -0
- data/lib/apipie/apipie_module.rb +6 -4
- data/lib/apipie/application.rb +6 -11
- data/lib/apipie/dsl_definition.rb +2 -2
- data/lib/apipie/extractor/recorder.rb +5 -9
- data/lib/apipie/extractor/writer.rb +18 -13
- data/lib/apipie/extractor.rb +2 -2
- data/lib/apipie/param_description.rb +16 -1
- data/lib/apipie/validator.rb +3 -3
- data/lib/apipie/version.rb +1 -1
- data/lib/apipie-rails.rb +1 -0
- data/lib/tasks/apipie.rake +5 -1
- data/spec/controllers/apipies_controller_spec.rb +12 -12
- data/spec/controllers/concerns_controller_spec.rb +2 -2
- data/spec/controllers/users_controller_spec.rb +93 -74
- data/spec/dummy/app/controllers/application_controller.rb +1 -1
- data/spec/dummy/app/controllers/concerns/sample_controller.rb +5 -5
- data/spec/dummy/app/controllers/users_controller.rb +11 -10
- data/spec/dummy/config/environments/development.rb +3 -0
- data/spec/dummy/config/environments/production.rb +3 -0
- data/spec/dummy/config/environments/test.rb +3 -0
- data/spec/dummy/config/initializers/apipie.rb +1 -1
- data/spec/dummy/config/routes.rb +1 -1
- data/spec/spec_helper.rb +27 -0
- metadata +10 -22
- data/Gemfile.rails32 +0 -6
- data/Gemfile.rails40 +0 -5
@@ -12,37 +12,37 @@ describe Apipie::ApipiesController do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
it "succeeds on version details" do
|
15
|
-
get :index, :version => "2.0"
|
15
|
+
get :index, :params => { :version => "2.0" }
|
16
16
|
|
17
17
|
assert_response :success
|
18
18
|
end
|
19
19
|
|
20
20
|
it "returns not_found on wrong version" do
|
21
|
-
get :index, :version => "wrong_version"
|
21
|
+
get :index, :params => { :version => "wrong_version" }
|
22
22
|
|
23
23
|
assert_response :not_found
|
24
24
|
end
|
25
25
|
|
26
26
|
it "succeeds on resource details" do
|
27
|
-
get :index, :version => "2.0", :resource => "architectures"
|
27
|
+
get :index, :params => { :version => "2.0", :resource => "architectures" }
|
28
28
|
|
29
29
|
assert_response :success
|
30
30
|
end
|
31
31
|
|
32
32
|
it "returns not_found on wrong resource" do
|
33
|
-
get :index, :version => "2.0", :resource => "wrong_resource"
|
33
|
+
get :index, :params => { :version => "2.0", :resource => "wrong_resource" }
|
34
34
|
|
35
35
|
assert_response :not_found
|
36
36
|
end
|
37
37
|
|
38
38
|
it "succeeds on method details" do
|
39
|
-
get :index, :version => "2.0", :resource => "architectures", :method => "index"
|
39
|
+
get :index, :params => { :version => "2.0", :resource => "architectures", :method => "index" }
|
40
40
|
|
41
41
|
assert_response :success
|
42
42
|
end
|
43
43
|
|
44
44
|
it "returns not_found on wrong method" do
|
45
|
-
get :index, :version => "2.0", :resource => "architectures", :method => "wrong_method"
|
45
|
+
get :index, :params => { :version => "2.0", :resource => "architectures", :method => "wrong_method" }
|
46
46
|
|
47
47
|
assert_response :not_found
|
48
48
|
end
|
@@ -215,17 +215,17 @@ describe Apipie::ApipiesController do
|
|
215
215
|
it "uses the file in cache dir instead of generating the content on runtime" do
|
216
216
|
get :index
|
217
217
|
expect(response.body).to eq("apidoc.html cache v1")
|
218
|
-
get :index, :version => 'v1'
|
218
|
+
get :index, :params => { :version => 'v1' }
|
219
219
|
expect(response.body).to eq("apidoc.html cache v1")
|
220
|
-
get :index, :version => 'v2'
|
220
|
+
get :index, :params => { :version => 'v2' }
|
221
221
|
expect(response.body).to eq("apidoc.html cache v2")
|
222
|
-
get :index, :version => 'v1', :format => "html"
|
222
|
+
get :index, :params => { :version => 'v1', :format => "html" }
|
223
223
|
expect(response.body).to eq("apidoc.html cache v1")
|
224
|
-
get :index, :version => 'v1', :format => "json"
|
224
|
+
get :index, :params => { :version => 'v1', :format => "json" }
|
225
225
|
expect(response.body).to eq("apidoc.json cache")
|
226
|
-
get :index, :version => 'v1', :format => "html", :resource => "resource"
|
226
|
+
get :index, :params => { :version => 'v1', :format => "html", :resource => "resource" }
|
227
227
|
expect(response.body).to eq("resource.html cache")
|
228
|
-
get :index, :version => 'v1', :format => "html", :resource => "resource", :method => "method"
|
228
|
+
get :index, :params => { :version => 'v1', :format => "html", :resource => "resource", :method => "method" }
|
229
229
|
expect(response.body).to eq("method.html cache")
|
230
230
|
end
|
231
231
|
|
@@ -8,12 +8,12 @@ describe ConcernsController do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
it "should reply to valid request" do
|
11
|
-
get :show, :id => '5', :session => "secret_hash"
|
11
|
+
get :show, :params => { :id => '5' }, :session => { :user_id => "secret_hash" }
|
12
12
|
assert_response :success
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should pass if required parameter is missing" do
|
16
|
-
expect { get :show, :id => '5' }.not_to raise_error
|
16
|
+
expect { get :show, :params => { :id => '5' } }.not_to raise_error
|
17
17
|
end
|
18
18
|
|
19
19
|
it "peserved the order of methods being defined in file" do
|
@@ -66,12 +66,12 @@ describe UsersController do
|
|
66
66
|
end
|
67
67
|
|
68
68
|
it "should reply to valid request" do
|
69
|
-
get :show, :id => '5', :session => "secret_hash"
|
69
|
+
get :show, :params => { :id => '5', :session => "secret_hash" }
|
70
70
|
assert_response :success
|
71
71
|
end
|
72
72
|
|
73
73
|
it "should pass if required parameter is missing" do
|
74
|
-
expect { get :show, :id => 5 }.not_to raise_error
|
74
|
+
expect { get :show, :params => { :id => 5 } }.not_to raise_error
|
75
75
|
end
|
76
76
|
|
77
77
|
end
|
@@ -92,17 +92,17 @@ describe UsersController do
|
|
92
92
|
end
|
93
93
|
|
94
94
|
it "should reply to valid request" do
|
95
|
-
expect { get :show, :id => 5, :session => "secret_hash" }.not_to raise_error
|
95
|
+
expect { get :show, :params => { :id => 5, :session => "secret_hash" }}.not_to raise_error
|
96
96
|
assert_response :success
|
97
97
|
end
|
98
98
|
|
99
99
|
it "should fail if required parameter is missing" do
|
100
|
-
expect { get :show, :id => 5 }.to raise_error(Apipie::ParamMissing, /session_parameter_is_required/)
|
100
|
+
expect { get :show, :params => { :id => 5 }}.to raise_error(Apipie::ParamMissing, /session_parameter_is_required/)
|
101
101
|
end
|
102
102
|
|
103
103
|
it "should pass if required parameter has wrong type" do
|
104
|
-
expect { get :show, :id => 5, :session => "secret_hash" }.not_to raise_error
|
105
|
-
expect { get :show, :id => "ten", :session => "secret_hash" }.not_to raise_error
|
104
|
+
expect { get :show, :params => { :id => 5 , :session => "secret_hash" }}.not_to raise_error
|
105
|
+
expect { get :show, :params => { :id => "ten" , :session => "secret_hash" }}.not_to raise_error
|
106
106
|
end
|
107
107
|
|
108
108
|
end
|
@@ -115,12 +115,12 @@ describe UsersController do
|
|
115
115
|
end
|
116
116
|
|
117
117
|
it "should reply to valid request" do
|
118
|
-
expect { get :show, :id => 5, :session =>
|
118
|
+
expect { get :show, :params => { :id => 5, :session => 'secret_hash' }}.not_to raise_error
|
119
119
|
assert_response :success
|
120
120
|
end
|
121
121
|
|
122
122
|
it "should fail if extra parameter is passed in" do
|
123
|
-
expect { get :show, :
|
123
|
+
expect { get :show, :params => { :id => 5 , :badparam => 'badfoo', :session => "secret_hash" }}.to raise_error(Apipie::UnknownParam, /\bbadparam\b/)
|
124
124
|
end
|
125
125
|
end
|
126
126
|
|
@@ -132,86 +132,80 @@ describe UsersController do
|
|
132
132
|
end
|
133
133
|
|
134
134
|
it "should reply to valid request" do
|
135
|
-
get :show, :id => '5', :session => "secret_hash"
|
135
|
+
get :show, :params => { :id => '5', :session => "secret_hash" }
|
136
136
|
assert_response :success
|
137
137
|
end
|
138
138
|
|
139
139
|
it "should work with nil value for a required hash param" do
|
140
140
|
expect {
|
141
|
-
get :show, :id => '5', :session => "secret_hash", :hash_param => {:dummy_hash => nil}
|
141
|
+
get :show, :params => { :id => '5', :session => "secret_hash", :hash_param => {:dummy_hash => nil} }
|
142
142
|
}.to raise_error(Apipie::ParamInvalid, /dummy_hash/)
|
143
143
|
assert_response :success
|
144
144
|
end
|
145
145
|
|
146
146
|
it "should fail if required parameter is missing" do
|
147
|
-
expect { get :show, :id => 5 }.to raise_error(Apipie::ParamMissing, /session_parameter_is_required/)
|
147
|
+
expect { get :show, :params => { :id => 5 }}.to raise_error(Apipie::ParamMissing, /session_parameter_is_required/)
|
148
148
|
end
|
149
149
|
|
150
150
|
it "should work with custom Type validator" do
|
151
151
|
expect {
|
152
152
|
get :show,
|
153
|
-
:id => "not a number",
|
154
|
-
:session => "secret_hash"
|
153
|
+
:params => { :id => "not a number", :session => "secret_hash" }
|
155
154
|
}.to raise_error(Apipie::ParamError, /id/) # old-style error rather than ParamInvalid
|
156
155
|
end
|
157
156
|
|
158
157
|
it "should work with Regexp validator" do
|
159
|
-
get :show,
|
160
|
-
:id => 5,
|
161
|
-
:session => "secret_hash",
|
162
|
-
:regexp_param => "24 years"
|
158
|
+
get :show, :params => { :id => 5, :session => "secret_hash", :regexp_param => "24 years" }
|
163
159
|
assert_response :success
|
164
160
|
|
165
161
|
expect {
|
166
|
-
get :show,
|
167
|
-
|
168
|
-
|
169
|
-
:regexp_param => "ten years"
|
162
|
+
get :show, :params => { :id => 5,
|
163
|
+
:session => "secret_hash",
|
164
|
+
:regexp_param => "ten years" }
|
170
165
|
}.to raise_error(Apipie::ParamInvalid, /regexp_param/)
|
171
166
|
end
|
172
167
|
|
173
168
|
it "should work with Array validator" do
|
174
|
-
get :show, :id => 5, :session => "secret_hash", :array_param => "one"
|
175
|
-
assert_response :success
|
176
|
-
get :show, :id => 5, :session => "secret_hash", :array_param => "two"
|
169
|
+
get :show, :params => { :id => 5, :session => "secret_hash", :array_param => "one" }
|
177
170
|
assert_response :success
|
178
|
-
get :show, :id => 5, :session => "secret_hash", :array_param =>
|
171
|
+
get :show, :params => { :id => 5, :session => "secret_hash", :array_param => "two" }
|
179
172
|
assert_response :success
|
180
|
-
get :show, :id => 5, :session => "secret_hash", :
|
173
|
+
get :show, :params => { :id => 5, :session => "secret_hash", :array_param => '1' }
|
181
174
|
assert_response :success
|
182
175
|
|
183
176
|
expect {
|
184
|
-
get :show,
|
185
|
-
|
186
|
-
|
187
|
-
:array_param => "blabla"
|
177
|
+
get :show, :params => { :id => 5,
|
178
|
+
:session => "secret_hash",
|
179
|
+
:array_param => "blabla" }
|
188
180
|
}.to raise_error(Apipie::ParamInvalid, /array_param/)
|
189
181
|
|
190
182
|
expect {
|
191
|
-
get :show,
|
192
|
-
|
193
|
-
|
194
|
-
|
183
|
+
get :show, :params => {
|
184
|
+
:id => 5,
|
185
|
+
:session => "secret_hash",
|
186
|
+
:array_param => 3 }
|
195
187
|
}.to raise_error(Apipie::ParamInvalid, /array_param/)
|
196
188
|
end
|
197
189
|
|
198
190
|
it "should work with Proc validator" do
|
199
191
|
expect {
|
200
192
|
get :show,
|
201
|
-
:
|
202
|
-
|
203
|
-
|
193
|
+
:params => {
|
194
|
+
:id => 5,
|
195
|
+
:session => "secret_hash",
|
196
|
+
:proc_param => "asdgsag" }
|
204
197
|
}.to raise_error(Apipie::ParamInvalid, /proc_param/)
|
205
198
|
|
206
199
|
get :show,
|
207
|
-
:
|
208
|
-
|
209
|
-
|
200
|
+
:params => {
|
201
|
+
:id => 5,
|
202
|
+
:session => "secret_hash",
|
203
|
+
:proc_param => "param value"}
|
210
204
|
assert_response :success
|
211
205
|
end
|
212
206
|
|
213
207
|
it "should work with Hash validator" do
|
214
|
-
post :create, :user => { :name => "root", :pass => "12345", :membership => "standard" }
|
208
|
+
post :create, params: { :user => { :name => "root", :pass => "12345", :membership => "standard" } }
|
215
209
|
assert_response :success
|
216
210
|
|
217
211
|
a = Apipie[UsersController, :create]
|
@@ -225,18 +219,18 @@ describe UsersController do
|
|
225
219
|
hash_params[2].name == :membership
|
226
220
|
|
227
221
|
expect {
|
228
|
-
post :create, :user => { :name => "root", :pass => "12345", :membership => "____" }
|
222
|
+
post :create, :params => { :user => { :name => "root", :pass => "12345", :membership => "____" } }
|
229
223
|
}.to raise_error(Apipie::ParamInvalid, /membership/)
|
230
224
|
|
231
225
|
expect {
|
232
|
-
post :create, :user => { :name => "root" }
|
226
|
+
post :create, :params => { :user => { :name => "root" } }
|
233
227
|
}.to raise_error(Apipie::ParamMissing, /pass/)
|
234
228
|
|
235
229
|
expect {
|
236
|
-
post :create, :user => "a string is not a hash"
|
230
|
+
post :create, :params => { :user => "a string is not a hash" }
|
237
231
|
}.to raise_error(Apipie::ParamInvalid, /user/)
|
238
232
|
|
239
|
-
post :create, :user => { :name => "root", :pass => "pwd" }
|
233
|
+
post :create, :params => { :user => { :name => "root", :pass => "pwd" } }
|
240
234
|
assert_response :success
|
241
235
|
end
|
242
236
|
|
@@ -244,10 +238,11 @@ describe UsersController do
|
|
244
238
|
params = Apipie[UsersController, :create].to_json[:params]
|
245
239
|
expect(params).to include(:name => "facts",
|
246
240
|
:full_name => "facts",
|
247
|
-
:validator => "Must be Hash",
|
241
|
+
:validator => "Must be a Hash",
|
248
242
|
:description => "\n<p>Additional optional facts about the user</p>\n",
|
249
243
|
:required => false,
|
250
244
|
:allow_nil => true,
|
245
|
+
:allow_blank => false,
|
251
246
|
:metadata => nil,
|
252
247
|
:show => true,
|
253
248
|
:expected_type => "hash",
|
@@ -256,12 +251,27 @@ describe UsersController do
|
|
256
251
|
|
257
252
|
it "should allow nil when allow_nil is set to true" do
|
258
253
|
post :create,
|
259
|
-
:
|
260
|
-
:
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
254
|
+
:params => {
|
255
|
+
:user => {
|
256
|
+
:name => "root",
|
257
|
+
:pass => "12345",
|
258
|
+
:membership => "standard",
|
259
|
+
},
|
260
|
+
:facts => { :test => 'test' }
|
261
|
+
}
|
262
|
+
assert_response :success
|
263
|
+
end
|
264
|
+
|
265
|
+
it "should allow blank when allow_blank is set to true" do
|
266
|
+
post :create,
|
267
|
+
:params => {
|
268
|
+
:user => {
|
269
|
+
:name => "root",
|
270
|
+
:pass => "12345",
|
271
|
+
:membership => "standard"
|
272
|
+
},
|
273
|
+
:age => ""
|
274
|
+
}
|
265
275
|
assert_response :success
|
266
276
|
end
|
267
277
|
|
@@ -270,7 +280,7 @@ describe UsersController do
|
|
270
280
|
context "with valid input" do
|
271
281
|
it "should succeed" do
|
272
282
|
put :update,
|
273
|
-
{
|
283
|
+
:params => {
|
274
284
|
:id => 5,
|
275
285
|
:user => {
|
276
286
|
:name => "root",
|
@@ -293,27 +303,27 @@ describe UsersController do
|
|
293
303
|
it "should raise an error" do
|
294
304
|
expect{
|
295
305
|
put :update,
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
},
|
302
|
-
:comments => [
|
303
|
-
{
|
304
|
-
:comment => 'comment1'
|
306
|
+
:params => {
|
307
|
+
:id => 5,
|
308
|
+
:user => {
|
309
|
+
:name => "root",
|
310
|
+
:pass => "12345"
|
305
311
|
},
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
312
|
+
:comments => [
|
313
|
+
{
|
314
|
+
:comment => {:bad_input => 4}
|
315
|
+
},
|
316
|
+
{
|
317
|
+
:comment => {:bad_input => 5}
|
318
|
+
}
|
319
|
+
]
|
320
|
+
}
|
311
321
|
}.to raise_error(Apipie::ParamInvalid)
|
312
322
|
end
|
313
323
|
end
|
314
324
|
it "should work with empty array" do
|
315
325
|
put :update,
|
316
|
-
{
|
326
|
+
:params => {
|
317
327
|
:id => 5,
|
318
328
|
:user => {
|
319
329
|
:name => "root",
|
@@ -525,7 +535,8 @@ describe UsersController do
|
|
525
535
|
:params => [{:full_name=>"oauth",
|
526
536
|
:required=>false,
|
527
537
|
:allow_nil => false,
|
528
|
-
:
|
538
|
+
:allow_blank => false,
|
539
|
+
:validator=>"Must be a String",
|
529
540
|
:description=>"\n<p>Authorization</p>\n",
|
530
541
|
:name=>"oauth",
|
531
542
|
:show=>true,
|
@@ -534,6 +545,7 @@ describe UsersController do
|
|
534
545
|
:description=>"\n<p>Deprecated parameter not documented</p>\n",
|
535
546
|
:expected_type=>"hash",
|
536
547
|
:allow_nil=>false,
|
548
|
+
:allow_blank => false,
|
537
549
|
:name=>"legacy_param",
|
538
550
|
:required=>false,
|
539
551
|
:full_name=>"legacy_param",
|
@@ -543,6 +555,7 @@ describe UsersController do
|
|
543
555
|
:description=>"\n<p>Param description for all methods</p>\n",
|
544
556
|
:expected_type=>"hash",
|
545
557
|
:allow_nil=>false,
|
558
|
+
:allow_blank => false,
|
546
559
|
:name=>"resource_param",
|
547
560
|
:required=>false,
|
548
561
|
:full_name=>"resource_param",
|
@@ -550,14 +563,16 @@ describe UsersController do
|
|
550
563
|
:params=>
|
551
564
|
[{:required=>true,
|
552
565
|
:allow_nil => false,
|
553
|
-
:
|
566
|
+
:allow_blank => false,
|
567
|
+
:validator=>"Must be a String",
|
554
568
|
:description=>"\n<p>Username for login</p>\n",
|
555
569
|
:name=>"ausername", :full_name=>"resource_param[ausername]",
|
556
570
|
:show=>true,
|
557
571
|
:expected_type=>"string"},
|
558
572
|
{:required=>true,
|
559
573
|
:allow_nil => false,
|
560
|
-
:
|
574
|
+
:allow_blank => false,
|
575
|
+
:validator=>"Must be a String",
|
561
576
|
:description=>"\n<p>Password for login</p>\n",
|
562
577
|
:name=>"apassword", :full_name=>"resource_param[apassword]",
|
563
578
|
:show=>true,
|
@@ -567,6 +582,7 @@ describe UsersController do
|
|
567
582
|
},
|
568
583
|
{:required=>false, :validator=>"Parameter has to be Integer.",
|
569
584
|
:allow_nil => false,
|
585
|
+
:allow_blank => false,
|
570
586
|
:description=>"\n<p>Company ID</p>\n",
|
571
587
|
:name=>"id", :full_name=>"id",
|
572
588
|
:show=>true,
|
@@ -690,17 +706,20 @@ EOS2
|
|
690
706
|
|
691
707
|
describe "Parameter processing / extraction" do
|
692
708
|
before do
|
709
|
+
Apipie.configuration.validate = true
|
693
710
|
Apipie.configuration.process_params = true
|
711
|
+
controllers_dirname = File.expand_path('../dummy/app/controllers', File.dirname(__FILE__))
|
712
|
+
Dir.glob("#{controllers_dirname}/**/*") { |file| load(file) if File.file?(file) }
|
694
713
|
end
|
695
714
|
|
696
715
|
it "process correctly the parameters" do
|
697
|
-
post :create, {:user => {:name => 'dummy', :pass => 'dummy', :membership => 'standard'}, :facts =>
|
716
|
+
post :create, :params => {:user => {:name => 'dummy', :pass => 'dummy', :membership => 'standard' }, :facts => {:test => 'test'}}
|
698
717
|
|
699
|
-
expect(assigns(:api_params).with_indifferent_access).to eq({:user => {:name=>"dummy", :pass=>"dummy", :membership=>"standard"}, :facts =>
|
718
|
+
expect(assigns(:api_params).with_indifferent_access).to eq({:user => {:name=>"dummy", :pass=>"dummy", :membership=>"standard"}, :facts => {:test => 'test'}}.with_indifferent_access)
|
700
719
|
end
|
701
720
|
|
702
721
|
it "ignore not described parameters" do
|
703
|
-
post :create, {:user => {:name => 'dummy', :pass => 'dummy', :membership => 'standard', :id => 0}}
|
722
|
+
post :create, :params => {:user => {:name => 'dummy', :pass => 'dummy', :membership => 'standard', :id => 0}}
|
704
723
|
|
705
724
|
expect(assigns(:api_params).with_indifferent_access).to eq({:user => {:name=>"dummy", :pass=>"dummy", :membership=>"standard"}}.with_indifferent_access)
|
706
725
|
end
|
@@ -4,13 +4,13 @@ module Concerns
|
|
4
4
|
|
5
5
|
api!
|
6
6
|
def index
|
7
|
-
render :
|
7
|
+
render :plain => "OK #{params.inspect}"
|
8
8
|
end
|
9
9
|
|
10
10
|
api :GET, '/:resource_id/:id'
|
11
11
|
param :id, String
|
12
12
|
def show
|
13
|
-
render :
|
13
|
+
render :plain => "OK #{params.inspect}"
|
14
14
|
end
|
15
15
|
|
16
16
|
def_param_group :concern do
|
@@ -23,19 +23,19 @@ module Concerns
|
|
23
23
|
api :POST, '/:resource_id', "Create a :concern"
|
24
24
|
param_group :concern
|
25
25
|
def create
|
26
|
-
render :
|
26
|
+
render :plain => "OK #{params.inspect}"
|
27
27
|
end
|
28
28
|
|
29
29
|
api :PUT, '/:resource_id/:id'
|
30
30
|
param :id, String
|
31
31
|
param_group :concern
|
32
32
|
def update
|
33
|
-
render :
|
33
|
+
render :plain => "OK #{params.inspect}"
|
34
34
|
end
|
35
35
|
|
36
36
|
api :GET, '/:resource_id/:custom_subst'
|
37
37
|
def custom
|
38
|
-
render :
|
38
|
+
render :plain => "OK #{params.inspect}"
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
@@ -192,15 +192,15 @@ class UsersController < ApplicationController
|
|
192
192
|
end
|
193
193
|
def show
|
194
194
|
unless params[:session] == "secret_hash"
|
195
|
-
render :
|
195
|
+
render :plain => "Not authorized", :status => 401
|
196
196
|
return
|
197
197
|
end
|
198
198
|
|
199
199
|
unless params[:id].to_i == 5
|
200
|
-
render :
|
200
|
+
render :plain => "Not Found", :status => 404 and return
|
201
201
|
end
|
202
202
|
|
203
|
-
render :
|
203
|
+
render :plain => "OK"
|
204
204
|
end
|
205
205
|
|
206
206
|
def_param_group :credentials do
|
@@ -221,8 +221,9 @@ class UsersController < ApplicationController
|
|
221
221
|
param :permalink, String
|
222
222
|
end
|
223
223
|
param :facts, Hash, :desc => "Additional optional facts about the user", :allow_nil => true
|
224
|
+
param :age, :number, :desc => "Age is just a number", :allow_blank => true
|
224
225
|
def create
|
225
|
-
render :
|
226
|
+
render :plain => "OK #{params.inspect}"
|
226
227
|
end
|
227
228
|
|
228
229
|
api :PUT, "/users/:id", "Update an user"
|
@@ -231,13 +232,13 @@ class UsersController < ApplicationController
|
|
231
232
|
param :comment, String
|
232
233
|
end
|
233
234
|
def update
|
234
|
-
render :
|
235
|
+
render :plain => "OK #{params.inspect}"
|
235
236
|
end
|
236
237
|
|
237
238
|
api :POST, "/users/admin", "Create admin user"
|
238
239
|
param_group :user, :as => :create
|
239
240
|
def admin_create
|
240
|
-
render :
|
241
|
+
render :plain => "OK #{params.inspect}"
|
241
242
|
end
|
242
243
|
|
243
244
|
api :GET, "/users", "List users"
|
@@ -247,14 +248,14 @@ class UsersController < ApplicationController
|
|
247
248
|
param :oauth, nil,
|
248
249
|
:desc => "Hide this global param (eg dont need auth here)"
|
249
250
|
def index
|
250
|
-
render :
|
251
|
+
render :plain => "List of users"
|
251
252
|
end
|
252
253
|
|
253
254
|
api :GET, '/company_users', 'Get company users'
|
254
255
|
api :GET, '/company/:id/users', 'Get users working in given company'
|
255
256
|
param :id, Integer, :desc => "Company ID"
|
256
257
|
def two_urls
|
257
|
-
render :
|
258
|
+
render :plain => 'List of users'
|
258
259
|
end
|
259
260
|
|
260
261
|
api :GET, '/users/see_another', 'Boring method'
|
@@ -263,14 +264,14 @@ class UsersController < ApplicationController
|
|
263
264
|
see 'development#users#index', "very interesting method reference"
|
264
265
|
desc 'This method is boring, look at users#create. It is hidden from documentation.'
|
265
266
|
def see_another
|
266
|
-
render :
|
267
|
+
render :plain => 'This is very similar to create action'
|
267
268
|
end
|
268
269
|
|
269
270
|
|
270
271
|
api :GET, '/users/desc_from_file', 'desc from file'
|
271
272
|
document 'users/desc_from_file.md'
|
272
273
|
def desc_from_file
|
273
|
-
render :
|
274
|
+
render :plain => 'document from file action'
|
274
275
|
end
|
275
276
|
|
276
277
|
api! 'Create user'
|
@@ -6,7 +6,7 @@ Apipie.configure do |config|
|
|
6
6
|
# can be overriden in resource_description
|
7
7
|
# by default is it 1.0 if not specified anywhere
|
8
8
|
# this must be defined before api_base_url and app_info
|
9
|
-
config.default_version = "development"
|
9
|
+
config.default_version = "development".freeze
|
10
10
|
|
11
11
|
config.doc_base_url = "/apidoc"
|
12
12
|
|
data/spec/dummy/config/routes.rb
CHANGED
@@ -10,7 +10,7 @@ Dummy::Application.routes.draw do
|
|
10
10
|
end
|
11
11
|
resources :concerns, :only => [:index, :show]
|
12
12
|
namespace :files do
|
13
|
-
get '/*file_path',
|
13
|
+
get '/*file_path', format: false, :action => 'download'
|
14
14
|
end
|
15
15
|
resources :twitter_example do
|
16
16
|
collection do
|
data/spec/spec_helper.rb
CHANGED
@@ -9,6 +9,30 @@ require 'rspec/rails'
|
|
9
9
|
|
10
10
|
require 'apipie-rails'
|
11
11
|
|
12
|
+
module Rails4Compatibility
|
13
|
+
module Testing
|
14
|
+
def process(*args)
|
15
|
+
compatible_request(*args) { |*new_args| super(*new_args) }
|
16
|
+
end
|
17
|
+
|
18
|
+
def compatible_request(method, action, hash = {})
|
19
|
+
if hash.is_a?(Hash)
|
20
|
+
if Gem::Version.new(Rails.version) < Gem::Version.new('5.0.0')
|
21
|
+
hash = hash.dup
|
22
|
+
hash.merge!(hash.delete(:params) || {})
|
23
|
+
elsif hash.key?(:params)
|
24
|
+
hash = { :params => hash }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
if hash.empty?
|
28
|
+
yield method, action
|
29
|
+
else
|
30
|
+
yield method, action, hash
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
12
36
|
# Requires supporting ruby files with custom matchers and macros, etc,
|
13
37
|
# in spec/support/ and its subdirectories.
|
14
38
|
Dir[File.expand_path("../support/**/*.rb", __FILE__)].each {|f| require f}
|
@@ -41,3 +65,6 @@ RSpec.configure do |config|
|
|
41
65
|
# end
|
42
66
|
config.infer_spec_type_from_file_location!
|
43
67
|
end
|
68
|
+
|
69
|
+
require 'action_controller/test_case.rb'
|
70
|
+
ActionController::TestCase::Behavior.send(:prepend, Rails4Compatibility::Testing)
|