X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ee8d5b171e2c30ddc3fe829ba4388778e6a78b27..9b3223e5cbcd1eb89193e8421d430025ddf791d1:/apps/workbench/test/controllers/projects_controller_test.rb diff --git a/apps/workbench/test/controllers/projects_controller_test.rb b/apps/workbench/test/controllers/projects_controller_test.rb index 119ed8c8f4..51a4e37d4b 100644 --- a/apps/workbench/test/controllers/projects_controller_test.rb +++ b/apps/workbench/test/controllers/projects_controller_test.rb @@ -248,4 +248,162 @@ class ProjectsControllerTest < ActionController::TestCase assert_response :redirect assert_match /\/users\/welcome/, @response.redirect_url end + + [ + nil, + :active, + ].each do |user| + test "visit public projects page when anon config is enabled, as user #{user}, and expect page" do + Rails.configuration.anonymous_user_token = api_fixture('api_client_authorizations')['anonymous']['api_token'] + + if user + get :public, {}, session_for(user) + else + get :public + end + + assert_response :success + assert_not_nil assigns(:objects) + project_names = assigns(:objects).collect(&:name) + assert_includes project_names, 'Unrestricted public data' + assert_not_includes project_names, 'A Project' + refute_empty css_select('[href="/projects/public"]') + end + end + + test "visit public projects page when anon config is not enabled as active user and expect 404" do + get :public, {}, session_for(:active) + assert_response 404 + end + + test "visit public projects page when anon config is enabled but public projects page is disabled as active user and expect 404" do + Rails.configuration.anonymous_user_token = api_fixture('api_client_authorizations')['anonymous']['api_token'] + Rails.configuration.enable_public_projects_page = false + get :public, {}, session_for(:active) + assert_response 404 + end + + test "visit public projects page when anon config is not enabled as anonymous and expect login page" do + get :public + assert_response :redirect + assert_match /\/users\/welcome/, @response.redirect_url + assert_empty css_select('[href="/projects/public"]') + end + + test "visit public projects page when anon config is enabled and public projects page is disabled and expect login page" do + Rails.configuration.anonymous_user_token = api_fixture('api_client_authorizations')['anonymous']['api_token'] + Rails.configuration.enable_public_projects_page = false + get :index + assert_response :redirect + assert_match /\/users\/welcome/, @response.redirect_url + assert_empty css_select('[href="/projects/public"]') + end + + test "visit public projects page when anon config is not enabled and public projects page is enabled and expect login page" do + Rails.configuration.enable_public_projects_page = true + get :index + assert_response :redirect + assert_match /\/users\/welcome/, @response.redirect_url + assert_empty css_select('[href="/projects/public"]') + end + + test "find a project and edit its description" do + project = api_fixture('groups')['aproject'] + use_token :active + found = Group.find(project['uuid']) + found.description = 'test description update' + found.save! + get(:show, {id: project['uuid']}, session_for(:active)) + assert_includes @response.body, 'test description update' + end + + test "find a project and edit description to textile description" do + project = api_fixture('groups')['aproject'] + use_token :active + found = Group.find(project['uuid']) + found.description = '*test bold description for textile formatting*' + found.save! + get(:show, {id: project['uuid']}, session_for(:active)) + assert_includes @response.body, 'test bold description for textile formatting' + end + + test "find a project and edit description to html description" do + project = api_fixture('groups')['aproject'] + use_token :active + found = Group.find(project['uuid']) + found.description = 'Textile description with link to home page take me home.' + found.save! + get(:show, {id: project['uuid']}, session_for(:active)) + assert_includes @response.body, 'Textile description with link to home page take me home.' + end + + test "find a project and edit description to textile description with link to object" do + project = api_fixture('groups')['aproject'] + use_token :active + found = Group.find(project['uuid']) + + # uses 'Link to object' as a hyperlink for the object + found.description = '"Link to object":' + api_fixture('groups')['asubproject']['uuid'] + found.save! + get(:show, {id: project['uuid']}, session_for(:active)) + + # check that input was converted to textile, not staying as inputted + refute_includes @response.body,'"Link to object"' + refute_empty css_select('[href="/groups/zzzzz-j7d0g-axqo7eu9pwvna1x"]') + end + + test "project viewer can't see project sharing tab" do + project = api_fixture('groups')['aproject'] + get(:show, {id: project['uuid']}, session_for(:project_viewer)) + refute_includes @response.body, '
Public Projects" + end + end