2044: Non-managers don't get sharing tab on project page. 2044-workbench-project-sharing-wip
authorBrett Smith <brett@curoverse.com>
Fri, 18 Jul 2014 15:38:15 +0000 (11:38 -0400)
committerBrett Smith <brett@curoverse.com>
Fri, 18 Jul 2014 20:14:46 +0000 (16:14 -0400)
Per discussion with Tom in IRC.

apps/workbench/app/controllers/projects_controller.rb
apps/workbench/app/views/projects/_show_sharing.html.erb
apps/workbench/test/functional/projects_controller_test.rb
apps/workbench/test/integration/projects_test.rb

index 4492010c67ffa77c6788fda41aaa5044a2131767..31cb5eff3e7fdad1a48aa4b1032735e62b431783 100644 (file)
@@ -8,7 +8,11 @@ class ProjectsController < ApplicationController
   end
 
   def show_pane_list
-    %w(Contents Sharing Advanced)
+    if @user_is_manager
+      %w(Contents Sharing Advanced)
+    else
+      %w(Contents Advanced)
+    end
   end
 
   def remove_item
@@ -92,8 +96,7 @@ class ProjectsController < ApplicationController
       @user_is_manager = true
     rescue ArvadosApiClient::AccessForbiddenException,
            ArvadosApiClient::NotFoundException
-      @share_links = Link.filter([['head_uuid', '=', @object.uuid],
-                                  ['link_class', '=', 'permission']])
+      @share_links = []
       @user_is_manager = false
     end
 
index 47dd2d6a5a1ba0a3af18e92f190010bb1122b453..a5482efc1d3efbd0fb6d36ca48f1873b74730f9b 100644 (file)
@@ -22,7 +22,6 @@
    end
 %>
 
-<% if @user_is_manager %>
 <div class="pull-right">
   <% ["users", "groups"].each do |share_class| %>
 
@@ -41,7 +40,6 @@
 
   <% end %>
 </div>
-<% end %>
 
 <p>Permissions for this project are inherited from the <%= owner_type %>
   <i class="fa fa-fw <%= owner_icon %>"></i>
@@ -51,7 +49,7 @@
 <table id="project_sharing" class="topalign table" style="clear: both; margin-top: 1em;">
   <tr>
     <th>User/Group Name</th>
-    <th<%= raw(' colspan="2"') if @user_is_manager %>>Project Access</th>
+    <th colspan="2">Project Access</th>
   </tr>
 
   <% @share_links.andand.each do |link|
@@ -68,7 +66,6 @@
       <i class="fa fa-fw <%= fa_icon_class_for_uuid(link.tail_uuid) %>"></i>
       <%= link_to_if_arvados_object(link.tail_uuid, link_text: link_name) %>
     </td>
-    <% if @user_is_manager %>
     <td><%= link_to perm_name_desc_map[link.name], '#', {
       "data-emptytext" => "Read",
       "data-placement" => "bottom",
       <i class="fa fa-fw fa-trash-o"></i>
       <% end %>
     </td>
-    <% else %>
-    <td>
-      <%= perm_name_desc_map[link.name] %>
-    </td>
-    <% end %>
   </tr>
   <% end %>
 </table>
index 0637c130a036b7833405340501ea54828978955f..dbcfdd064c7d357d81eeca1dd7a1b685053c2517 100644 (file)
@@ -35,7 +35,13 @@ class ProjectsControllerTest < ActionController::TestCase
   def user_can_manage(user_sym, group_key)
     get(:show, {id: api_fixture("groups")[group_key]["uuid"]},
         session_for(user_sym))
-    assigns(:user_is_manager)
+    is_manager = assigns(:user_is_manager)
+    assert_not_nil(is_manager, "user_is_manager flag not set")
+    if not is_manager
+      assert_empty(assigns(:share_links),
+                   "non-manager has share links set")
+    end
+    is_manager
   end
 
   test "admin can_manage aproject" do
index e3f79ff316711ed268268c5beda8cefc0da0ac9d..d1bf403b9210de078d5974b12f3f03c5df29191c 100644 (file)
@@ -121,15 +121,10 @@ class ProjectsTest < ActionDispatch::IntegrationTest
                  "revoking share did not remove row from sharing table")
   end
 
-  test "project viewer can see project sharing, but not change it" do
+  test "project viewer can't see project sharing tab" do
     show_project_using("project_viewer")
-    click_on "Sharing"
-    assert(page.has_text?("Project Viewer"), "did not find self on sharing tab")
-    assert(page.has_no_link?("Share with users"),
-           "read-only project user given option to add permissions")
-    assert_empty(all("#project_sharing a").
-                 reject { |a| a[:href] =~ %r{/(users|groups)/[-0-9a-z]+$} },
-                 "read-only project user given option to modify permissions")
+    assert(page.has_no_link?("Sharing"),
+           "read-only project user sees sharing tab")
   end
 
   test "project owner can manage sharing for another user" do