OSDN Git Service

Fixed: private subprojects names are revealed on the project overview (#1152).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 1 May 2008 12:56:59 +0000 (12:56 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 1 May 2008 12:56:59 +0000 (12:56 +0000)
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1399 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/projects_controller.rb
test/fixtures/members.yml
test/fixtures/projects.yml
test/functional/projects_controller_test.rb
test/unit/project_test.rb

index b71ec1e..34ce734 100644 (file)
@@ -87,7 +87,7 @@ class ProjectsController < ApplicationController
   def show
     @custom_values = @project.custom_values.find(:all, :include => :custom_field, :order => "#{CustomField.table_name}.position")
     @members_by_role = @project.members.find(:all, :include => [:user, :role], :order => 'position').group_by {|m| m.role}
-    @subprojects = @project.active_children
+    @subprojects = @project.children.find(:all, :conditions => Project.visible_by(User.current))
     @news = @project.news.find(:all, :limit => 5, :include => [ :author, :project ], :order => "#{News.table_name}.created_on DESC")
     @trackers = @project.rolled_up_trackers
     
index 2c92091..32c65c6 100644 (file)
@@ -24,4 +24,10 @@ members_004:
   role_id: 2\r
   # Locked user\r
   user_id: 5\r
+members_005: \r
+  id: 5\r
+  created_on: 2006-07-19 19:35:33 +02:00\r
+  project_id: 5\r
+  role_id: 1\r
+  user_id: 2\r
   
\ No newline at end of file
index ad5cf4a..8e1b3fe 100644 (file)
@@ -3,7 +3,7 @@ projects_001:
   created_on: 2006-07-19 19:13:59 +02:00\r
   name: eCookbook\r
   updated_on: 2006-07-19 22:53:01 +02:00\r
-  projects_count: 2\r
+  projects_count: 3\r
   id: 1\r
   description: Recipes management application\r
   homepage: http://ecookbook.somenet.foo/\r
@@ -43,3 +43,15 @@ projects_004:
   is_public: true\r
   identifier: subproject2\r
   parent_id: 1\r
+projects_005: \r
+  created_on: 2006-07-19 19:15:51 +02:00\r
+  name: Private child of eCookbook\r
+  updated_on: 2006-07-19 19:17:07 +02:00\r
+  projects_count: 0\r
+  id: 5\r
+  description: This is a private subproject of a public project\r
+  homepage: ""\r
+  is_public: false\r
+  identifier: private_child\r
+  parent_id: 1\r
+  
\ No newline at end of file
index eb57951..5af7b55 100644 (file)
@@ -63,6 +63,21 @@ class ProjectsControllerTest < Test::Unit::TestCase
     assert_equal Project.find_by_identifier('ecookbook'), assigns(:project)
   end
   
+  def test_private_subprojects_hidden
+    get :show, :id => 'ecookbook'
+    assert_response :success
+    assert_template 'show'
+    assert_no_tag :tag => 'a', :content => /Private child/
+  end
+
+  def test_private_subprojects_visible
+    @request.session[:user_id] = 2 # manager who is a member of the private subproject
+    get :show, :id => 'ecookbook'
+    assert_response :success
+    assert_template 'show'
+    assert_tag :tag => 'a', :content => /Private child/
+  end
+  
   def test_settings
     @request.session[:user_id] = 2 # manager
     get :settings, :id => 1
index 9af68c2..f24e7d4 100644 (file)
@@ -101,7 +101,7 @@ class ProjectTest < Test::Unit::TestCase
     assert sub.save\r
     assert_equal @ecookbook.id, sub.parent.id\r
     @ecookbook.reload\r
-    assert_equal 3, @ecookbook.children.size\r
+    assert_equal 4, @ecookbook.children.size\r
   end\r
   \r
   def test_subproject_invalid\r