sinatra_resource 0.4.21 → 0.4.22

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. data/Gemfile +18 -0
  2. data/Gemfile.lock +51 -0
  3. data/README.mdown +1 -1
  4. data/VERSION +1 -1
  5. data/examples/datacatalog/.bundle/config +2 -0
  6. data/examples/datacatalog/Gemfile +14 -0
  7. data/examples/datacatalog/Gemfile.lock +33 -0
  8. data/examples/datacatalog/Rakefile +2 -2
  9. data/examples/datacatalog/app.rb +0 -2
  10. data/examples/datacatalog/config/config.rb +5 -7
  11. data/examples/datacatalog/lib/base.rb +2 -2
  12. data/examples/datacatalog/lib/resource.rb +5 -5
  13. data/examples/datacatalog/lib/roles.rb +2 -2
  14. data/examples/datacatalog/model_helpers/search.rb +6 -6
  15. data/examples/datacatalog/models/categorization.rb +1 -1
  16. data/examples/datacatalog/models/note.rb +1 -1
  17. data/examples/datacatalog/models/source.rb +3 -3
  18. data/examples/datacatalog/models/usage.rb +2 -2
  19. data/examples/datacatalog/models/user.rb +7 -7
  20. data/examples/datacatalog/resources/categories.rb +7 -7
  21. data/examples/datacatalog/resources/categories_sources.rb +4 -4
  22. data/examples/datacatalog/resources/notes.rb +1 -1
  23. data/examples/datacatalog/resources/sources.rb +3 -3
  24. data/examples/datacatalog/resources/sources_usages.rb +3 -3
  25. data/examples/datacatalog/resources/users.rb +3 -3
  26. data/examples/datacatalog/tasks/db.rake +2 -2
  27. data/examples/datacatalog/tasks/test.rake +1 -1
  28. data/examples/datacatalog/test/helpers/assertions/assert_include.rb +1 -1
  29. data/examples/datacatalog/test/helpers/assertions/assert_not_include.rb +1 -1
  30. data/examples/datacatalog/test/helpers/lib/model_factories.rb +7 -7
  31. data/examples/datacatalog/test/helpers/lib/model_helpers.rb +1 -1
  32. data/examples/datacatalog/test/helpers/lib/request_helpers.rb +7 -7
  33. data/examples/datacatalog/test/helpers/resource_test_helper.rb +1 -1
  34. data/examples/datacatalog/test/helpers/shared/api_keys.rb +11 -11
  35. data/examples/datacatalog/test/helpers/shared/common_body_responses.rb +1 -1
  36. data/examples/datacatalog/test/helpers/shared/model_counts.rb +2 -2
  37. data/examples/datacatalog/test/helpers/shared/status_codes.rb +4 -4
  38. data/examples/datacatalog/test/helpers/test_cases/resource_test_case.rb +4 -4
  39. data/examples/datacatalog/test/helpers/test_helper.rb +4 -10
  40. data/examples/datacatalog/test/models/categorization_test.rb +6 -6
  41. data/examples/datacatalog/test/models/category_test.rb +8 -8
  42. data/examples/datacatalog/test/models/note_test.rb +6 -6
  43. data/examples/datacatalog/test/models/search_test.rb +4 -4
  44. data/examples/datacatalog/test/models/source_test.rb +5 -5
  45. data/examples/datacatalog/test/models/user_test.rb +11 -11
  46. data/examples/datacatalog/test/resources/categories/categories_delete_test.rb +12 -12
  47. data/examples/datacatalog/test/resources/categories/categories_get_many_test.rb +9 -9
  48. data/examples/datacatalog/test/resources/categories/categories_get_one_test.rb +7 -7
  49. data/examples/datacatalog/test/resources/categories/categories_post_test.rb +16 -16
  50. data/examples/datacatalog/test/resources/categories/categories_put_test.rb +17 -17
  51. data/examples/datacatalog/test/resources/categories_sources/categories_sources_delete_test.rb +25 -25
  52. data/examples/datacatalog/test/resources/categories_sources/categories_sources_get_many_test.rb +5 -5
  53. data/examples/datacatalog/test/resources/categories_sources/categories_sources_get_one_test.rb +15 -15
  54. data/examples/datacatalog/test/resources/categories_sources/categories_sources_post_test.rb +31 -31
  55. data/examples/datacatalog/test/resources/categories_sources/categories_sources_put_test.rb +41 -41
  56. data/examples/datacatalog/test/resources/notes/notes_get_many_test.rb +15 -15
  57. data/examples/datacatalog/test/resources/notes/notes_get_one_test.rb +7 -7
  58. data/examples/datacatalog/test/resources/notes/notes_post_test.rb +12 -12
  59. data/examples/datacatalog/test/resources/sources/sources_delete_test.rb +12 -12
  60. data/examples/datacatalog/test/resources/sources/sources_get_many_search_test.rb +20 -20
  61. data/examples/datacatalog/test/resources/sources/sources_get_many_test.rb +8 -8
  62. data/examples/datacatalog/test/resources/sources/sources_get_one_test.rb +17 -9
  63. data/examples/datacatalog/test/resources/sources/sources_post_test.rb +13 -13
  64. data/examples/datacatalog/test/resources/sources/sources_put_test.rb +30 -30
  65. data/examples/datacatalog/test/resources/sources_usages/sources_usages_delete_test.rb +24 -24
  66. data/examples/datacatalog/test/resources/sources_usages/sources_usages_get_many_filter_test.rb +9 -9
  67. data/examples/datacatalog/test/resources/sources_usages/sources_usages_get_many_test.rb +9 -9
  68. data/examples/datacatalog/test/resources/sources_usages/sources_usages_get_one_test.rb +15 -15
  69. data/examples/datacatalog/test/resources/sources_usages/sources_usages_post_test.rb +16 -16
  70. data/examples/datacatalog/test/resources/sources_usages/sources_usages_put_test.rb +33 -33
  71. data/examples/datacatalog/test/resources/users/users_delete_test.rb +21 -21
  72. data/examples/datacatalog/test/resources/users/users_get_many_test.rb +16 -16
  73. data/examples/datacatalog/test/resources/users/users_get_one_test.rb +8 -8
  74. data/examples/datacatalog/test/resources/users/users_post_test.rb +13 -13
  75. data/examples/datacatalog/test/resources/users/users_put_test.rb +18 -18
  76. data/lib/builder/action_definitions.rb +8 -8
  77. data/lib/builder/helpers.rb +10 -12
  78. data/lib/builder/mongo_helpers.rb +13 -14
  79. data/lib/builder.rb +10 -10
  80. data/lib/exceptions.rb +1 -1
  81. data/lib/resource.rb +20 -20
  82. data/lib/roles.rb +2 -2
  83. data/lib/utility.rb +2 -2
  84. data/notes/permissions.mdown +6 -6
  85. data/sinatra_resource.gemspec +9 -4
  86. data/spec/spec_helper.rb +1 -1
  87. data/spec/utility_spec.rb +2 -2
  88. metadata +30 -4
@@ -5,11 +5,11 @@ class CategoriesGetOneResourceTest < ResourceTestCase
5
5
  include DataCatalog
6
6
 
7
7
  def app; Categories end
8
-
8
+
9
9
  before do
10
10
  @category = create_category
11
11
  end
12
-
12
+
13
13
  after do
14
14
  @category.destroy
15
15
  end
@@ -19,7 +19,7 @@ class CategoriesGetOneResourceTest < ResourceTestCase
19
19
  before do
20
20
  get "/#{@category.id}"
21
21
  end
22
-
22
+
23
23
  use "return 401 because the API key is missing"
24
24
  end
25
25
 
@@ -27,7 +27,7 @@ class CategoriesGetOneResourceTest < ResourceTestCase
27
27
  before do
28
28
  get "/#{@category.id}", :api_key => BAD_API_KEY
29
29
  end
30
-
30
+
31
31
  use "return 401 because the API key is invalid"
32
32
  end
33
33
  end
@@ -37,7 +37,7 @@ class CategoriesGetOneResourceTest < ResourceTestCase
37
37
  before do
38
38
  get "/#{FAKE_ID}", :api_key => api_key_for(role)
39
39
  end
40
-
40
+
41
41
  use "return 404 Not Found with empty response body"
42
42
  end
43
43
 
@@ -50,7 +50,7 @@ class CategoriesGetOneResourceTest < ResourceTestCase
50
50
  )
51
51
  get "/#{@category.id}", :api_key => api_key_for(role)
52
52
  end
53
-
53
+
54
54
  after do
55
55
  @source.destroy
56
56
  @categorization.destroy
@@ -58,7 +58,7 @@ class CategoriesGetOneResourceTest < ResourceTestCase
58
58
 
59
59
  use "return 200 Ok"
60
60
  doc_properties %w(name log id created_at updated_at sources)
61
-
61
+
62
62
  test "body should have correct sources" do
63
63
  expected = [
64
64
  {
@@ -18,7 +18,7 @@ class CategoriesPostResourceTest < ResourceTestCase
18
18
  before do
19
19
  post "/", @valid_params
20
20
  end
21
-
21
+
22
22
  use "return 401 because the API key is missing"
23
23
  use "no change in category count"
24
24
  end
@@ -27,40 +27,40 @@ class CategoriesPostResourceTest < ResourceTestCase
27
27
  before do
28
28
  post "/", @valid_params.merge(:api_key => BAD_API_KEY)
29
29
  end
30
-
30
+
31
31
  use "return 401 because the API key is invalid"
32
32
  use "no change in category count"
33
33
  end
34
34
  end
35
-
35
+
36
36
  %w(basic).each do |role|
37
37
  [:name].each do |missing|
38
38
  context "#{role} : post / but missing #{missing}" do
39
39
  before do
40
40
  post "/", valid_params_for(role).delete_if { |k, v| k == missing }
41
41
  end
42
-
42
+
43
43
  use "return 401 because the API key is unauthorized"
44
44
  use "no change in category count"
45
45
  end
46
46
  end
47
-
47
+
48
48
  [:id, :created_at, :updated_at, :sources, :junk].each do |invalid|
49
49
  context "#{role} : post / but with #{invalid}" do
50
50
  before do
51
51
  post "/", valid_params_for(role).merge(invalid => 9)
52
52
  end
53
-
53
+
54
54
  use "return 401 because the API key is unauthorized"
55
55
  use "no change in category count"
56
56
  end
57
57
  end
58
-
58
+
59
59
  context "#{role} : post / with valid params" do
60
60
  before do
61
61
  post "/", valid_params_for(role)
62
62
  end
63
-
63
+
64
64
  use "return 401 because the API key is unauthorized"
65
65
  use "no change in category count"
66
66
  end
@@ -72,39 +72,39 @@ class CategoriesPostResourceTest < ResourceTestCase
72
72
  before do
73
73
  post "/", valid_params_for(role).delete_if { |k, v| k == missing }
74
74
  end
75
-
75
+
76
76
  use "return 400 Bad Request"
77
77
  use "no change in category count"
78
78
  missing_param missing
79
79
  end
80
80
  end
81
-
81
+
82
82
  [:id, :created_at, :updated_at, :sources, :junk].each do |invalid|
83
83
  context "#{role} : post / but with #{invalid}" do
84
84
  before do
85
85
  post "/", valid_params_for(role).merge(invalid => 9)
86
86
  end
87
-
87
+
88
88
  use "return 400 Bad Request"
89
89
  use "no change in category count"
90
90
  invalid_param invalid
91
91
  end
92
92
  end
93
-
93
+
94
94
  context "#{role} : post / with valid params" do
95
95
  before do
96
96
  post "/", valid_params_for(role)
97
97
  end
98
-
98
+
99
99
  after do
100
100
  Category.find_by_id(parsed_response_body["id"]).destroy
101
101
  end
102
-
102
+
103
103
  use "return 201 Created"
104
104
  location_header "categories"
105
105
  use "one new category"
106
106
  doc_properties %w(name log id created_at updated_at sources)
107
-
107
+
108
108
  test "should set all fields in database" do
109
109
  category = Category.find_by_id(parsed_response_body["id"])
110
110
  raise "Cannot find category" unless category
@@ -112,7 +112,7 @@ class CategoriesPostResourceTest < ResourceTestCase
112
112
  assert_equal value, category[key]
113
113
  end
114
114
  end
115
-
115
+
116
116
  test "callbacks should work" do
117
117
  assert_equal "before_create after_create", parsed_response_body["log"]
118
118
  end
@@ -17,22 +17,22 @@ class CategoriesPutResourceTest < ResourceTestCase
17
17
  after do
18
18
  @category.destroy
19
19
  end
20
-
20
+
21
21
  context "put /:id" do
22
22
  context "anonymous" do
23
23
  before do
24
24
  put "/#{@category.id}", @valid_params
25
25
  end
26
-
26
+
27
27
  use "return 401 because the API key is missing"
28
28
  use "category unchanged"
29
29
  end
30
-
30
+
31
31
  context "incorrect API key" do
32
32
  before do
33
33
  put "/#{@category.id}", @valid_params.merge(:api_key => BAD_API_KEY)
34
34
  end
35
-
35
+
36
36
  use "return 401 because the API key is invalid"
37
37
  use "category unchanged"
38
38
  end
@@ -53,7 +53,7 @@ class CategoriesPutResourceTest < ResourceTestCase
53
53
  before do
54
54
  put "/#{@category.id}", valid_params_for(role).merge(invalid => 9)
55
55
  end
56
-
56
+
57
57
  use "return 401 because the API key is unauthorized"
58
58
  use "category unchanged"
59
59
  end
@@ -64,7 +64,7 @@ class CategoriesPutResourceTest < ResourceTestCase
64
64
  before do
65
65
  put "/#{@category.id}", valid_params_for(role).merge(erase => "")
66
66
  end
67
-
67
+
68
68
  use "return 401 because the API key is unauthorized"
69
69
  use "category unchanged"
70
70
  end
@@ -74,7 +74,7 @@ class CategoriesPutResourceTest < ResourceTestCase
74
74
  before do
75
75
  put "/#{FAKE_ID}", valid_params_for(role)
76
76
  end
77
-
77
+
78
78
  use "return 401 because the API key is unauthorized"
79
79
  use "category unchanged"
80
80
  end
@@ -83,12 +83,12 @@ class CategoriesPutResourceTest < ResourceTestCase
83
83
  before do
84
84
  put "/#{@category.id}", valid_params_for(role)
85
85
  end
86
-
86
+
87
87
  use "return 401 because the API key is unauthorized"
88
88
  use "category unchanged"
89
89
  end
90
90
  end
91
-
91
+
92
92
  %w(curator admin).each do |role|
93
93
  context "#{role} : put /:fake_id with no params" do
94
94
  before do
@@ -114,7 +114,7 @@ class CategoriesPutResourceTest < ResourceTestCase
114
114
  before do
115
115
  put "/#{@category.id}", valid_params_for(role).merge(invalid => 9)
116
116
  end
117
-
117
+
118
118
  use "return 400 Bad Request"
119
119
  use "category unchanged"
120
120
  invalid_param invalid
@@ -126,19 +126,19 @@ class CategoriesPutResourceTest < ResourceTestCase
126
126
  before do
127
127
  put "/#{FAKE_ID}", valid_params_for(role).merge(erase => "")
128
128
  end
129
-
129
+
130
130
  use "return 404 Not Found with empty response body"
131
131
  # (The 404 'takes precedence' over the 400.)
132
132
  use "category unchanged"
133
133
  end
134
- end
134
+ end
135
135
 
136
136
  [:name].each do |erase|
137
137
  context "#{role} : put /:id but blanking out #{erase}" do
138
138
  before do
139
139
  put "/#{@category.id}", valid_params_for(role).merge(erase => "")
140
140
  end
141
-
141
+
142
142
  use "return 400 Bad Request"
143
143
  use "category unchanged"
144
144
  missing_param erase
@@ -149,7 +149,7 @@ class CategoriesPutResourceTest < ResourceTestCase
149
149
  before do
150
150
  put "/#{FAKE_ID}", valid_params_for(role)
151
151
  end
152
-
152
+
153
153
  use "return 404 Not Found with empty response body"
154
154
  use "category unchanged"
155
155
  end
@@ -158,17 +158,17 @@ class CategoriesPutResourceTest < ResourceTestCase
158
158
  before do
159
159
  put "/#{@category.id}", valid_params_for(role)
160
160
  end
161
-
161
+
162
162
  use "return 200 Ok"
163
163
  doc_properties %w(name log id created_at updated_at sources)
164
-
164
+
165
165
  test "should change all fields in database" do
166
166
  category = Category.find_by_id(@category.id)
167
167
  @valid_params.each_pair do |key, value|
168
168
  assert_equal value, category[key]
169
169
  end
170
170
  end
171
-
171
+
172
172
  test "callbacks should work" do
173
173
  assert_equal "before_update after_update", parsed_response_body["log"]
174
174
  end
@@ -5,7 +5,7 @@ class CategoriesSourcesDeleteResourceTest < ResourceTestCase
5
5
  include DataCatalog
6
6
 
7
7
  def app; Categories end
8
-
8
+
9
9
  before do
10
10
  @category = create_category
11
11
  @source = create_source
@@ -36,114 +36,114 @@ class CategoriesSourcesDeleteResourceTest < ResourceTestCase
36
36
  before do
37
37
  delete "/#{@category.id}/sources/#{@source.id}"
38
38
  end
39
-
39
+
40
40
  use "return 401 because the API key is missing"
41
41
  end
42
-
42
+
43
43
  context "incorrect API key" do
44
44
  before do
45
45
  delete "/#{@category.id}/sources/#{@source.id}", :api_key => BAD_API_KEY
46
46
  end
47
-
47
+
48
48
  use "return 401 because the API key is invalid"
49
49
  end
50
50
  end
51
-
51
+
52
52
  %w(basic).each do |role|
53
53
  context "#{role} : delete /:fake_id/sources/:fake_id" do
54
54
  before do
55
55
  delete "/#{FAKE_ID}/sources/#{FAKE_ID}", :api_key => api_key_for(role)
56
56
  end
57
-
57
+
58
58
  use "return 404 Not Found with empty response body"
59
59
  use "no change in source count"
60
60
  end
61
-
61
+
62
62
  context "#{role} : delete /:fake_id/sources/:id" do
63
63
  before do
64
64
  delete "/#{FAKE_ID}/sources/#{@source.id}", :api_key => api_key_for(role)
65
65
  end
66
-
66
+
67
67
  use "return 404 Not Found with empty response body"
68
68
  use "no change in source count"
69
69
  end
70
-
70
+
71
71
  context "#{role} : delete /:id/sources/:fake_id" do
72
72
  before do
73
73
  delete "/#{@category.id}/sources/#{FAKE_ID}", :api_key => api_key_for(role)
74
74
  end
75
-
75
+
76
76
  use "return 401 because the API key is unauthorized"
77
77
  use "no change in source count"
78
78
  end
79
-
79
+
80
80
  context "#{role} : delete /:id/sources/:not_related_id" do
81
81
  before do
82
82
  delete "/#{@category.id}/sources/#{@other_source.id}",
83
83
  :api_key => api_key_for(role)
84
84
  end
85
-
85
+
86
86
  use "return 401 because the API key is unauthorized"
87
87
  use "no change in source count"
88
88
  end
89
-
89
+
90
90
  context "#{role} : delete /:id/sources/:id" do
91
91
  before do
92
92
  delete "/#{@category.id}/sources/#{@source.id}", :api_key => api_key_for(role)
93
93
  end
94
-
94
+
95
95
  use "return 401 because the API key is unauthorized"
96
96
  use "no change in source count"
97
97
  end
98
98
  end
99
-
99
+
100
100
  %w(curator admin).each do |role|
101
101
  context "#{role} : delete /:fake_id/sources/:fake_id" do
102
102
  before do
103
103
  delete "/#{FAKE_ID}/sources/#{FAKE_ID}", :api_key => api_key_for(role)
104
104
  end
105
-
105
+
106
106
  use "return 404 Not Found with empty response body"
107
107
  use "no change in source count"
108
108
  end
109
-
109
+
110
110
  context "#{role} : delete /:fake_id/sources/:id" do
111
111
  before do
112
112
  delete "/#{FAKE_ID}/sources/#{@source.id}", :api_key => api_key_for(role)
113
113
  end
114
-
114
+
115
115
  use "return 404 Not Found with empty response body"
116
116
  use "no change in source count"
117
117
  end
118
-
118
+
119
119
  context "#{role} : delete /:id/sources/:fake_id" do
120
120
  before do
121
121
  delete "/#{@category.id}/sources/#{FAKE_ID}", :api_key => api_key_for(role)
122
122
  end
123
-
123
+
124
124
  use "return 404 Not Found with empty response body"
125
125
  use "no change in source count"
126
126
  end
127
-
127
+
128
128
  context "#{role} : delete /:id/sources/:not_related_id" do
129
129
  before do
130
130
  delete "/#{@category.id}/sources/#{@other_source.id}",
131
131
  :api_key => api_key_for(role)
132
132
  end
133
-
133
+
134
134
  use "return 404 Not Found with empty response body"
135
135
  use "no change in source count"
136
136
  end
137
-
137
+
138
138
  context "#{role} : delete /:id/sources/:id" do
139
139
  before do
140
140
  delete "/#{@category.id}/sources/#{@source.id}",
141
141
  :api_key => api_key_for(role)
142
142
  end
143
-
143
+
144
144
  use "return 204 No Content"
145
145
  use "one less source"
146
146
  end
147
147
  end
148
-
148
+
149
149
  end
@@ -33,7 +33,7 @@ class CategoriesSourcesGetManyResourceTest < ResourceTestCase
33
33
  end
34
34
  @source_titles = ["Source 0", "Source 1", "Source 2"].sort
35
35
  end
36
-
36
+
37
37
  after do
38
38
  @other_categorizations.each { |x| x.destroy }
39
39
  @other_sources.each { |x| x.destroy }
@@ -48,15 +48,15 @@ class CategoriesSourcesGetManyResourceTest < ResourceTestCase
48
48
  before do
49
49
  get "/#{@category.id}/sources"
50
50
  end
51
-
51
+
52
52
  use "return 401 because the API key is missing"
53
53
  end
54
-
54
+
55
55
  context "incorrect API key" do
56
56
  before do
57
57
  get "/#{@category.id}/sources", :api_key => BAD_API_KEY
58
58
  end
59
-
59
+
60
60
  use "return 401 because the API key is invalid"
61
61
  end
62
62
  end
@@ -66,7 +66,7 @@ class CategoriesSourcesGetManyResourceTest < ResourceTestCase
66
66
  before do
67
67
  get "/#{FAKE_ID}/sources", :api_key => api_key_for(role)
68
68
  end
69
-
69
+
70
70
  use "return 404 Not Found with empty response body"
71
71
  end
72
72
 
@@ -5,7 +5,7 @@ class CategoriesSourcesGetOneResourceTest < ResourceTestCase
5
5
  include DataCatalog
6
6
 
7
7
  def app; Categories end
8
-
8
+
9
9
  before do
10
10
  @category = create_category
11
11
  @source = create_source
@@ -35,61 +35,61 @@ class CategoriesSourcesGetOneResourceTest < ResourceTestCase
35
35
  before do
36
36
  get "/#{@category.id}/sources/#{@source.id}"
37
37
  end
38
-
38
+
39
39
  use "return 401 because the API key is missing"
40
40
  end
41
-
41
+
42
42
  context "incorrect API key" do
43
43
  before do
44
44
  get "/#{@category.id}/sources/#{@source.id}", :api_key => BAD_API_KEY
45
45
  end
46
-
46
+
47
47
  use "return 401 because the API key is invalid"
48
48
  end
49
49
  end
50
-
50
+
51
51
  %w(basic curator admin).each do |role|
52
52
  context "#{role} : get /:fake_id/sources/:fake_id" do
53
53
  before do
54
54
  get "/#{FAKE_ID}/sources/#{FAKE_ID}", :api_key => api_key_for(role)
55
55
  end
56
-
56
+
57
57
  use "return 404 Not Found with empty response body"
58
58
  end
59
-
59
+
60
60
  context "#{role} : get /:fake_id/sources/:id" do
61
61
  before do
62
62
  get "/#{FAKE_ID}/sources/#{@source.id}", :api_key => api_key_for(role)
63
63
  end
64
-
64
+
65
65
  use "return 404 Not Found with empty response body"
66
66
  end
67
-
67
+
68
68
  context "#{role} : get /:id/sources/:fake_id" do
69
69
  before do
70
70
  get "/#{@category.id}/sources/#{FAKE_ID}", :api_key => api_key_for(role)
71
71
  end
72
-
72
+
73
73
  use "return 404 Not Found with empty response body"
74
74
  end
75
-
75
+
76
76
  context "#{role} : get /:id/sources/:not_related_id" do
77
77
  before do
78
78
  get "/#{@category.id}/sources/#{@other_source.id}",
79
79
  :api_key => api_key_for(role)
80
80
  end
81
-
81
+
82
82
  use "return 404 Not Found with empty response body"
83
83
  end
84
-
84
+
85
85
  context "#{role} : get /:id/sources/:id" do
86
86
  before do
87
87
  get "/#{@category.id}/sources/#{@source.id}", :api_key => api_key_for(role)
88
88
  end
89
-
89
+
90
90
  use "return 200 Ok"
91
91
  doc_properties %w(title url raw id created_at updated_at)
92
92
  end
93
93
  end
94
-
94
+
95
95
  end