Commit f8dfd63b6d5dce44e02d2ced8ebf4cfa5f4f7fcd

Authored by Antonio Terceiro
2 parents f9ce8de3 80800e40

Merge branch 'privacy_fix' into 'master'

Article privacy fixies

* Fix article privacy to not consider invisible profiles
* Change feed published method to consider it's parent privacy
* Closes #148

See merge request !723
app/models/article.rb
@@ -29,9 +29,14 @@ class Article < ActiveRecord::Base @@ -29,9 +29,14 @@ class Article < ActiveRecord::Base
29 def initialize(*params) 29 def initialize(*params)
30 super 30 super
31 31
32 - if !params.blank? && params.first.has_key?(:profile) && !params.first[:profile].blank?  
33 - profile = params.first[:profile]  
34 - self.published = false unless profile.public? 32 + if !params.blank?
  33 + if params.first.has_key?(:profile) && !params.first[:profile].blank?
  34 + profile = params.first[:profile]
  35 + self.published = false unless profile.public_profile
  36 + end
  37 +
  38 + self.published = params.first["published"] if params.first.has_key?("published")
  39 + self.published = params.first[:published] if params.first.has_key?(:published)
35 end 40 end
36 41
37 end 42 end
app/models/rss_feed.rb
@@ -14,7 +14,7 @@ class RssFeed < Article @@ -14,7 +14,7 @@ class RssFeed < Article
14 14
15 # store setting in body 15 # store setting in body
16 serialize :body, Hash 16 serialize :body, Hash
17 - 17 +
18 def body 18 def body
19 self[:body] ||= {} 19 self[:body] ||= {}
20 end 20 end
@@ -89,6 +89,14 @@ class RssFeed < Article @@ -89,6 +89,14 @@ class RssFeed < Article
89 ) 89 )
90 end 90 end
91 91
  92 + def published?
  93 + if self.parent
  94 + self.parent.published?
  95 + else
  96 + self.published
  97 + end
  98 + end
  99 +
92 def self.short_description 100 def self.short_description
93 _('RSS Feed') 101 _('RSS Feed')
94 end 102 end
test/unit/community_test.rb
@@ -39,7 +39,9 @@ class CommunityTest < ActiveSupport::TestCase @@ -39,7 +39,9 @@ class CommunityTest < ActiveSupport::TestCase
39 community = create(Community, :environment => Environment.default, :name => 'my new community') 39 community = create(Community, :environment => Environment.default, :name => 'my new community')
40 40
41 assert_kind_of Blog, community.articles.find_by_path(blog.path) 41 assert_kind_of Blog, community.articles.find_by_path(blog.path)
  42 + assert community.articles.find_by_path(blog.path).published?
42 assert_kind_of RssFeed, community.articles.find_by_path(blog.feed.path) 43 assert_kind_of RssFeed, community.articles.find_by_path(blog.feed.path)
  44 + assert community.articles.find_by_path(blog.feed.path).published?
43 end 45 end
44 46
45 should 'have contact_person' do 47 should 'have contact_person' do
test/unit/person_test.rb
@@ -181,7 +181,9 @@ class PersonTest < ActiveSupport::TestCase @@ -181,7 +181,9 @@ class PersonTest < ActiveSupport::TestCase
181 person = create(User).person 181 person = create(User).person
182 182
183 assert_kind_of Blog, person.articles.find_by_path(blog.path) 183 assert_kind_of Blog, person.articles.find_by_path(blog.path)
  184 + assert person.articles.find_by_path(blog.path).published?
184 assert_kind_of RssFeed, person.articles.find_by_path(blog.feed.path) 185 assert_kind_of RssFeed, person.articles.find_by_path(blog.feed.path)
  186 + assert person.articles.find_by_path(blog.feed.path).published?
185 end 187 end
186 188
187 should 'create a default set of blocks' do 189 should 'create a default set of blocks' do
test/unit/rss_feed_test.rb
@@ -262,4 +262,31 @@ class RssFeedTest < ActiveSupport::TestCase @@ -262,4 +262,31 @@ class RssFeedTest < ActiveSupport::TestCase
262 assert_equal [es_post], blog.feed.fetch_articles 262 assert_equal [es_post], blog.feed.fetch_articles
263 end 263 end
264 264
  265 + should 'a feed have the same privacy of its parent' do
  266 + profile = create_user('testuser').person
  267 + blog = create(Blog, :name => 'blog-test', :profile => profile)
  268 + feed = blog.feed
  269 +
  270 + assert blog.published?
  271 + assert feed.published?
  272 +
  273 + feed.published = false
  274 + feed.save
  275 +
  276 + assert blog.published?
  277 + assert feed.published?
  278 +
  279 + blog.published = false
  280 + blog.save
  281 + feed.reload
  282 +
  283 + assert !blog.published?
  284 + assert !feed.published?
  285 +
  286 + feed.published = true
  287 + feed.save
  288 +
  289 + assert !blog.published?
  290 + assert !feed.published?
  291 + end
265 end 292 end