X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/3794eb59917f309eb69dbfebbe09c8b594e712cc..ce5ad31aac392b38889fc04640fcd06474cebeb6:/services/api/test/integration/permissions_test.rb diff --git a/services/api/test/integration/permissions_test.rb b/services/api/test/integration/permissions_test.rb index fab51d4003..d2dce44f01 100644 --- a/services/api/test/integration/permissions_test.rb +++ b/services/api/test/integration/permissions_test.rb @@ -746,4 +746,53 @@ class PermissionsTest < ActionDispatch::IntegrationTest assert_equal expect, link1.name end end + + test "creating duplicate login permission returns existing link" do + link1 = act_as_system_user do + Link.create!({ + link_class: "permission", + tail_uuid: users(:active).uuid, + head_uuid: virtual_machines(:testvm2).uuid, + name: "can_login", + properties: {"username": "foo1"} + }) + end + link2 = act_as_system_user do + Link.create!({ + link_class: "permission", + tail_uuid: users(:active).uuid, + head_uuid: virtual_machines(:testvm2).uuid, + name: "can_login", + properties: {"username": "foo2"} + }) + end + link3 = act_as_system_user do + Link.create!({ + link_class: "permission", + tail_uuid: users(:active).uuid, + head_uuid: virtual_machines(:testvm2).uuid, + name: "can_read", + }) + end + post "/arvados/v1/links", + params: { + link: { + link_class: "permission", + tail_uuid: users(:active).uuid, + head_uuid: virtual_machines(:testvm2).uuid, + name: "can_login", + properties: {"username": "foo2"}, + }, + }, + headers: auth(:admin) + assert_response :success + assert_equal link2.uuid, json_response["uuid"] + assert_equal link2.created_at.to_date, json_response["created_at"].to_date + assert_equal "can_login", json_response["name"] + assert_equal "foo2", json_response["properties"]["username"] + link1.reload + assert_equal "foo1", link1.properties["username"] + link2.reload + assert_equal "foo2", link2.properties["username"] + end end