5189: include owned repositories in the list of repositories returned in manage_account.
authorRadhika Chippada <radhika@curoverse.com>
Mon, 16 Feb 2015 16:29:54 +0000 (11:29 -0500)
committerRadhika Chippada <radhika@curoverse.com>
Mon, 16 Feb 2015 16:29:54 +0000 (11:29 -0500)
apps/workbench/app/controllers/users_controller.rb
apps/workbench/test/controllers/users_controller_test.rb

index 7dcd4cc08d3ea91802fbec54f424c44d3e8c5966..7443216c4b5622f477a1050e465a88962b9009fa 100644 (file)
@@ -240,7 +240,13 @@ class UsersController < ApplicationController
               ['tail_uuid', '=', current_user.uuid],
               ['link_class', '=', 'permission'],
              ])
-    @my_repositories = Repository.where uuid: repo_links.collect(&:head_uuid)
+
+    @my_repositories = (Repository.where(uuid: repo_links.collect(&:head_uuid)) |
+                        Repository.where(owner_uuid: current_user.uuid)).
+                       uniq { |repo| repo.uuid }
+
+    owned_repositories = Repository.where(owner_uuid: current_user.uuid).collect(&:uuid)
+
     @repo_writable = {}
     repo_links.each do |link|
       if link.name.in? ['can_write', 'can_manage']
@@ -248,6 +254,10 @@ class UsersController < ApplicationController
       end
     end
 
+    owned_repositories.each do |repo|
+      @repo_writable[repo] = 'can_manage'
+    end
+
     # virtual machines the current user can login into
     @my_vm_logins = {}
     Link.where(tail_uuid: current_user.uuid,
index ebec4a3d226821a785a7604b2a4c42171e3885fd..c1436da4545e93197c95d2b850614cf55c95cafc 100644 (file)
@@ -41,6 +41,17 @@ class UsersControllerTest < ActionController::TestCase
     assert_includes editables, false, "should have a readonly repository"
   end
 
+  test "show repositories lists linked as well as owned repositories" do
+    get :manage_account, {}, session_for(:active)
+    assert_response :success
+    repos = assigns(:my_repositories)
+    assert repos
+    repo_writables = assigns(:repo_writable)
+    assert_not_empty repo_writables, "repo_writables should not be empty"
+    assert_includes repo_writables, api_fixture('repositories')['repository4']['uuid']  # writable by active
+    assert_includes repo_writables, api_fixture('repositories')['repository2']['uuid']  # owned by active
+  end
+
   test "request shell access" do
     user = api_fixture('users')['spectator']