sinatra_resource 0.1.0 → 0.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.
- data/VERSION +1 -1
- data/examples/datacatalog/lib/resource.rb +2 -2
- data/examples/datacatalog/lib/roles.rb +1 -1
- data/examples/datacatalog/resources/categories_sources.rb +43 -0
- data/examples/datacatalog/test/helpers/lib/request_helpers.rb +10 -2
- data/examples/datacatalog/test/helpers/resource_test_helper.rb +1 -1
- data/examples/datacatalog/test/helpers/shared/api_keys.rb +4 -4
- data/examples/datacatalog/test/helpers/shared/model_counts.rb +81 -0
- data/examples/datacatalog/test/helpers/shared/status_codes.rb +7 -3
- data/examples/datacatalog/test/helpers/test_helper.rb +2 -9
- data/examples/datacatalog/test/resources/categories/categories_delete_test.rb +5 -17
- data/examples/datacatalog/test/resources/categories/categories_get_many_test.rb +5 -2
- data/examples/datacatalog/test/resources/categories/categories_get_one_test.rb +4 -3
- data/examples/datacatalog/test/resources/categories/categories_post_test.rb +27 -43
- data/examples/datacatalog/test/resources/categories/categories_put_test.rb +9 -15
- data/examples/datacatalog/test/resources/categories_sources/categories_sources_delete_test.rb +148 -0
- data/examples/datacatalog/test/resources/categories_sources/categories_sources_get_many_test.rb +92 -0
- data/examples/datacatalog/test/resources/categories_sources/categories_sources_get_one_test.rb +95 -0
- data/examples/datacatalog/test/resources/categories_sources/categories_sources_post_test.rb +187 -0
- data/examples/datacatalog/test/resources/categories_sources/categories_sources_put_test.rb +323 -0
- data/examples/datacatalog/test/resources/sources/sources_delete_test.rb +5 -17
- data/examples/datacatalog/test/resources/sources/sources_get_many_test.rb +5 -2
- data/examples/datacatalog/test/resources/sources/sources_get_one_test.rb +4 -3
- data/examples/datacatalog/test/resources/sources/sources_post_test.rb +22 -35
- data/examples/datacatalog/test/resources/sources/sources_put_test.rb +12 -18
- data/examples/datacatalog/test/resources/users/users_delete_test.rb +10 -22
- data/examples/datacatalog/test/resources/users/users_get_many_test.rb +5 -2
- data/examples/datacatalog/test/resources/users/users_get_one_test.rb +4 -3
- data/examples/datacatalog/test/resources/users/users_post_test.rb +15 -32
- data/examples/datacatalog/test/resources/users/users_put_test.rb +15 -23
- data/lib/builder/action_definitions.rb +60 -0
- data/lib/builder/helpers.rb +53 -26
- data/lib/builder/mongo_helpers.rb +61 -10
- data/lib/builder.rb +136 -38
- data/lib/resource.rb +99 -16
- data/lib/sinatra_resource.rb +6 -6
- data/notes/permissions.mdown +6 -6
- data/sinatra_resource.gemspec +17 -2
- metadata +17 -2
@@ -0,0 +1,323 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../helpers/resource_test_helper')
|
2
|
+
|
3
|
+
class CategoriesSourcesPutResourceTest < ResourceTestCase
|
4
|
+
|
5
|
+
include DataCatalog
|
6
|
+
|
7
|
+
def app; Categories end
|
8
|
+
|
9
|
+
before do
|
10
|
+
@category = create_category
|
11
|
+
@source = create_source
|
12
|
+
@source_copy = @source.dup
|
13
|
+
@categorization = create_categorization(
|
14
|
+
:source_id => @source.id,
|
15
|
+
:category_id => @category.id
|
16
|
+
)
|
17
|
+
@other_category = create_category
|
18
|
+
@other_source = create_source
|
19
|
+
@other_categorization = create_categorization(
|
20
|
+
:source_id => @other_source.id,
|
21
|
+
:category_id => @other_category.id
|
22
|
+
)
|
23
|
+
@valid_params = {
|
24
|
+
:title => "Changed Source",
|
25
|
+
:url => "http://updated.com/details/7"
|
26
|
+
}
|
27
|
+
@extra_admin_params = { :raw => { "key" => "value" } }
|
28
|
+
end
|
29
|
+
|
30
|
+
after do
|
31
|
+
@other_categorization.destroy
|
32
|
+
@other_source.destroy
|
33
|
+
@other_category.destroy
|
34
|
+
@categorization.destroy
|
35
|
+
@source.destroy
|
36
|
+
@category.destroy
|
37
|
+
end
|
38
|
+
|
39
|
+
context "put /:id/sources/:id" do
|
40
|
+
context "anonymous" do
|
41
|
+
before do
|
42
|
+
put "/#{@category.id}/sources/#{@source.id}"
|
43
|
+
end
|
44
|
+
|
45
|
+
use "return 401 because the API key is missing"
|
46
|
+
use "source unchanged"
|
47
|
+
end
|
48
|
+
|
49
|
+
context "incorrect API key" do
|
50
|
+
before do
|
51
|
+
put "/#{@category.id}/sources/#{@source.id}", :api_key => BAD_API_KEY
|
52
|
+
end
|
53
|
+
|
54
|
+
use "return 401 because the API key is invalid"
|
55
|
+
use "source unchanged"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
%w(basic).each do |role|
|
60
|
+
context "#{role} : put /:fake_id/sources/:fake_id" do
|
61
|
+
before do
|
62
|
+
put "/#{FAKE_ID}/sources/#{FAKE_ID}", :api_key => api_key_for(role)
|
63
|
+
end
|
64
|
+
|
65
|
+
use "return 404 Not Found with empty response body"
|
66
|
+
use "source unchanged"
|
67
|
+
end
|
68
|
+
|
69
|
+
context "#{role} : put /:fake_id/sources/:id" do
|
70
|
+
before do
|
71
|
+
put "/#{FAKE_ID}/sources/#{@source.id}", :api_key => api_key_for(role)
|
72
|
+
end
|
73
|
+
|
74
|
+
use "return 404 Not Found with empty response body"
|
75
|
+
use "source unchanged"
|
76
|
+
end
|
77
|
+
|
78
|
+
context "#{role} : put /:id/sources/:fake_id" do
|
79
|
+
before do
|
80
|
+
put "/#{@category.id}/sources/#{FAKE_ID}", :api_key => api_key_for(role)
|
81
|
+
end
|
82
|
+
|
83
|
+
use "return 401 because the API key is unauthorized"
|
84
|
+
use "source unchanged"
|
85
|
+
end
|
86
|
+
|
87
|
+
context "#{role} : put /:id/sources/:not_related_id" do
|
88
|
+
before do
|
89
|
+
put "/#{@category.id}/sources/#{@other_source.id}",
|
90
|
+
:api_key => api_key_for(role)
|
91
|
+
end
|
92
|
+
|
93
|
+
use "return 401 because the API key is unauthorized"
|
94
|
+
use "source unchanged"
|
95
|
+
end
|
96
|
+
|
97
|
+
context "#{role} : put /:id/sources/:id" do
|
98
|
+
before do
|
99
|
+
put "/#{@category.id}/sources/#{@source.id}", :api_key => api_key_for(role)
|
100
|
+
end
|
101
|
+
|
102
|
+
use "return 401 because the API key is unauthorized"
|
103
|
+
use "source unchanged"
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
%w(curator).each do |role|
|
108
|
+
context "#{role} : put /:fake_id/sources/:fake_id" do
|
109
|
+
before do
|
110
|
+
put "/#{FAKE_ID}/sources/#{FAKE_ID}", :api_key => api_key_for(role)
|
111
|
+
end
|
112
|
+
|
113
|
+
use "return 404 Not Found with empty response body"
|
114
|
+
use "source unchanged"
|
115
|
+
end
|
116
|
+
|
117
|
+
context "#{role} : put /:fake_id/sources/:id" do
|
118
|
+
before do
|
119
|
+
put "/#{FAKE_ID}/sources/#{@source.id}", :api_key => api_key_for(role)
|
120
|
+
end
|
121
|
+
|
122
|
+
use "return 404 Not Found with empty response body"
|
123
|
+
use "source unchanged"
|
124
|
+
end
|
125
|
+
|
126
|
+
context "#{role} : put /:id/sources/:fake_id" do
|
127
|
+
before do
|
128
|
+
put "/#{@category.id}/sources/#{FAKE_ID}", :api_key => api_key_for(role)
|
129
|
+
end
|
130
|
+
|
131
|
+
use "return 404 Not Found with empty response body"
|
132
|
+
use "source unchanged"
|
133
|
+
end
|
134
|
+
|
135
|
+
context "#{role} : put /:id/sources/:not_related_id" do
|
136
|
+
before do
|
137
|
+
put "/#{@category.id}/sources/#{@other_source.id}",
|
138
|
+
:api_key => api_key_for(role)
|
139
|
+
end
|
140
|
+
|
141
|
+
use "return 404 Not Found with empty response body"
|
142
|
+
use "source unchanged"
|
143
|
+
end
|
144
|
+
|
145
|
+
[:raw, :created_at, :updated_at].each do |invalid|
|
146
|
+
context "#{role} : put /:id/sources/:id with #{invalid}" do
|
147
|
+
before do
|
148
|
+
put "/#{@category.id}/sources/#{@source.id}",
|
149
|
+
valid_params_for(role).merge(invalid => 9)
|
150
|
+
end
|
151
|
+
|
152
|
+
use "return 400 Bad Request"
|
153
|
+
use "source unchanged"
|
154
|
+
invalid_param invalid
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
[:title, :url].each do |erase|
|
159
|
+
context "#{role} : put /:id/sources/:id but blanking out #{erase}" do
|
160
|
+
before do
|
161
|
+
put "/#{@category.id}/sources/#{@source.id}",
|
162
|
+
valid_params_for(role).merge(erase => "")
|
163
|
+
end
|
164
|
+
|
165
|
+
use "return 400 Bad Request"
|
166
|
+
use "source unchanged"
|
167
|
+
missing_param erase
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
[:title, :url].each do |missing|
|
172
|
+
context "#{role} : put /:id/sources/:id without #{missing}" do
|
173
|
+
before do
|
174
|
+
put "/#{@category.id}/sources/#{@source.id}",
|
175
|
+
valid_params_for(role).delete_if { |k, v| k == missing }
|
176
|
+
end
|
177
|
+
|
178
|
+
use "return 200 Ok"
|
179
|
+
doc_properties %w(title url raw id created_at updated_at)
|
180
|
+
|
181
|
+
test "should change correct fields in database" do
|
182
|
+
source = Source.find_by_id(@source.id)
|
183
|
+
@valid_params.each_pair do |key, value|
|
184
|
+
assert_equal(value, source[key]) if key != missing
|
185
|
+
end
|
186
|
+
assert_equal @source_copy[missing], source[missing]
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
context "#{role} : put /:id/sources/:id with valid params" do
|
192
|
+
before do
|
193
|
+
put "/#{@category.id}/sources/#{@source.id}", valid_params_for(role)
|
194
|
+
end
|
195
|
+
|
196
|
+
use "return 200 Ok"
|
197
|
+
doc_properties %w(title url raw id created_at updated_at)
|
198
|
+
|
199
|
+
test "should change correct fields in database" do
|
200
|
+
source = Source.find_by_id(@source.id)
|
201
|
+
@valid_params.each_pair do |key, value|
|
202
|
+
assert_equal value, source[key]
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
%w(admin).each do |role|
|
209
|
+
context "#{role} : put /:fake_id/sources/:fake_id" do
|
210
|
+
before do
|
211
|
+
put "/#{FAKE_ID}/sources/#{FAKE_ID}",
|
212
|
+
valid_params_for(role).merge(@extra_admin_params)
|
213
|
+
end
|
214
|
+
|
215
|
+
use "return 404 Not Found with empty response body"
|
216
|
+
use "source unchanged"
|
217
|
+
end
|
218
|
+
|
219
|
+
context "#{role} : put /:fake_id/sources/:id" do
|
220
|
+
before do
|
221
|
+
put "/#{FAKE_ID}/sources/#{@source.id}",
|
222
|
+
valid_params_for(role).merge(@extra_admin_params)
|
223
|
+
end
|
224
|
+
|
225
|
+
use "return 404 Not Found with empty response body"
|
226
|
+
use "source unchanged"
|
227
|
+
end
|
228
|
+
|
229
|
+
context "#{role} : put /:id/sources/:fake_id" do
|
230
|
+
before do
|
231
|
+
put "/#{@category.id}/sources/#{FAKE_ID}",
|
232
|
+
valid_params_for(role).merge(@extra_admin_params)
|
233
|
+
end
|
234
|
+
|
235
|
+
use "return 404 Not Found with empty response body"
|
236
|
+
use "source unchanged"
|
237
|
+
end
|
238
|
+
|
239
|
+
context "#{role} : put /:id/sources/:not_related_id" do
|
240
|
+
before do
|
241
|
+
put "/#{@category.id}/sources/#{@other_source.id}",
|
242
|
+
valid_params_for(role).merge(@extra_admin_params)
|
243
|
+
end
|
244
|
+
|
245
|
+
use "return 404 Not Found with empty response body"
|
246
|
+
use "source unchanged"
|
247
|
+
end
|
248
|
+
|
249
|
+
[:created_at, :updated_at].each do |invalid|
|
250
|
+
context "#{role} : put /:id/sources/:id but with #{invalid}" do
|
251
|
+
before do
|
252
|
+
put "/#{@category.id}/sources/#{@source.id}",
|
253
|
+
valid_params_for(role).merge(@extra_admin_params).merge(invalid => 9)
|
254
|
+
end
|
255
|
+
|
256
|
+
use "return 400 Bad Request"
|
257
|
+
use "source unchanged"
|
258
|
+
invalid_param invalid
|
259
|
+
end
|
260
|
+
end
|
261
|
+
|
262
|
+
[:title, :url].each do |erase|
|
263
|
+
context "#{role} : put /:id/sources/:id but blanking out #{erase}" do
|
264
|
+
before do
|
265
|
+
put "/#{@category.id}/sources/#{@source.id}",
|
266
|
+
valid_params_for(role).merge(@extra_admin_params).merge(erase => "")
|
267
|
+
end
|
268
|
+
|
269
|
+
use "return 400 Bad Request"
|
270
|
+
use "source unchanged"
|
271
|
+
missing_param erase
|
272
|
+
end
|
273
|
+
end
|
274
|
+
|
275
|
+
context "#{role} : put /:id/sources/:id with no params" do
|
276
|
+
before do
|
277
|
+
put "/#{@category.id}/sources/#{@source.id}",
|
278
|
+
:api_key => api_key_for(role)
|
279
|
+
end
|
280
|
+
|
281
|
+
use "return 400 because no params were given"
|
282
|
+
use "source unchanged"
|
283
|
+
end
|
284
|
+
|
285
|
+
[:title, :url].each do |missing|
|
286
|
+
context "#{role} : put /:id/sources/:id without #{missing}" do
|
287
|
+
before do
|
288
|
+
put "/#{@category.id}/sources/#{@source.id}",
|
289
|
+
valid_params_for(role).merge(@extra_admin_params).delete_if { |k, v| k == missing }
|
290
|
+
end
|
291
|
+
|
292
|
+
use "return 200 Ok"
|
293
|
+
doc_properties %w(title url raw id created_at updated_at)
|
294
|
+
|
295
|
+
test "should change correct fields in database" do
|
296
|
+
source = Source.find_by_id(@source.id)
|
297
|
+
@valid_params.merge(@extra_admin_params).each_pair do |key, value|
|
298
|
+
assert_equal(value, source[key]) if key != missing
|
299
|
+
end
|
300
|
+
assert_equal @source_copy[missing], source[missing]
|
301
|
+
end
|
302
|
+
end
|
303
|
+
end
|
304
|
+
|
305
|
+
context "#{role} : put /:id/sources/:id" do
|
306
|
+
before do
|
307
|
+
put "/#{@category.id}/sources/#{@source.id}",
|
308
|
+
valid_params_for(role).merge(@extra_admin_params)
|
309
|
+
end
|
310
|
+
|
311
|
+
use "return 200 Ok"
|
312
|
+
doc_properties %w(title url raw id created_at updated_at)
|
313
|
+
|
314
|
+
test "should change all fields in database" do
|
315
|
+
source = Source.find_by_id(@source.id)
|
316
|
+
@valid_params.merge(@extra_admin_params).each_pair do |key, value|
|
317
|
+
assert_equal value, source[key]
|
318
|
+
end
|
319
|
+
end
|
320
|
+
end
|
321
|
+
end
|
322
|
+
|
323
|
+
end
|
@@ -14,18 +14,6 @@ class SourcesDeleteResourceTest < ResourceTestCase
|
|
14
14
|
after do
|
15
15
|
@source.destroy
|
16
16
|
end
|
17
|
-
|
18
|
-
shared "no change in source count" do
|
19
|
-
test "should not change number of source documents in database" do
|
20
|
-
assert_equal @source_count, Source.all.length
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
shared "one less source" do
|
25
|
-
test "should remove one source document from database" do
|
26
|
-
assert_equal @source_count - 1, Source.all.length
|
27
|
-
end
|
28
|
-
end
|
29
17
|
|
30
18
|
context "delete /:id" do
|
31
19
|
context "anonymous" do
|
@@ -53,7 +41,7 @@ class SourcesDeleteResourceTest < ResourceTestCase
|
|
53
41
|
delete "/#{FAKE_ID}", :api_key => api_key_for(role)
|
54
42
|
end
|
55
43
|
|
56
|
-
use "return 401
|
44
|
+
use "return 401 because the API key is unauthorized"
|
57
45
|
use "no change in source count"
|
58
46
|
end
|
59
47
|
|
@@ -64,7 +52,7 @@ class SourcesDeleteResourceTest < ResourceTestCase
|
|
64
52
|
:key => "value"
|
65
53
|
end
|
66
54
|
|
67
|
-
use "return 401
|
55
|
+
use "return 401 because the API key is unauthorized"
|
68
56
|
use "no change in source count"
|
69
57
|
end
|
70
58
|
|
@@ -73,7 +61,7 @@ class SourcesDeleteResourceTest < ResourceTestCase
|
|
73
61
|
delete "/#{@source.id}", :api_key => api_key_for(role)
|
74
62
|
end
|
75
63
|
|
76
|
-
use "return 401
|
64
|
+
use "return 401 because the API key is unauthorized"
|
77
65
|
use "no change in source count"
|
78
66
|
end
|
79
67
|
end
|
@@ -84,7 +72,7 @@ class SourcesDeleteResourceTest < ResourceTestCase
|
|
84
72
|
delete "/#{FAKE_ID}", :api_key => api_key_for(role)
|
85
73
|
end
|
86
74
|
|
87
|
-
use "return 404 Not Found"
|
75
|
+
use "return 404 Not Found with empty response body"
|
88
76
|
use "no change in source count"
|
89
77
|
end
|
90
78
|
|
@@ -95,7 +83,7 @@ class SourcesDeleteResourceTest < ResourceTestCase
|
|
95
83
|
:key => "value"
|
96
84
|
end
|
97
85
|
|
98
|
-
use "return 400 because
|
86
|
+
use "return 400 because params were not empty"
|
99
87
|
use "no change in source count"
|
100
88
|
end
|
101
89
|
|
@@ -2,16 +2,19 @@ require File.expand_path(File.dirname(__FILE__) + '/../../helpers/resource_test_
|
|
2
2
|
|
3
3
|
class SourcesGetManyResourceTest < ResourceTestCase
|
4
4
|
|
5
|
-
|
5
|
+
include DataCatalog
|
6
|
+
|
7
|
+
def app; Sources end
|
6
8
|
|
7
9
|
before do
|
10
|
+
raise "Unexpected Source count" unless Source.count == 0
|
8
11
|
@sources = 3.times.map do |i|
|
9
12
|
create_source(:title => "Source #{i}")
|
10
13
|
end
|
11
14
|
end
|
12
15
|
|
13
16
|
after do
|
14
|
-
@sources.each { |x| x.destroy }
|
17
|
+
@sources.each { |x| x.destroy } if @sources
|
15
18
|
end
|
16
19
|
|
17
20
|
SOURCES = ["Source 0", "Source 1", "Source 2"].sort
|
@@ -2,7 +2,9 @@ require File.expand_path(File.dirname(__FILE__) + '/../../helpers/resource_test_
|
|
2
2
|
|
3
3
|
class SourcesGetOneResourceTest < ResourceTestCase
|
4
4
|
|
5
|
-
|
5
|
+
include DataCatalog
|
6
|
+
|
7
|
+
def app; Sources end
|
6
8
|
|
7
9
|
before do
|
8
10
|
@source = create_source
|
@@ -36,8 +38,7 @@ class SourcesGetOneResourceTest < ResourceTestCase
|
|
36
38
|
get "/#{FAKE_ID}", :api_key => api_key_for(role)
|
37
39
|
end
|
38
40
|
|
39
|
-
use "return 404 Not Found"
|
40
|
-
use "return an empty response body"
|
41
|
+
use "return 404 Not Found with empty response body"
|
41
42
|
end
|
42
43
|
|
43
44
|
context "#{role} : get /:id" do
|
@@ -15,27 +15,6 @@ class SourcesPostResourceTest < ResourceTestCase
|
|
15
15
|
@extra_admin_params = { :raw => { "key" => "value" } }
|
16
16
|
end
|
17
17
|
|
18
|
-
shared "no new sources" do
|
19
|
-
test "should not change number of source documents in database" do
|
20
|
-
assert_equal @source_count, Source.all.length
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
shared "one new source" do
|
25
|
-
test "should add one source document to database" do
|
26
|
-
assert_equal @source_count + 1, Source.all.length
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
shared "correct Location header" do
|
31
|
-
test "should set Location header correctly" do
|
32
|
-
base_uri = Config.environment_config["base_uri"]
|
33
|
-
path = %(/sources/#{parsed_response_body["id"]})
|
34
|
-
expected = URI.join(base_uri, path).to_s
|
35
|
-
assert_equal expected, last_response.headers['Location']
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
18
|
context "post /" do
|
40
19
|
context "anonymous" do
|
41
20
|
before do
|
@@ -43,7 +22,7 @@ class SourcesPostResourceTest < ResourceTestCase
|
|
43
22
|
end
|
44
23
|
|
45
24
|
use "return 401 because the API key is missing"
|
46
|
-
use "no
|
25
|
+
use "no change in source count"
|
47
26
|
end
|
48
27
|
|
49
28
|
context "incorrect API key" do
|
@@ -52,7 +31,7 @@ class SourcesPostResourceTest < ResourceTestCase
|
|
52
31
|
end
|
53
32
|
|
54
33
|
use "return 401 because the API key is invalid"
|
55
|
-
use "no
|
34
|
+
use "no change in source count"
|
56
35
|
end
|
57
36
|
end
|
58
37
|
|
@@ -63,8 +42,8 @@ class SourcesPostResourceTest < ResourceTestCase
|
|
63
42
|
post "/", valid_params_for(role).delete_if { |k, v| k == missing }
|
64
43
|
end
|
65
44
|
|
66
|
-
use "return 401
|
67
|
-
use "no
|
45
|
+
use "return 401 because the API key is unauthorized"
|
46
|
+
use "no change in source count"
|
68
47
|
end
|
69
48
|
end
|
70
49
|
|
@@ -74,8 +53,8 @@ class SourcesPostResourceTest < ResourceTestCase
|
|
74
53
|
post "/", valid_params_for(role).merge(invalid => 9)
|
75
54
|
end
|
76
55
|
|
77
|
-
use "return 401
|
78
|
-
use "no
|
56
|
+
use "return 401 because the API key is unauthorized"
|
57
|
+
use "no change in source count"
|
79
58
|
end
|
80
59
|
end
|
81
60
|
|
@@ -84,8 +63,8 @@ class SourcesPostResourceTest < ResourceTestCase
|
|
84
63
|
post "/", valid_params_for(role)
|
85
64
|
end
|
86
65
|
|
87
|
-
use "return 401
|
88
|
-
use "no
|
66
|
+
use "return 401 because the API key is unauthorized"
|
67
|
+
use "no change in source count"
|
89
68
|
end
|
90
69
|
end
|
91
70
|
|
@@ -97,7 +76,7 @@ class SourcesPostResourceTest < ResourceTestCase
|
|
97
76
|
end
|
98
77
|
|
99
78
|
use "return 400 Bad Request"
|
100
|
-
use "no
|
79
|
+
use "no change in source count"
|
101
80
|
missing_param missing
|
102
81
|
end
|
103
82
|
end
|
@@ -109,7 +88,7 @@ class SourcesPostResourceTest < ResourceTestCase
|
|
109
88
|
end
|
110
89
|
|
111
90
|
use "return 400 Bad Request"
|
112
|
-
use "no
|
91
|
+
use "no change in source count"
|
113
92
|
invalid_param invalid
|
114
93
|
end
|
115
94
|
end
|
@@ -118,9 +97,13 @@ class SourcesPostResourceTest < ResourceTestCase
|
|
118
97
|
before do
|
119
98
|
post "/", valid_params_for(role)
|
120
99
|
end
|
100
|
+
|
101
|
+
after do
|
102
|
+
Source.find_by_id(parsed_response_body["id"]).destroy
|
103
|
+
end
|
121
104
|
|
122
105
|
use "return 201 Created"
|
123
|
-
|
106
|
+
location_header "sources"
|
124
107
|
use "one new source"
|
125
108
|
doc_properties %w(title url raw id created_at updated_at categories)
|
126
109
|
|
@@ -143,7 +126,7 @@ class SourcesPostResourceTest < ResourceTestCase
|
|
143
126
|
end
|
144
127
|
|
145
128
|
use "return 400 Bad Request"
|
146
|
-
use "no
|
129
|
+
use "no change in source count"
|
147
130
|
missing_param missing
|
148
131
|
end
|
149
132
|
end
|
@@ -156,7 +139,7 @@ class SourcesPostResourceTest < ResourceTestCase
|
|
156
139
|
end
|
157
140
|
|
158
141
|
use "return 400 Bad Request"
|
159
|
-
use "no
|
142
|
+
use "no change in source count"
|
160
143
|
invalid_param invalid
|
161
144
|
end
|
162
145
|
end
|
@@ -165,9 +148,13 @@ class SourcesPostResourceTest < ResourceTestCase
|
|
165
148
|
before do
|
166
149
|
post "/", valid_params_for(role).merge(@extra_admin_params)
|
167
150
|
end
|
151
|
+
|
152
|
+
after do
|
153
|
+
Source.find_by_id(parsed_response_body["id"]).destroy
|
154
|
+
end
|
168
155
|
|
169
156
|
use "return 201 Created"
|
170
|
-
|
157
|
+
location_header "sources"
|
171
158
|
use "one new source"
|
172
159
|
doc_properties %w(title url raw id created_at updated_at categories)
|
173
160
|
|