sinatra_resource 0.4.7 → 0.4.8

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.7
1
+ 0.4.8
@@ -18,7 +18,7 @@ module DataCatalog
18
18
 
19
19
  property :title
20
20
  property :url
21
- property :raw, :w => :admin
21
+ property :raw, :w => :admin, :hide_by_default => true
22
22
 
23
23
  property :categories do |source|
24
24
  source.categorizations.map do |categorization|
@@ -59,7 +59,7 @@ class SourcesGetManyFilterResourceTest < ResourceTestCase
59
59
  end
60
60
 
61
61
  test "members should only have correct attributes" do
62
- correct = %w(title url raw categories id created_at updated_at)
62
+ correct = %w(title url categories id created_at updated_at)
63
63
  @members.each do |member|
64
64
  assert_properties(correct, member)
65
65
  end
@@ -92,7 +92,7 @@ class SourcesGetManyFilterResourceTest < ResourceTestCase
92
92
  end
93
93
 
94
94
  test "members should only have correct attributes" do
95
- correct = %w(title url raw categories id created_at updated_at)
95
+ correct = %w(title url categories id created_at updated_at)
96
96
  @members.each do |member|
97
97
  assert_properties(correct, member)
98
98
  end
@@ -88,7 +88,7 @@ class SourcesGetManySearchResourceTest < ResourceTestCase
88
88
  end
89
89
 
90
90
  test "members should only have correct attributes" do
91
- correct = %w(title url raw categories id created_at updated_at)
91
+ correct = %w(title url categories id created_at updated_at)
92
92
  @members.each do |member|
93
93
  assert_properties(correct, member)
94
94
  end
@@ -55,7 +55,7 @@ class SourcesGetManyResourceTest < ResourceTestCase
55
55
  end
56
56
 
57
57
  test "members should only have correct attributes" do
58
- correct = %w(title url raw categories id created_at updated_at)
58
+ correct = %w(title url categories id created_at updated_at)
59
59
  @members.each do |member|
60
60
  assert_properties(correct, member)
61
61
  end
@@ -50,15 +50,15 @@ class SourcesGetOneResourceTest < ResourceTestCase
50
50
  )
51
51
  get "/#{@source.id}", :api_key => api_key_for(role)
52
52
  end
53
-
53
+
54
54
  after do
55
55
  @category.destroy
56
56
  @categorization.destroy
57
57
  end
58
-
58
+
59
59
  use "return 200 Ok"
60
- doc_properties %w(title url raw categories id created_at updated_at)
61
-
60
+ doc_properties %w(title url categories id created_at updated_at)
61
+
62
62
  test "body should have correct categories" do
63
63
  expected = [
64
64
  {
@@ -70,6 +70,15 @@ class SourcesGetOneResourceTest < ResourceTestCase
70
70
  assert_equal expected, parsed_response_body["categories"]
71
71
  end
72
72
  end
73
+
74
+ context "#{role} : get /:id?show=all" do
75
+ before do
76
+ get "/#{@source.id}?show=all", :api_key => api_key_for(role)
77
+ end
78
+
79
+ use "return 200 Ok"
80
+ doc_properties %w(title url raw categories id created_at updated_at)
81
+ end
73
82
  end
74
83
 
75
84
  end
@@ -105,7 +105,7 @@ class SourcesPostResourceTest < ResourceTestCase
105
105
  use "return 201 Created"
106
106
  location_header "sources"
107
107
  use "one new source"
108
- doc_properties %w(title url raw id created_at updated_at categories)
108
+ doc_properties %w(title url id created_at updated_at categories)
109
109
 
110
110
  test "should set all fields in database" do
111
111
  source = Source.find_by_id(parsed_response_body["id"])
@@ -156,7 +156,7 @@ class SourcesPostResourceTest < ResourceTestCase
156
156
  use "return 201 Created"
157
157
  location_header "sources"
158
158
  use "one new source"
159
- doc_properties %w(title url raw id created_at updated_at categories)
159
+ doc_properties %w(title url id created_at updated_at categories)
160
160
 
161
161
  test "should set all fields in database" do
162
162
  source = Source.find_by_id(parsed_response_body["id"])
@@ -137,7 +137,7 @@ class SourcesPutResourceTest < ResourceTestCase
137
137
  end
138
138
 
139
139
  use "return 200 Ok"
140
- doc_properties %w(title url raw id created_at updated_at categories)
140
+ doc_properties %w(title url id created_at updated_at categories)
141
141
 
142
142
  test "should change correct fields in database" do
143
143
  source = Source.find_by_id(@source.id)
@@ -164,7 +164,7 @@ class SourcesPutResourceTest < ResourceTestCase
164
164
  end
165
165
 
166
166
  use "return 200 Ok"
167
- doc_properties %w(title url raw id created_at updated_at categories)
167
+ doc_properties %w(title url id created_at updated_at categories)
168
168
 
169
169
  test "should change correct fields in database" do
170
170
  source = Source.find_by_id(@source.id)
@@ -242,7 +242,7 @@ class SourcesPutResourceTest < ResourceTestCase
242
242
  end
243
243
 
244
244
  use "return 200 Ok"
245
- doc_properties %w(title url raw id created_at updated_at categories)
245
+ doc_properties %w(title url id created_at updated_at categories)
246
246
 
247
247
  test "should change correct fields in database" do
248
248
  source = Source.find_by_id(@source.id)
@@ -269,7 +269,7 @@ class SourcesPutResourceTest < ResourceTestCase
269
269
  end
270
270
 
271
271
  use "return 200 Ok"
272
- doc_properties %w(title url raw id created_at updated_at categories)
272
+ doc_properties %w(title url id created_at updated_at categories)
273
273
 
274
274
  test "should change all fields in database" do
275
275
  source = Source.find_by_id(@source.id)
@@ -17,7 +17,12 @@ module SinatraResource
17
17
  def build_resource(role, document, resource_config)
18
18
  resource = {}
19
19
  resource_config[:properties].each_pair do |property, hash|
20
- if authorized?(:read, role, resource_config, property)
20
+ hide = if params[SHOW_KEY] == "all"
21
+ false
22
+ else
23
+ resource_config[:properties][property][:hide_by_default]
24
+ end
25
+ if authorized?(:read, role, resource_config, property) && !hide
21
26
  resource[property.to_s] = value(property, document, hash)
22
27
  end
23
28
  end
@@ -388,7 +393,12 @@ module SinatraResource
388
393
  error 400, convert(body_for(:non_empty_params))
389
394
  end
390
395
  when :read
391
- unless params.empty?
396
+ p = params.reject { |k, v| k == SHOW_KEY }
397
+ unless [nil, "all"].include?(params[SHOW_KEY])
398
+ error 400, convert(body_for(:invalid_params,
399
+ { SHOW_KEY => params[SHOW_KEY] }))
400
+ end
401
+ unless p.empty?
392
402
  error 400, convert(body_for(:non_empty_params))
393
403
  end
394
404
  when :create
@@ -422,7 +432,7 @@ module SinatraResource
422
432
  def params_check_action_and_role(action, role, resource_config)
423
433
  invalid = []
424
434
  params.each_pair do |property, value|
425
- next if [FILTER_KEY, SEARCH_KEY].include?(property)
435
+ next if [FILTER_KEY, SEARCH_KEY, SHOW_KEY].include?(property)
426
436
  if !authorized?(action, role, resource_config, property.intern)
427
437
  invalid << property
428
438
  end
data/lib/builder.rb CHANGED
@@ -4,6 +4,7 @@ module SinatraResource
4
4
 
5
5
  FILTER_KEY = "filter"
6
6
  SEARCH_KEY = "search"
7
+ SHOW_KEY = "show"
7
8
 
8
9
  ITEMS_PER_PAGE = 20
9
10
 
data/lib/resource.rb CHANGED
@@ -142,7 +142,9 @@ module SinatraResource
142
142
  # @param [Hash] access_rules
143
143
  #
144
144
  # @return [undefined]
145
- def property(name, access_rules={}, &block)
145
+ def property(name, options={}, &block)
146
+ hide = options.delete(:hide_by_default) || false
147
+ access_rules = options
146
148
  if @resource_config[:properties][name]
147
149
  raise DefinitionError, "property #{name.inspect} already declared in #{self}"
148
150
  end
@@ -160,6 +162,7 @@ module SinatraResource
160
162
  access_rules.each_pair do |kind, role|
161
163
  @resource_config[:roles].validate_role(role)
162
164
  @resource_config[:properties][name][kind] = role
165
+ @resource_config[:properties][name][:hide_by_default] = hide
163
166
  end
164
167
  end
165
168
 
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{sinatra_resource}
8
- s.version = "0.4.7"
8
+ s.version = "0.4.8"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["David James"]
12
- s.date = %q{2009-12-15}
12
+ s.date = %q{2010-01-14}
13
13
  s.description = %q{A DSL for creating RESTful actions with Sinatra and MongoMapper. It embraces the Resource Oriented Architecture as explained by Leonard Richardson and Sam Ruby.}
14
14
  s.email = %q{djames@sunlightfoundation.com}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra_resource
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.7
4
+ version: 0.4.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - David James
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-15 00:00:00 -05:00
12
+ date: 2010-01-14 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency