X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/a677caec8b7bc236d9558ff39913237a3e4ed8fc..359be27e63987690c6e14813c763ea349f4a9534:/services/api/test/functional/arvados/v1/repositories_controller_test.rb diff --git a/services/api/test/functional/arvados/v1/repositories_controller_test.rb b/services/api/test/functional/arvados/v1/repositories_controller_test.rb index 241a34eb10..84bd846c91 100644 --- a/services/api/test/functional/arvados/v1/repositories_controller_test.rb +++ b/services/api/test/functional/arvados/v1/repositories_controller_test.rb @@ -1,3 +1,7 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + require 'test_helper' class Arvados::V1::RepositoriesControllerTest < ActionController::TestCase @@ -43,13 +47,12 @@ class Arvados::V1::RepositoriesControllerTest < ActionController::TestCase end test "get_all_permissions takes into account is_active flag" do - r = nil act_as_user users(:active) do - r = Repository.create! name: 'active/testrepo' + Repository.create! name: 'active/testrepo' end act_as_system_user do u = users(:active) - u.is_active = false + u.unsetup u.save! end authorize_with :admin @@ -147,7 +150,7 @@ class Arvados::V1::RepositoriesControllerTest < ActionController::TestCase test "get_all_permissions obeys group permissions" do act_as_user system_user do r = Repository.create!(name: 'admin/groupcanwrite', owner_uuid: users(:admin).uuid) - g = Group.create!(group_class: 'group', name: 'repo-writers') + g = Group.create!(group_class: 'role', name: 'repo-writers') u1 = users(:active) u2 = users(:spectator) Link.create!(tail_uuid: g.uuid, head_uuid: r.uuid, link_class: 'permission', name: 'can_manage') @@ -155,7 +158,7 @@ class Arvados::V1::RepositoriesControllerTest < ActionController::TestCase Link.create!(tail_uuid: u2.uuid, head_uuid: g.uuid, link_class: 'permission', name: 'can_read') r = Repository.create!(name: 'admin/groupreadonly', owner_uuid: users(:admin).uuid) - g = Group.create!(group_class: 'group', name: 'repo-readers') + g = Group.create!(group_class: 'role', name: 'repo-readers') u1 = users(:active) u2 = users(:spectator) Link.create!(tail_uuid: g.uuid, head_uuid: r.uuid, link_class: 'permission', name: 'can_read') @@ -170,19 +173,19 @@ class Arvados::V1::RepositoriesControllerTest < ActionController::TestCase u = User.find_by_uuid(user_uuid) if perms['can_read'] assert u.can? read: repo['uuid'] - assert_match /R/, perms['gitolite_permissions'] + assert_match(/R/, perms['gitolite_permissions']) else - refute_match /R/, perms['gitolite_permissions'] + refute_match(/R/, perms['gitolite_permissions']) end if perms['can_write'] assert u.can? write: repo['uuid'] - assert_match /RW\+/, perms['gitolite_permissions'] + assert_match(/RW\+/, perms['gitolite_permissions']) else - refute_match /W/, perms['gitolite_permissions'] + refute_match(/W/, perms['gitolite_permissions']) end if perms['can_manage'] assert u.can? manage: repo['uuid'] - assert_match /RW\+/, perms['gitolite_permissions'] + assert_match(/RW\+/, perms['gitolite_permissions']) end end end @@ -197,27 +200,29 @@ class Arvados::V1::RepositoriesControllerTest < ActionController::TestCase end [ - {cfg: :git_repo_ssh_base, cfgval: "git@example.com:", match: %r"^git@example.com:/"}, - {cfg: :git_repo_ssh_base, cfgval: true, match: %r"^git@git.zzzzz.arvadosapi.com:/"}, - {cfg: :git_repo_ssh_base, cfgval: false, refute: /^git@/ }, - {cfg: :git_repo_https_base, cfgval: "https://example.com/", match: %r"https://example.com/"}, - {cfg: :git_repo_https_base, cfgval: true, match: %r"^https://git.zzzzz.arvadosapi.com/"}, - {cfg: :git_repo_https_base, cfgval: false, refute: /^http/ }, + {cfg: "GitSSH.ExternalURL", cfgval: URI("ssh://git@example.com"), match: %r"^git@example.com:"}, + {cfg: "GitSSH.ExternalURL", cfgval: URI(""), match: %r"^git@git.zzzzz.arvadosapi.com:"}, + {cfg: "GitSSH", cfgval: false, refute: /^git@/ }, + {cfg: "GitHTTP.ExternalURL", cfgval: URI("https://example.com/"), match: %r"^https://example.com/"}, + {cfg: "GitHTTP.ExternalURL", cfgval: URI(""), match: %r"^https://git.zzzzz.arvadosapi.com/"}, + {cfg: "GitHTTP", cfgval: false, refute: /^http/ }, ].each do |expect| test "set #{expect[:cfg]} to #{expect[:cfgval]}" do - Rails.configuration.send expect[:cfg].to_s+"=", expect[:cfgval] + ConfigLoader.set_cfg Rails.configuration.Services, expect[:cfg].to_s, expect[:cfgval] authorize_with :active get :index assert_response :success + assert_not_empty json_response['items'] json_response['items'].each do |r| if expect[:refute] r['clone_urls'].each do |u| refute_match expect[:refute], u end else - assert r['clone_urls'].any? do |u| - expect[:prefix].match u - end + assert((r['clone_urls'].any? do |u| + expect[:match].match u + end), + "no match for #{expect[:match]} in #{r['clone_urls'].inspect}") end end end @@ -225,7 +230,7 @@ class Arvados::V1::RepositoriesControllerTest < ActionController::TestCase test "select push_url in index" do authorize_with :active - get(:index, {select: ["uuid", "push_url"]}) + get(:index, params: {select: ["uuid", "push_url"]}) assert_response :success assert_includes(json_response["items"].map { |r| r["push_url"] }, "git@git.zzzzz.arvadosapi.com:active/foo.git") @@ -233,7 +238,7 @@ class Arvados::V1::RepositoriesControllerTest < ActionController::TestCase test "select clone_urls in index" do authorize_with :active - get(:index, {select: ["uuid", "clone_urls"]}) + get(:index, params: {select: ["uuid", "clone_urls"]}) assert_response :success assert_includes(json_response["items"].map { |r| r["clone_urls"] }.flatten, "git@git.zzzzz.arvadosapi.com:active/foo.git")