X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/91a3a6759a0294c28fa55f044c2d611d01054c20..3ee8ac519f0c3f3fd211372d2a4699586d5c2aa8:/apps/workbench/test/functional/projects_controller_test.rb diff --git a/apps/workbench/test/functional/projects_controller_test.rb b/apps/workbench/test/functional/projects_controller_test.rb index a991cedd63..d76430cfdf 100644 --- a/apps/workbench/test/functional/projects_controller_test.rb +++ b/apps/workbench/test/functional/projects_controller_test.rb @@ -1,13 +1,20 @@ require 'test_helper' class ProjectsControllerTest < ActionController::TestCase - test "inactive user is asked to sign user agreements on front page" do + test "invited user is asked to sign user agreements on front page" do get :index, {}, session_for(:inactive) - assert_response :success - assert_not_empty assigns(:required_user_agreements), - "Inactive user did not have required_user_agreements" - assert_template 'user_agreements/index', - "Inactive user was not presented with a user agreement at the front page" + assert_response :redirect + assert_match(/^#{Regexp.escape(user_agreements_url)}\b/, + @response.redirect_url, + "Inactive user was not redirected to user_agreements page") + end + + test "uninvited user is asked to wait for activation" do + get :index, {}, session_for(:inactive_uninvited) + assert_response :redirect + assert_match(/^#{Regexp.escape(inactive_users_url)}\b/, + @response.redirect_url, + "Uninvited user was not redirected to inactive user page") end [[:active, true], @@ -28,4 +35,131 @@ class ProjectsControllerTest < ActionController::TestCase end end end + + test "sharing a project with a user and group" do + uuid_list = [api_fixture("groups")["future_project_viewing_group"]["uuid"], + api_fixture("users")["future_project_user"]["uuid"]] + post(:share_with, { + id: api_fixture("groups")["asubproject"]["uuid"], + uuids: uuid_list, + format: "json"}, + session_for(:active)) + assert_response :success + assert_equal(uuid_list, json_response["success"]) + end + + test "user with project read permission can't add permissions" do + share_uuid = api_fixture("users")["spectator"]["uuid"] + post(:share_with, { + id: api_fixture("groups")["aproject"]["uuid"], + uuids: [share_uuid], + format: "json"}, + session_for(:project_viewer)) + assert_response 422 + assert(json_response["errors"].andand. + any? { |msg| msg.start_with?("#{share_uuid}: ") }, + "JSON response missing properly formatted sharing error") + end + + def user_can_manage(user_sym, group_key) + get(:show, {id: api_fixture("groups")[group_key]["uuid"]}, + session_for(user_sym)) + 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 + assert user_can_manage(:admin, "aproject") + end + + test "owner can_manage aproject" do + assert user_can_manage(:active, "aproject") + end + + test "owner can_manage asubproject" do + assert user_can_manage(:active, "asubproject") + end + + test "viewer can't manage aproject" do + refute user_can_manage(:project_viewer, "aproject") + end + + test "viewer can't manage asubproject" do + refute user_can_manage(:project_viewer, "asubproject") + end + + test 'projects#show tab infinite scroll partial obeys limit' do + get_contents_rows(limit: 1, filters: [['uuid','is_a',['arvados#job']]]) + assert_response :success + assert_equal(1, json_response['content'].scan('