X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/1ec89c1c31669eb89bd1997cfa9d3c50f0204dbe..0561bd0c3c07257fd58ded6c7cfa5feeae97af57:/apps/workbench/test/controllers/repositories_controller_test.rb diff --git a/apps/workbench/test/controllers/repositories_controller_test.rb b/apps/workbench/test/controllers/repositories_controller_test.rb index e45095c64c..99e7285b3b 100644 --- a/apps/workbench/test/controllers/repositories_controller_test.rb +++ b/apps/workbench/test/controllers/repositories_controller_test.rb @@ -1,7 +1,13 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + require 'test_helper' +require 'helpers/repository_stub_helper' require 'helpers/share_object_helper' class RepositoriesControllerTest < ActionController::TestCase + include RepositoryStubHelper include ShareObjectHelper [ @@ -45,4 +51,94 @@ class RepositoriesControllerTest < ActionController::TestCase test "viewer cannot manage repository" do refute user_can_manage(:spectator, api_fixture("repositories")["arvados"]) end + + [ + [:active, ['#Sharing', '#Advanced']], + [:admin, ['#Attributes', '#Sharing', '#Advanced']], + ].each do |user, expected_panes| + test "#{user} sees panes #{expected_panes}" do + get :show, { + id: api_fixture('repositories')['foo']['uuid'] + }, session_for(user) + assert_response :success + + panes = css_select('[data-toggle=tab]').each do |pane| + pane_name = pane.attributes['href'] + assert_includes expected_panes, pane_name + end + end + end + + ### Browse repository content + + [:active, :spectator].each do |user| + test "show tree to #{user}" do + reset_api_fixtures_after_test false + sha1, _, _ = stub_repo_content + get :show_tree, { + id: api_fixture('repositories')['foo']['uuid'], + commit: sha1, + }, session_for(user) + assert_response :success + assert_select 'tr td a', 'COPYING' + assert_select 'tr td', '625 bytes' + assert_select 'tr td a', 'apps' + assert_select 'tr td a', 'workbench' + assert_select 'tr td a', 'Gemfile' + assert_select 'tr td', '33.7 KiB' + end + + test "show commit to #{user}" do + reset_api_fixtures_after_test false + sha1, commit, _ = stub_repo_content + get :show_commit, { + id: api_fixture('repositories')['foo']['uuid'], + commit: sha1, + }, session_for(user) + assert_response :success + assert_select 'pre', h(commit) + end + + test "show blob to #{user}" do + reset_api_fixtures_after_test false + sha1, _, filedata = stub_repo_content filename: 'COPYING' + get :show_blob, { + id: api_fixture('repositories')['foo']['uuid'], + commit: sha1, + path: 'COPYING', + }, session_for(user) + assert_response :success + assert_select 'pre', h(filedata) + end + end + + ['', '/'].each do |path| + test "show tree with path '#{path}'" do + reset_api_fixtures_after_test false + sha1, _, _ = stub_repo_content filename: 'COPYING' + get :show_tree, { + id: api_fixture('repositories')['foo']['uuid'], + commit: sha1, + path: path, + }, session_for(:active) + assert_response :success + assert_select 'tr td', 'COPYING' + end + end + + test "get repositories lists linked as well as owned repositories" do + params = { + partial: :repositories_rows, + format: :json, + } + get :index, params, session_for(:active) + assert_response :success + repos = assigns(:objects) + assert repos + assert_not_empty repos, "my_repositories should not be empty" + repo_uuids = repos.map(&:uuid) + assert_includes repo_uuids, api_fixture('repositories')['repository2']['uuid'] # owned by active + assert_includes repo_uuids, api_fixture('repositories')['repository4']['uuid'] # shared with active + assert_includes repo_uuids, api_fixture('repositories')['arvados']['uuid'] # shared with all_users + end end