Commit 72691c97acc950c0d00076050d7625a48413dfea
Exists in
master
and in
29 other branches
Merge branch 'stable'
Showing
21 changed files
with
233 additions
and
151 deletions
Show diff stats
app/controllers/public/content_viewer_controller.rb
@@ -26,11 +26,6 @@ class ContentViewerController < ApplicationController | @@ -26,11 +26,6 @@ class ContentViewerController < ApplicationController | ||
26 | end | 26 | end |
27 | end | 27 | end |
28 | 28 | ||
29 | - # only show unpublished articles to those who can edit then | ||
30 | - if @page && !@page.published && !@page.allow_post_content?(user) | ||
31 | - @page = nil | ||
32 | - end | ||
33 | - | ||
34 | # page not found, give error | 29 | # page not found, give error |
35 | if @page.nil? | 30 | if @page.nil? |
36 | render_not_found(@path) | 31 | render_not_found(@path) |
app/helpers/application_helper.rb
@@ -336,7 +336,7 @@ module ApplicationHelper | @@ -336,7 +336,7 @@ module ApplicationHelper | ||
336 | elsif ENV['RAILS_ENV'] == 'development' && params[:theme] | 336 | elsif ENV['RAILS_ENV'] == 'development' && params[:theme] |
337 | params[:theme] | 337 | params[:theme] |
338 | else | 338 | else |
339 | - if profile | 339 | + if profile && !profile.theme.nil? |
340 | profile.theme | 340 | profile.theme |
341 | elsif environment | 341 | elsif environment |
342 | environment.theme | 342 | environment.theme |
app/helpers/folder_helper.rb
1 | module FolderHelper | 1 | module FolderHelper |
2 | 2 | ||
3 | - def list_articles(articles, recursive = false) | ||
4 | - content_tag( | ||
5 | - 'table', | ||
6 | - content_tag('tr', content_tag('th', _('Title')) + content_tag('th', _('Last update'))) + | ||
7 | - articles.select { |item| item.public? }.map {|item| display_article_in_listing(item, recursive, 0)}.join('') | ||
8 | - ) | 3 | + def list_articles(articles, user, recursive = false) |
4 | + if !articles.blank? | ||
5 | + content_tag( | ||
6 | + 'table', | ||
7 | + content_tag('tr', content_tag('th', _('Title')) + content_tag('th', _('Last update'))) + | ||
8 | + articles.select { |item| item.display_to?(user)}.map {|item| display_article_in_listing(item, recursive, 0)}.join('') | ||
9 | + ) | ||
10 | + else | ||
11 | + content_tag('em', _('(empty folder)')) | ||
12 | + end | ||
9 | end | 13 | end |
10 | 14 | ||
11 | def display_article_in_listing(article, recursive = false, level = 0) | 15 | def display_article_in_listing(article, recursive = false, level = 0) |
app/models/article.rb
@@ -84,13 +84,6 @@ class Article < ActiveRecord::Base | @@ -84,13 +84,6 @@ class Article < ActiveRecord::Base | ||
84 | pending_categorizations.clear | 84 | pending_categorizations.clear |
85 | end | 85 | end |
86 | 86 | ||
87 | - before_save do |article| | ||
88 | - if article.parent | ||
89 | - article.public_article = article.parent.public_article | ||
90 | - end | ||
91 | - true | ||
92 | - end | ||
93 | - | ||
94 | acts_as_taggable | 87 | acts_as_taggable |
95 | N_('Tag list') | 88 | N_('Tag list') |
96 | 89 | ||
@@ -123,11 +116,10 @@ class Article < ActiveRecord::Base | @@ -123,11 +116,10 @@ class Article < ActiveRecord::Base | ||
123 | options = { :limit => limit, | 116 | options = { :limit => limit, |
124 | :conditions => [ | 117 | :conditions => [ |
125 | "advertise = ? AND | 118 | "advertise = ? AND |
126 | - public_article = ? AND | ||
127 | published = ? AND | 119 | published = ? AND |
128 | profiles.visible = ? AND | 120 | profiles.visible = ? AND |
129 | profiles.public_profile = ? AND | 121 | profiles.public_profile = ? AND |
130 | - ((articles.type != ? and articles.type != ? and articles.type != ?) OR articles.type is NULL)", true, true, true, true, true, 'UploadedFile', 'RssFeed', 'Blog' | 122 | + ((articles.type != ? and articles.type != ? and articles.type != ?) OR articles.type is NULL)", true, true, true, true, 'UploadedFile', 'RssFeed', 'Blog' |
131 | ], | 123 | ], |
132 | :include => 'profile', | 124 | :include => 'profile', |
133 | :order => 'articles.published_at desc, articles.id desc' | 125 | :order => 'articles.published_at desc, articles.id desc' |
@@ -221,16 +213,32 @@ class Article < ActiveRecord::Base | @@ -221,16 +213,32 @@ class Article < ActiveRecord::Base | ||
221 | false | 213 | false |
222 | end | 214 | end |
223 | 215 | ||
216 | + def published? | ||
217 | + if self.published | ||
218 | + if self.parent && !self.parent.published? | ||
219 | + return false | ||
220 | + end | ||
221 | + true | ||
222 | + else | ||
223 | + false | ||
224 | + end | ||
225 | + end | ||
226 | + | ||
224 | named_scope :folders, :conditions => { :type => ['Folder', 'Blog'] } | 227 | named_scope :folders, :conditions => { :type => ['Folder', 'Blog'] } |
225 | 228 | ||
229 | + def display_unpublished_article_to?(user) | ||
230 | + self.author == user || allow_view_private_content?(user) || user == self.profile || | ||
231 | + user.is_admin?(self.profile.environment) || user.is_admin?(self.profile) | ||
232 | + end | ||
233 | + | ||
226 | def display_to?(user) | 234 | def display_to?(user) |
227 | - if self.public_article | 235 | + if self.published? |
228 | self.profile.display_info_to?(user) | 236 | self.profile.display_info_to?(user) |
229 | else | 237 | else |
230 | if user.nil? | 238 | if user.nil? |
231 | false | 239 | false |
232 | else | 240 | else |
233 | - (user == self.profile) || user.has_permission?('view_private_content', self.profile) | 241 | + self.display_unpublished_article_to?(user) |
234 | end | 242 | end |
235 | end | 243 | end |
236 | end | 244 | end |
@@ -243,6 +251,10 @@ class Article < ActiveRecord::Base | @@ -243,6 +251,10 @@ class Article < ActiveRecord::Base | ||
243 | user && user.has_permission?('publish_content', profile) | 251 | user && user.has_permission?('publish_content', profile) |
244 | end | 252 | end |
245 | 253 | ||
254 | + def allow_view_private_content?(user = nil) | ||
255 | + user && user.has_permission?('view_private_content', profile) | ||
256 | + end | ||
257 | + | ||
246 | def comments_updated | 258 | def comments_updated |
247 | ferret_update | 259 | ferret_update |
248 | end | 260 | end |
@@ -252,18 +264,31 @@ class Article < ActiveRecord::Base | @@ -252,18 +264,31 @@ class Article < ActiveRecord::Base | ||
252 | end | 264 | end |
253 | 265 | ||
254 | def public? | 266 | def public? |
255 | - profile.visible? && profile.public? && public_article | 267 | + profile.visible? && profile.public? && published? |
256 | end | 268 | end |
257 | 269 | ||
270 | + | ||
258 | def copy(options) | 271 | def copy(options) |
259 | - attrs = attributes.reject! { |key, value| article_attr_blacklist.include?(key) } | 272 | + attrs = attributes.reject! { |key, value| ATTRIBUTES_NOT_COPIED.include?(key.to_sym) } |
260 | attrs.merge!(options) | 273 | attrs.merge!(options) |
261 | self.class.create(attrs) | 274 | self.class.create(attrs) |
262 | end | 275 | end |
263 | 276 | ||
264 | - def article_attr_blacklist | ||
265 | - ['id', 'profile_id', 'parent_id', 'slug', 'path', 'updated_at', 'created_at', 'last_changed_by_id', 'version', 'lock_version', 'type', 'children_count', 'comments_count', 'hits'] | ||
266 | - end | 277 | + ATTRIBUTES_NOT_COPIED = [ |
278 | + :id, | ||
279 | + :profile_id, | ||
280 | + :parent_id, | ||
281 | + :path, | ||
282 | + :updated_at, | ||
283 | + :created_at, | ||
284 | + :last_changed_by_id, | ||
285 | + :version, | ||
286 | + :lock_version, | ||
287 | + :type, | ||
288 | + :children_count, | ||
289 | + :comments_count, | ||
290 | + :hits, | ||
291 | + ] | ||
267 | 292 | ||
268 | def self.find_by_old_path(old_path) | 293 | def self.find_by_old_path(old_path) |
269 | find(:first, :include => :versions, :conditions => ['article_versions.path = ?', old_path], :order => 'article_versions.id desc') | 294 | find(:first, :include => :versions, :conditions => ['article_versions.path = ?', old_path], :order => 'article_versions.id desc') |
app/models/folder.rb
@@ -4,6 +4,8 @@ class Folder < Article | @@ -4,6 +4,8 @@ class Folder < Article | ||
4 | 4 | ||
5 | settings_items :view_as, :type => :string, :default => 'folder' | 5 | settings_items :view_as, :type => :string, :default => 'folder' |
6 | 6 | ||
7 | + xss_terminate :only => [ :body ], :with => 'white_list' | ||
8 | + | ||
7 | def self.select_views | 9 | def self.select_views |
8 | [[_('Folder'), 'folder'], [_('Image gallery'), 'image_gallery']] | 10 | [[_('Folder'), 'folder'], [_('Image gallery'), 'image_gallery']] |
9 | end | 11 | end |
@@ -39,7 +41,7 @@ class Folder < Article | @@ -39,7 +41,7 @@ class Folder < Article | ||
39 | end | 41 | end |
40 | 42 | ||
41 | def folder | 43 | def folder |
42 | - content_tag('div', body) + tag('hr') + (children.empty? ? content_tag('em', _('(empty folder)')) : list_articles(children)) | 44 | + content_tag('div', body) + tag('hr') |
43 | end | 45 | end |
44 | 46 | ||
45 | def image_gallery | 47 | def image_gallery |
app/models/profile.rb
@@ -448,7 +448,7 @@ private :generate_url, :url_options | @@ -448,7 +448,7 @@ private :generate_url, :url_options | ||
448 | 448 | ||
449 | # a default private folder if public | 449 | # a default private folder if public |
450 | if self.public? | 450 | if self.public? |
451 | - folder = Folder.new(:name => _("Intranet"), :public_article => false) | 451 | + folder = Folder.new(:name => _("Intranet"), :published => false) |
452 | self.articles << folder | 452 | self.articles << folder |
453 | end | 453 | end |
454 | end | 454 | end |
@@ -588,10 +588,6 @@ private :generate_url, :url_options | @@ -588,10 +588,6 @@ private :generate_url, :url_options | ||
588 | end | 588 | end |
589 | end | 589 | end |
590 | 590 | ||
591 | - def theme | ||
592 | - self[:theme] || environment && environment.theme || 'default' | ||
593 | - end | ||
594 | - | ||
595 | def public? | 591 | def public? |
596 | visible && public_profile | 592 | visible && public_profile |
597 | end | 593 | end |
@@ -693,7 +689,7 @@ private :generate_url, :url_options | @@ -693,7 +689,7 @@ private :generate_url, :url_options | ||
693 | if user.nil? | 689 | if user.nil? |
694 | false | 690 | false |
695 | else | 691 | else |
696 | - (user == self) || (user.is_admin?(self.environment)) || (user.memberships.include?(self)) | 692 | + (user == self) || (user.is_admin?(self.environment)) || user.is_admin?(self) || user.memberships.include?(self) |
697 | end | 693 | end |
698 | end | 694 | end |
699 | end | 695 | end |
app/views/content_viewer/view_page.rhtml
@@ -81,6 +81,9 @@ | @@ -81,6 +81,9 @@ | ||
81 | <% cache(@page.cache_key(params, user)) do %> | 81 | <% cache(@page.cache_key(params, user)) do %> |
82 | <div class="<%="article-body article-body-" + @page.css_class_name %>"> | 82 | <div class="<%="article-body article-body-" + @page.css_class_name %>"> |
83 | <%= article_to_html(@page) %> | 83 | <%= article_to_html(@page) %> |
84 | + <% if @page.folder? %> | ||
85 | + <%= list_articles(@page.children, user)%> | ||
86 | + <% end %> | ||
84 | <br style="clear:both" /> | 87 | <br style="clear:both" /> |
85 | </div> <!-- end class="article-body" --> | 88 | </div> <!-- end class="article-body" --> |
86 | <% end %> | 89 | <% end %> |
app/views/profile/sitemap.rhtml
db/migrate/084_set_public_article_into_published_attribute.rb
0 → 100644
@@ -0,0 +1,10 @@ | @@ -0,0 +1,10 @@ | ||
1 | +class RemovePublicArticle < ActiveRecord::Migration | ||
2 | + def self.up | ||
3 | + remove_column :articles, :public_article | ||
4 | + end | ||
5 | + | ||
6 | + def self.down | ||
7 | + add_column :articles, :public_article, :boolean, :default => true | ||
8 | + execute('update articles set public_article = (1>0)') | ||
9 | + end | ||
10 | +end |
db/migrate/20100326171758_clear_default_theme_from_profiles.rb
0 → 100644
db/migrate/renumber.sh
db/schema.rb
@@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
9 | # | 9 | # |
10 | # It's strongly recommended to check this file into your version control system. | 10 | # It's strongly recommended to check this file into your version control system. |
11 | 11 | ||
12 | -ActiveRecord::Schema.define(:version => 83) do | 12 | +ActiveRecord::Schema.define(:version => 20100326171758) do |
13 | 13 | ||
14 | create_table "article_versions", :force => true do |t| | 14 | create_table "article_versions", :force => true do |t| |
15 | t.integer "article_id" | 15 | t.integer "article_id" |
@@ -72,7 +72,6 @@ ActiveRecord::Schema.define(:version => 83) do | @@ -72,7 +72,6 @@ ActiveRecord::Schema.define(:version => 83) do | ||
72 | t.date "start_date" | 72 | t.date "start_date" |
73 | t.date "end_date" | 73 | t.date "end_date" |
74 | t.integer "children_count", :default => 0 | 74 | t.integer "children_count", :default => 0 |
75 | - t.boolean "public_article", :default => true | ||
76 | t.boolean "accept_comments", :default => true | 75 | t.boolean "accept_comments", :default => true |
77 | t.integer "reference_article_id" | 76 | t.integer "reference_article_id" |
78 | t.text "setting" | 77 | t.text "setting" |
script/apply-template
@@ -8,7 +8,7 @@ env = Environment.default | @@ -8,7 +8,7 @@ env = Environment.default | ||
8 | 8 | ||
9 | def move_articles_to_blog(profile) | 9 | def move_articles_to_blog(profile) |
10 | profile.articles.each { |article| | 10 | profile.articles.each { |article| |
11 | - if !article.blog? && !article.is_a?(RssFeed) && article.public_article | 11 | + if !article.blog? && !article.is_a?(RssFeed) && article.published? |
12 | puts 'including ' + article.path + ' in the blog' | 12 | puts 'including ' + article.path + ' in the blog' |
13 | article.parent = profile.blog | 13 | article.parent = profile.blog |
14 | article.save! | 14 | article.save! |
test/functional/cms_controller_test.rb
@@ -624,14 +624,14 @@ class CmsControllerTest < Test::Unit::TestCase | @@ -624,14 +624,14 @@ class CmsControllerTest < Test::Unit::TestCase | ||
624 | end | 624 | end |
625 | 625 | ||
626 | should 'create a private article child of private folder' do | 626 | should 'create a private article child of private folder' do |
627 | - folder = Folder.new(:name => 'my intranet', :public_article => false); profile.articles << folder; folder.save! | 627 | + folder = Folder.new(:name => 'my intranet', :published => false); profile.articles << folder; folder.save! |
628 | 628 | ||
629 | post :new, :profile => profile.identifier, :type => 'TextileArticle', :parent_id => folder.id, :article => { :name => 'new-private-article'} | 629 | post :new, :profile => profile.identifier, :type => 'TextileArticle', :parent_id => folder.id, :article => { :name => 'new-private-article'} |
630 | folder.reload | 630 | folder.reload |
631 | 631 | ||
632 | - assert !assigns(:article).public? | 632 | + assert !assigns(:article).published? |
633 | assert_equal 'new-private-article', folder.children[0].name | 633 | assert_equal 'new-private-article', folder.children[0].name |
634 | - assert !folder.children[0].public? | 634 | + assert !folder.children[0].published? |
635 | end | 635 | end |
636 | 636 | ||
637 | should 'load communities for that the user belongs' do | 637 | should 'load communities for that the user belongs' do |
test/functional/content_viewer_controller_test.rb
@@ -293,10 +293,10 @@ class ContentViewerControllerTest < Test::Unit::TestCase | @@ -293,10 +293,10 @@ class ContentViewerControllerTest < Test::Unit::TestCase | ||
293 | assert_response 404 | 293 | assert_response 404 |
294 | end | 294 | end |
295 | 295 | ||
296 | - should 'show unpublished articles as unexisting' do | 296 | + should 'show access denied to unpublished articles' do |
297 | profile.articles.create!(:name => 'test', :published => false) | 297 | profile.articles.create!(:name => 'test', :published => false) |
298 | get :view_page, :profile => profile.identifier, :page => [ 'test' ] | 298 | get :view_page, :profile => profile.identifier, :page => [ 'test' ] |
299 | - assert_response 404 | 299 | + assert_response 403 |
300 | end | 300 | end |
301 | 301 | ||
302 | should 'show unpublished articles to the user himself' do | 302 | should 'show unpublished articles to the user himself' do |
@@ -307,19 +307,9 @@ class ContentViewerControllerTest < Test::Unit::TestCase | @@ -307,19 +307,9 @@ class ContentViewerControllerTest < Test::Unit::TestCase | ||
307 | assert_response :success | 307 | assert_response :success |
308 | end | 308 | end |
309 | 309 | ||
310 | - should 'show unpublished articles to members' do | ||
311 | - community = Community.create!(:name => 'testcomm') | ||
312 | - community.articles.create!(:name => 'test', :published => false) | ||
313 | - community.add_member(profile) | ||
314 | - | ||
315 | - login_as(profile.identifier) | ||
316 | - get :view_page, :profile => community.identifier, :page => [ 'test' ] | ||
317 | - assert_response :success | ||
318 | - end | ||
319 | - | ||
320 | should 'not show private content to members' do | 310 | should 'not show private content to members' do |
321 | community = Community.create!(:name => 'testcomm') | 311 | community = Community.create!(:name => 'testcomm') |
322 | - Folder.create!(:name => 'test', :profile => community, :public_article => false) | 312 | + Folder.create!(:name => 'test', :profile => community, :published => false) |
323 | community.add_member(profile) | 313 | community.add_member(profile) |
324 | 314 | ||
325 | login_as(profile.identifier) | 315 | login_as(profile.identifier) |
@@ -332,7 +322,7 @@ class ContentViewerControllerTest < Test::Unit::TestCase | @@ -332,7 +322,7 @@ class ContentViewerControllerTest < Test::Unit::TestCase | ||
332 | 322 | ||
333 | should 'show private content to profile moderators' do | 323 | should 'show private content to profile moderators' do |
334 | community = Community.create!(:name => 'testcomm') | 324 | community = Community.create!(:name => 'testcomm') |
335 | - community.articles.create!(:name => 'test', :public_article => false) | 325 | + community.articles.create!(:name => 'test', :published => false) |
336 | community.add_moderator(profile) | 326 | community.add_moderator(profile) |
337 | 327 | ||
338 | login_as(profile.identifier) | 328 | login_as(profile.identifier) |
@@ -344,7 +334,7 @@ class ContentViewerControllerTest < Test::Unit::TestCase | @@ -344,7 +334,7 @@ class ContentViewerControllerTest < Test::Unit::TestCase | ||
344 | 334 | ||
345 | should 'show private content to profile admins' do | 335 | should 'show private content to profile admins' do |
346 | community = Community.create!(:name => 'testcomm') | 336 | community = Community.create!(:name => 'testcomm') |
347 | - community.articles.create!(:name => 'test', :public_article => false) | 337 | + community.articles.create!(:name => 'test', :published => false) |
348 | community.add_admin(profile) | 338 | community.add_admin(profile) |
349 | 339 | ||
350 | login_as(profile.identifier) | 340 | login_as(profile.identifier) |
@@ -430,7 +420,7 @@ class ContentViewerControllerTest < Test::Unit::TestCase | @@ -430,7 +420,7 @@ class ContentViewerControllerTest < Test::Unit::TestCase | ||
430 | 420 | ||
431 | should 'not give access to private articles if logged off' do | 421 | should 'not give access to private articles if logged off' do |
432 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') | 422 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') |
433 | - intranet = Folder.create!(:name => 'my_intranet', :profile => profile, :public_article => false) | 423 | + intranet = Folder.create!(:name => 'my_intranet', :profile => profile, :published => false) |
434 | 424 | ||
435 | @request.stubs(:ssl?).returns(true) | 425 | @request.stubs(:ssl?).returns(true) |
436 | get :view_page, :profile => 'test_profile', :page => [ 'my-intranet' ] | 426 | get :view_page, :profile => 'test_profile', :page => [ 'my-intranet' ] |
@@ -441,7 +431,7 @@ class ContentViewerControllerTest < Test::Unit::TestCase | @@ -441,7 +431,7 @@ class ContentViewerControllerTest < Test::Unit::TestCase | ||
441 | should 'not give access to private articles if logged in but not member' do | 431 | should 'not give access to private articles if logged in but not member' do |
442 | login_as('testinguser') | 432 | login_as('testinguser') |
443 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') | 433 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') |
444 | - intranet = Folder.create!(:name => 'my_intranet', :profile => profile, :public_article => false) | 434 | + intranet = Folder.create!(:name => 'my_intranet', :profile => profile, :published => false) |
445 | 435 | ||
446 | @request.stubs(:ssl?).returns(true) | 436 | @request.stubs(:ssl?).returns(true) |
447 | get :view_page, :profile => 'test_profile', :page => [ 'my-intranet' ] | 437 | get :view_page, :profile => 'test_profile', :page => [ 'my-intranet' ] |
@@ -452,7 +442,7 @@ class ContentViewerControllerTest < Test::Unit::TestCase | @@ -452,7 +442,7 @@ class ContentViewerControllerTest < Test::Unit::TestCase | ||
452 | should 'not give access to private articles if logged in and only member' do | 442 | should 'not give access to private articles if logged in and only member' do |
453 | person = create_user('test_user').person | 443 | person = create_user('test_user').person |
454 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') | 444 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') |
455 | - intranet = Folder.create!(:name => 'my_intranet', :profile => profile, :public_article => false) | 445 | + intranet = Folder.create!(:name => 'my_intranet', :profile => profile, :published => false) |
456 | profile.affiliate(person, Profile::Roles.member(profile.environment.id)) | 446 | profile.affiliate(person, Profile::Roles.member(profile.environment.id)) |
457 | login_as('test_user') | 447 | login_as('test_user') |
458 | 448 | ||
@@ -465,7 +455,7 @@ class ContentViewerControllerTest < Test::Unit::TestCase | @@ -465,7 +455,7 @@ class ContentViewerControllerTest < Test::Unit::TestCase | ||
465 | should 'give access to private articles if logged in and moderator' do | 455 | should 'give access to private articles if logged in and moderator' do |
466 | person = create_user('test_user').person | 456 | person = create_user('test_user').person |
467 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') | 457 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') |
468 | - intranet = Folder.create!(:name => 'my_intranet', :profile => profile, :public_article => false) | 458 | + intranet = Folder.create!(:name => 'my_intranet', :profile => profile, :published => false) |
469 | profile.affiliate(person, Profile::Roles.moderator(profile.environment.id)) | 459 | profile.affiliate(person, Profile::Roles.moderator(profile.environment.id)) |
470 | login_as('test_user') | 460 | login_as('test_user') |
471 | 461 | ||
@@ -478,7 +468,7 @@ class ContentViewerControllerTest < Test::Unit::TestCase | @@ -478,7 +468,7 @@ class ContentViewerControllerTest < Test::Unit::TestCase | ||
478 | should 'give access to private articles if logged in and admin' do | 468 | should 'give access to private articles if logged in and admin' do |
479 | person = create_user('test_user').person | 469 | person = create_user('test_user').person |
480 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') | 470 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') |
481 | - intranet = Folder.create!(:name => 'my_intranet', :profile => profile, :public_article => false) | 471 | + intranet = Folder.create!(:name => 'my_intranet', :profile => profile, :published => false) |
482 | profile.affiliate(person, Profile::Roles.admin(profile.environment.id)) | 472 | profile.affiliate(person, Profile::Roles.admin(profile.environment.id)) |
483 | login_as('test_user') | 473 | login_as('test_user') |
484 | 474 | ||
@@ -507,21 +497,21 @@ class ContentViewerControllerTest < Test::Unit::TestCase | @@ -507,21 +497,21 @@ class ContentViewerControllerTest < Test::Unit::TestCase | ||
507 | 497 | ||
508 | should 'require SSL for viewing non-public articles' do | 498 | should 'require SSL for viewing non-public articles' do |
509 | Environment.default.update_attribute(:enable_ssl, true) | 499 | Environment.default.update_attribute(:enable_ssl, true) |
510 | - page = profile.articles.create!(:name => 'myarticle', :body => 'top secret', :public_article => false) | 500 | + page = profile.articles.create!(:name => 'myarticle', :body => 'top secret', :published => false) |
511 | get :view_page, :profile => 'testinguser', :page => [ 'myarticle' ] | 501 | get :view_page, :profile => 'testinguser', :page => [ 'myarticle' ] |
512 | assert_redirected_to :protocol => 'https://', :profile => 'testinguser', :page => [ 'myarticle' ] | 502 | assert_redirected_to :protocol => 'https://', :profile => 'testinguser', :page => [ 'myarticle' ] |
513 | end | 503 | end |
514 | 504 | ||
515 | should 'avoid SSL for viewing public articles' do | 505 | should 'avoid SSL for viewing public articles' do |
516 | @request.expects(:ssl?).returns(true).at_least_once | 506 | @request.expects(:ssl?).returns(true).at_least_once |
517 | - page = profile.articles.create!(:name => 'myarticle', :body => 'top secret', :public_article => true) | 507 | + page = profile.articles.create!(:name => 'myarticle', :body => 'top secret', :published => true) |
518 | get :view_page, :profile => 'testinguser', :page => [ 'myarticle' ] | 508 | get :view_page, :profile => 'testinguser', :page => [ 'myarticle' ] |
519 | assert_redirected_to :protocol => 'http://', :profile => 'testinguser', :page => [ 'myarticle' ] | 509 | assert_redirected_to :protocol => 'http://', :profile => 'testinguser', :page => [ 'myarticle' ] |
520 | end | 510 | end |
521 | 511 | ||
522 | should 'not redirect to SSL if already on SSL' do | 512 | should 'not redirect to SSL if already on SSL' do |
523 | @request.expects(:ssl?).returns(true).at_least_once | 513 | @request.expects(:ssl?).returns(true).at_least_once |
524 | - page = profile.articles.create!(:name => 'myarticle', :body => 'top secret', :public_article => false) | 514 | + page = profile.articles.create!(:name => 'myarticle', :body => 'top secret', :published => false) |
525 | login_as('testinguser') | 515 | login_as('testinguser') |
526 | get :view_page, :profile => 'testinguser', :page => [ 'myarticle' ] | 516 | get :view_page, :profile => 'testinguser', :page => [ 'myarticle' ] |
527 | assert_response :success | 517 | assert_response :success |
test/unit/application_helper_test.rb
@@ -555,6 +555,12 @@ class ApplicationHelperTest < Test::Unit::TestCase | @@ -555,6 +555,12 @@ class ApplicationHelperTest < Test::Unit::TestCase | ||
555 | assert_equal 'profile-theme', current_theme | 555 | assert_equal 'profile-theme', current_theme |
556 | end | 556 | end |
557 | 557 | ||
558 | + should 'use environment theme if the profile theme is nil' do | ||
559 | + stubs(:environment).returns(fast_create(Environment, :theme => 'new-theme')) | ||
560 | + stubs(:profile).returns(fast_create(Profile)) | ||
561 | + assert_equal environment.theme, current_theme | ||
562 | + end | ||
563 | + | ||
558 | protected | 564 | protected |
559 | 565 | ||
560 | def url_for(args = {}) | 566 | def url_for(args = {}) |
test/unit/article_test.rb
@@ -160,8 +160,8 @@ class ArticleTest < Test::Unit::TestCase | @@ -160,8 +160,8 @@ class ArticleTest < Test::Unit::TestCase | ||
160 | p = create_user('usr1').person | 160 | p = create_user('usr1').person |
161 | Article.destroy_all | 161 | Article.destroy_all |
162 | 162 | ||
163 | - first = p.articles.build(:name => 'first', :public_article => true); first.save! | ||
164 | - second = p.articles.build(:name => 'second', :public_article => false); second.save! | 163 | + first = p.articles.build(:name => 'first', :published => true); first.save! |
164 | + second = p.articles.build(:name => 'second', :published => false); second.save! | ||
165 | 165 | ||
166 | assert_equal [ first ], Article.recent(nil) | 166 | assert_equal [ first ], Article.recent(nil) |
167 | end | 167 | end |
@@ -202,8 +202,8 @@ class ArticleTest < Test::Unit::TestCase | @@ -202,8 +202,8 @@ class ArticleTest < Test::Unit::TestCase | ||
202 | 202 | ||
203 | now = Time.now | 203 | now = Time.now |
204 | 204 | ||
205 | - first = p.articles.build(:name => 'first', :public_article => true, :created_at => now, :published_at => now); first.save! | ||
206 | - second = p.articles.build(:name => 'second', :public_article => true, :updated_at => now, :published_at => now + 1.second); second.save! | 205 | + first = p.articles.build(:name => 'first', :published => true, :created_at => now, :published_at => now); first.save! |
206 | + second = p.articles.build(:name => 'second', :published => true, :updated_at => now, :published_at => now + 1.second); second.save! | ||
207 | 207 | ||
208 | assert_equal [ second, first ], Article.recent(2) | 208 | assert_equal [ second, first ], Article.recent(2) |
209 | 209 | ||
@@ -443,21 +443,21 @@ class ArticleTest < Test::Unit::TestCase | @@ -443,21 +443,21 @@ class ArticleTest < Test::Unit::TestCase | ||
443 | assert !Article.new.accept_category?(ProductCategory.new) | 443 | assert !Article.new.accept_category?(ProductCategory.new) |
444 | end | 444 | end |
445 | 445 | ||
446 | - should 'accept public_article attribute' do | ||
447 | - assert_respond_to Article.new, :public_article | ||
448 | - assert_respond_to Article.new, :public_article= | 446 | + should 'accept published attribute' do |
447 | + assert_respond_to Article.new, :published | ||
448 | + assert_respond_to Article.new, :published= | ||
449 | end | 449 | end |
450 | 450 | ||
451 | should 'say that logged off user cannot see private article' do | 451 | should 'say that logged off user cannot see private article' do |
452 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') | 452 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') |
453 | - article = Article.create!(:name => 'test article', :profile => profile, :public_article => false) | 453 | + article = Article.create!(:name => 'test article', :profile => profile, :published => false) |
454 | 454 | ||
455 | assert !article.display_to?(nil) | 455 | assert !article.display_to?(nil) |
456 | end | 456 | end |
457 | 457 | ||
458 | should 'say that not member of profile cannot see private article' do | 458 | should 'say that not member of profile cannot see private article' do |
459 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') | 459 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') |
460 | - article = Article.create!(:name => 'test article', :profile => profile, :public_article => false) | 460 | + article = Article.create!(:name => 'test article', :profile => profile, :published => false) |
461 | person = create_user('test_user').person | 461 | person = create_user('test_user').person |
462 | 462 | ||
463 | assert !article.display_to?(person) | 463 | assert !article.display_to?(person) |
@@ -465,7 +465,7 @@ class ArticleTest < Test::Unit::TestCase | @@ -465,7 +465,7 @@ class ArticleTest < Test::Unit::TestCase | ||
465 | 465 | ||
466 | should 'say that member user can not see private article' do | 466 | should 'say that member user can not see private article' do |
467 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') | 467 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') |
468 | - article = Article.create!(:name => 'test article', :profile => profile, :public_article => false) | 468 | + article = Article.create!(:name => 'test article', :profile => profile, :published => false) |
469 | person = create_user('test_user').person | 469 | person = create_user('test_user').person |
470 | profile.affiliate(person, Profile::Roles.member(profile.environment.id)) | 470 | profile.affiliate(person, Profile::Roles.member(profile.environment.id)) |
471 | 471 | ||
@@ -474,7 +474,7 @@ class ArticleTest < Test::Unit::TestCase | @@ -474,7 +474,7 @@ class ArticleTest < Test::Unit::TestCase | ||
474 | 474 | ||
475 | should 'say that profile admin can see private article' do | 475 | should 'say that profile admin can see private article' do |
476 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') | 476 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') |
477 | - article = Article.create!(:name => 'test article', :profile => profile, :public_article => false) | 477 | + article = Article.create!(:name => 'test article', :profile => profile, :published => false) |
478 | person = create_user('test_user').person | 478 | person = create_user('test_user').person |
479 | profile.affiliate(person, Profile::Roles.admin(profile.environment.id)) | 479 | profile.affiliate(person, Profile::Roles.admin(profile.environment.id)) |
480 | 480 | ||
@@ -483,7 +483,7 @@ class ArticleTest < Test::Unit::TestCase | @@ -483,7 +483,7 @@ class ArticleTest < Test::Unit::TestCase | ||
483 | 483 | ||
484 | should 'say that profile moderator can see private article' do | 484 | should 'say that profile moderator can see private article' do |
485 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') | 485 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') |
486 | - article = Article.create!(:name => 'test article', :profile => profile, :public_article => false) | 486 | + article = Article.create!(:name => 'test article', :profile => profile, :published => false) |
487 | person = create_user('test_user').person | 487 | person = create_user('test_user').person |
488 | profile.affiliate(person, Profile::Roles.moderator(profile.environment.id)) | 488 | profile.affiliate(person, Profile::Roles.moderator(profile.environment.id)) |
489 | 489 | ||
@@ -492,7 +492,7 @@ class ArticleTest < Test::Unit::TestCase | @@ -492,7 +492,7 @@ class ArticleTest < Test::Unit::TestCase | ||
492 | 492 | ||
493 | should 'not show article to non member if article public but profile private' do | 493 | should 'not show article to non member if article public but profile private' do |
494 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile', :public_profile => false) | 494 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile', :public_profile => false) |
495 | - article = Article.create!(:name => 'test article', :profile => profile, :public_article => true) | 495 | + article = Article.create!(:name => 'test article', :profile => profile, :published => true) |
496 | person1 = create_user('test_user1').person | 496 | person1 = create_user('test_user1').person |
497 | profile.affiliate(person1, Profile::Roles.member(profile.environment.id)) | 497 | profile.affiliate(person1, Profile::Roles.member(profile.environment.id)) |
498 | person2 = create_user('test_user2').person | 498 | person2 = create_user('test_user2').person |
@@ -504,54 +504,27 @@ class ArticleTest < Test::Unit::TestCase | @@ -504,54 +504,27 @@ class ArticleTest < Test::Unit::TestCase | ||
504 | 504 | ||
505 | should 'make new article private if created inside a private folder' do | 505 | should 'make new article private if created inside a private folder' do |
506 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') | 506 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') |
507 | - folder = Folder.create!(:name => 'my_intranet', :profile => profile, :public_article => false) | 507 | + folder = Folder.create!(:name => 'my_intranet', :profile => profile, :published => false) |
508 | article = Article.create!(:name => 'my private article', :profile => profile, :parent => folder) | 508 | article = Article.create!(:name => 'my private article', :profile => profile, :parent => folder) |
509 | 509 | ||
510 | - assert !article.public_article | ||
511 | - end | ||
512 | - | ||
513 | - should 'respond to public? like public_article if profile is public' do | ||
514 | - p = Profile.create!(:name => 'test profile', :identifier => 'test_profile') | ||
515 | - a1 = Article.create!(:name => 'test public article', :profile => p) | ||
516 | - a2 = Article.create!(:name => 'test private article', :profile => p, :public_article => false) | ||
517 | - | ||
518 | - assert a1.public? | ||
519 | - assert !a2.public? | ||
520 | - end | ||
521 | - | ||
522 | - should 'respond to public? as false if profile is private' do | ||
523 | - p = Profile.create!(:name => 'test profile', :identifier => 'test_profile', :public_profile => false) | ||
524 | - a1 = Article.create!(:name => 'test public article', :profile => p) | ||
525 | - a2 = Article.create!(:name => 'test private article', :profile => p, :public_article => false) | ||
526 | - | ||
527 | - assert !a1.public? | ||
528 | - assert !a2.public? | ||
529 | - end | ||
530 | - | ||
531 | - should 'respond to public? as false if profile is invisible' do | ||
532 | - profile = fast_create(Profile, :visible => false) | ||
533 | - article1 = fast_create(Article, :profile_id => profile.id) | ||
534 | - article2 = fast_create(Article, :profile_id => profile.id, :public_article => false) | ||
535 | - | ||
536 | - assert !article1.public? | ||
537 | - assert !article2.public? | 510 | + assert !article.published? |
538 | end | 511 | end |
539 | 512 | ||
540 | should 'save as private' do | 513 | should 'save as private' do |
541 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') | 514 | profile = Profile.create!(:name => 'test profile', :identifier => 'test_profile') |
542 | - folder = Folder.create!(:name => 'my_intranet', :profile => profile, :public_article => false) | 515 | + folder = Folder.create!(:name => 'my_intranet', :profile => profile, :published => false) |
543 | article = TextileArticle.new(:name => 'my private article') | 516 | article = TextileArticle.new(:name => 'my private article') |
544 | article.profile = profile | 517 | article.profile = profile |
545 | article.parent = folder | 518 | article.parent = folder |
546 | article.save! | 519 | article.save! |
547 | article.reload | 520 | article.reload |
548 | 521 | ||
549 | - assert !article.public_article | 522 | + assert !article.published? |
550 | end | 523 | end |
551 | 524 | ||
552 | should 'not allow friends of private person see the article' do | 525 | should 'not allow friends of private person see the article' do |
553 | person = create_user('test_user').person | 526 | person = create_user('test_user').person |
554 | - article = Article.create!(:name => 'test article', :profile => person, :public_article => false) | 527 | + article = Article.create!(:name => 'test article', :profile => person, :published => false) |
555 | friend = create_user('test_friend').person | 528 | friend = create_user('test_friend').person |
556 | person.add_friend(friend) | 529 | person.add_friend(friend) |
557 | person.save! | 530 | person.save! |
@@ -562,7 +535,7 @@ class ArticleTest < Test::Unit::TestCase | @@ -562,7 +535,7 @@ class ArticleTest < Test::Unit::TestCase | ||
562 | 535 | ||
563 | should 'display private articles to people who can view private content' do | 536 | should 'display private articles to people who can view private content' do |
564 | person = create_user('test_user').person | 537 | person = create_user('test_user').person |
565 | - article = Article.create!(:name => 'test article', :profile => person, :public_article => false) | 538 | + article = Article.create!(:name => 'test article', :profile => person, :published => false) |
566 | 539 | ||
567 | admin_user = create_user('admin_user').person | 540 | admin_user = create_user('admin_user').person |
568 | admin_user.stubs(:has_permission?).with('view_private_content', article.profile).returns('true') | 541 | admin_user.stubs(:has_permission?).with('view_private_content', article.profile).returns('true') |
@@ -598,6 +571,12 @@ class ArticleTest < Test::Unit::TestCase | @@ -598,6 +571,12 @@ class ArticleTest < Test::Unit::TestCase | ||
598 | assert_kind_of Folder, b | 571 | assert_kind_of Folder, b |
599 | end | 572 | end |
600 | 573 | ||
574 | + should 'copy slug' do | ||
575 | + a = fast_create(Article, :slug => 'slug123') | ||
576 | + b = a.copy({}) | ||
577 | + assert_equal a.slug, b.slug | ||
578 | + end | ||
579 | + | ||
601 | should 'load article under an old path' do | 580 | should 'load article under an old path' do |
602 | p = create_user('test_user').person | 581 | p = create_user('test_user').person |
603 | a = p.articles.create(:name => 'old-name') | 582 | a = p.articles.create(:name => 'old-name') |
test/unit/folder_helper_test.rb
@@ -15,4 +15,82 @@ class FolderHelperTest < Test::Unit::TestCase | @@ -15,4 +15,82 @@ class FolderHelperTest < Test::Unit::TestCase | ||
15 | assert_equal 'icons-mime/unknown.png', icon_for_article(art2) | 15 | assert_equal 'icons-mime/unknown.png', icon_for_article(art2) |
16 | end | 16 | end |
17 | 17 | ||
18 | + should 'list all the folder\'s children to the owner' do | ||
19 | + profile = create_user('Folder Owner').person | ||
20 | + folder = fast_create(Folder, {:name => 'Parent Folder', :profile_id => profile.id}) | ||
21 | + sub_folder = fast_create(Folder, {:name => 'Child Folder', :parent_id => folder.id, | ||
22 | + :profile_id => profile.id}) | ||
23 | + sub_blog = fast_create(Blog, {:name => 'Child Blog', :parent_id => folder.id, | ||
24 | + :profile_id => profile.id}) | ||
25 | + sub_article = fast_create(Article, {:name => 'Not Public Child Article', :parent_id => | ||
26 | + folder.id, :profile_id => profile.id, :published => false}) | ||
27 | + | ||
28 | + result = folder.list_articles(folder.children, profile) | ||
29 | + | ||
30 | + assert_match 'Child Folder', result | ||
31 | + assert_match 'Not Public Child Article', result | ||
32 | + assert_match 'Child Blog', result | ||
33 | + end | ||
34 | + | ||
35 | + should 'list the folder\'s children that are public to the user' do | ||
36 | + profile = create_user('Folder Owner').person | ||
37 | + profile2 = create_user('Folder Viwer').person | ||
38 | + folder = fast_create(Folder, {:name => 'Parent Folder', :profile_id => profile.id}) | ||
39 | + public_article = fast_create(Article, {:name => 'Public Article', :parent_id => | ||
40 | + folder.id, :profile_id => profile.id, :published => true}) | ||
41 | + not_public_article = fast_create(Article, {:name => 'Not Public Article', :parent_id => | ||
42 | + folder.id, :profile_id => profile.id, :published => false}) | ||
43 | + | ||
44 | + result = folder.list_articles(folder.children, profile2) | ||
45 | + | ||
46 | + assert_match 'Public Article', result | ||
47 | + assert_no_match /Not Public Article/, result | ||
48 | + end | ||
49 | + | ||
50 | + should ' not list the folder\'s children to the user because the owner\'s profile is not public' do | ||
51 | + profile = create_user('folder-owner').person | ||
52 | + profile.public_profile = false | ||
53 | + profile.save! | ||
54 | + profile2 = create_user('Folder Viwer').person | ||
55 | + folder = fast_create(Folder, {:name => 'Parent Folder', :profile_id => profile.id}) | ||
56 | + article = fast_create(Article, {:name => 'Article', :parent_id => folder.id, :profile_id => profile.id}) | ||
57 | + | ||
58 | + result = folder.list_articles(folder.children, profile2) | ||
59 | + | ||
60 | + assert_no_match /Article/, result | ||
61 | + end | ||
62 | + | ||
63 | + should ' not list the folder\'s children to the user because the owner\'s profile is not visible' do | ||
64 | + profile = create_user('folder-owner').person | ||
65 | + profile.visible = false | ||
66 | + profile.save! | ||
67 | + profile2 = create_user('Folder Viwer').person | ||
68 | + folder = fast_create(Folder, {:name => 'Parent Folder', :profile_id => profile.id}) | ||
69 | + article = fast_create(Article, {:name => 'Article', :parent_id => folder.id, :profile_id => profile.id}) | ||
70 | + | ||
71 | + result = folder.list_articles(folder.children, profile2) | ||
72 | + | ||
73 | + assert_no_match /Article/, result | ||
74 | + end | ||
75 | + | ||
76 | + should 'list subitems as HTML content' do | ||
77 | + profile = create_user('folder-owner').person | ||
78 | + folder = fast_create(Folder, {:name => 'Parent Folder', :profile_id => profile.id}) | ||
79 | + article = fast_create(Article, {:name => 'Article1', :parent_id => folder.id, :profile_id => profile.id}) | ||
80 | + article = fast_create(Article, {:name => 'Article2', :parent_id => folder.id, :profile_id => profile.id}) | ||
81 | + | ||
82 | + result = folder.list_articles(folder.children, profile) | ||
83 | + | ||
84 | + assert_tag_in_string result, :tag => 'td', :descendant => { :tag => 'a', :attributes => { :href => /.*\/folder-owner\/my-article-[0-9]*(\?|$)/ } }, :content => /Article1/ | ||
85 | + assert_tag_in_string result, :tag => 'td', :descendant => { :tag => 'a', :attributes => { :href => /.*\/folder-owner\/my-article-[0-9]*(\?|$)/ } }, :content => /Article2/ | ||
86 | + end | ||
87 | + | ||
88 | + should 'explictly advise if empty' do | ||
89 | + profile = create_user('folder-owner').person | ||
90 | + folder = fast_create(Folder, {:name => 'Parent Folder', :profile_id => profile.id}) | ||
91 | + result = folder.list_articles(folder.children, profile) | ||
92 | + | ||
93 | + assert_match '(empty folder)', result | ||
94 | + end | ||
95 | + | ||
18 | end | 96 | end |
test/unit/folder_test.rb
@@ -18,23 +18,6 @@ class FolderTest < ActiveSupport::TestCase | @@ -18,23 +18,6 @@ class FolderTest < ActiveSupport::TestCase | ||
18 | assert_not_equal Article.new.icon_name, Folder.new.icon_name | 18 | assert_not_equal Article.new.icon_name, Folder.new.icon_name |
19 | end | 19 | end |
20 | 20 | ||
21 | - should 'list subitems as HTML content' do | ||
22 | - p = create_user('testuser').person | ||
23 | - f = Folder.create!(:profile => p, :name => 'f') | ||
24 | - f.children.create!(:profile => p, :name => 'onearticle') | ||
25 | - f.children.create!(:profile => p, :name => 'otherarticle') | ||
26 | - f.reload | ||
27 | - | ||
28 | - assert_tag_in_string f.to_html, :tag => 'td', :descendant => { :tag => 'a', :attributes => { :href => /.*\/testuser\/f\/onearticle(\?|$)/ } }, :content => /onearticle/ | ||
29 | - assert_tag_in_string f.to_html, :tag => 'td', :descendant => { :tag => 'a', :attributes => { :href => /.*\/testuser\/f\/otherarticle(\?|$)/ } }, :content => /otherarticle/ | ||
30 | - end | ||
31 | - | ||
32 | - should 'explictly advise if empty' do | ||
33 | - p = create_user('testuser').person | ||
34 | - f = Folder.create!(:profile => p, :name => 'f') | ||
35 | - assert_tag_in_string f.to_html, :content => '(empty folder)' | ||
36 | - end | ||
37 | - | ||
38 | should 'show text body in HTML content' do | 21 | should 'show text body in HTML content' do |
39 | p = create_user('testuser').person | 22 | p = create_user('testuser').person |
40 | f = Folder.create!(:name => 'f', :profile => p, :body => 'this-is-the-text') | 23 | f = Folder.create!(:name => 'f', :profile => p, :body => 'this-is-the-text') |
@@ -147,4 +130,19 @@ class FolderTest < ActiveSupport::TestCase | @@ -147,4 +130,19 @@ class FolderTest < ActiveSupport::TestCase | ||
147 | 130 | ||
148 | assert_includes folder.images(true), pi | 131 | assert_includes folder.images(true), pi |
149 | end | 132 | end |
133 | + | ||
134 | + should 'not let pass javascript in the body' do | ||
135 | + owner = create_user('testuser').person | ||
136 | + folder = fast_create(Folder, {:profile_id => owner.id, :body => '<script>alert("Xss Attack!")</script>'}) | ||
137 | + folder.save! | ||
138 | + assert_no_match(/<script>/, folder.body) | ||
139 | + end | ||
140 | + | ||
141 | + should 'let pass html in the body' do | ||
142 | + owner = create_user('testuser').person | ||
143 | + folder = fast_create(Folder, {:profile_id => owner.id, :body => '<strong>I am not a Xss Attack!")</strong>'}) | ||
144 | + folder.save! | ||
145 | + assert_match(/<strong>/, folder.body) | ||
146 | + end | ||
147 | + | ||
150 | end | 148 | end |
test/unit/profile_test.rb
@@ -909,15 +909,6 @@ class ProfileTest < Test::Unit::TestCase | @@ -909,15 +909,6 @@ class ProfileTest < Test::Unit::TestCase | ||
909 | assert_equal 'my-shiny-theme', p.theme | 909 | assert_equal 'my-shiny-theme', p.theme |
910 | end | 910 | end |
911 | 911 | ||
912 | - should 'delegate theme selection to environment by default' do | ||
913 | - p = Profile.new | ||
914 | - env = mock | ||
915 | - p.stubs(:environment).returns(env) | ||
916 | - env.expects(:theme).returns('environment-stored-theme') | ||
917 | - | ||
918 | - assert_equal 'environment-stored-theme', p.theme | ||
919 | - end | ||
920 | - | ||
921 | should 'respond to public? as public_profile' do | 912 | should 'respond to public? as public_profile' do |
922 | p1 = fast_create(Profile) | 913 | p1 = fast_create(Profile) |
923 | p2 = fast_create(Profile, :public_profile => false) | 914 | p2 = fast_create(Profile, :public_profile => false) |
@@ -930,8 +921,8 @@ class ProfileTest < Test::Unit::TestCase | @@ -930,8 +921,8 @@ class ProfileTest < Test::Unit::TestCase | ||
930 | p1 = create(Profile) | 921 | p1 = create(Profile) |
931 | p2 = create(Profile, :public_profile => false) | 922 | p2 = create(Profile, :public_profile => false) |
932 | 923 | ||
933 | - assert p1.articles.find(:first, :conditions => {:public_article => false}) | ||
934 | - assert !p2.articles.find(:first, :conditions => {:public_article => false}) | 924 | + assert p1.articles.find(:first, :conditions => {:published => false}) |
925 | + assert !p2.articles.find(:first, :conditions => {:published => false}) | ||
935 | end | 926 | end |
936 | 927 | ||
937 | should 'remove member with many roles' do | 928 | should 'remove member with many roles' do |