From: Peter Amstutz Date: Thu, 13 Aug 2020 16:44:29 +0000 (-0400) Subject: 16683: Add checks related to sharing and remote users X-Git-Tag: 2.1.0~139^2~7 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/2ba6cc7a5e4bfd05cd51e8ab22be2a99a883349d 16683: Add checks related to sharing and remote users Arvados-DCO-1.1-Signed-off-by: Peter Amstutz --- diff --git a/sdk/python/tests/fed-migrate/check.py b/sdk/python/tests/fed-migrate/check.py index c231cc0735..e31ac05418 100644 --- a/sdk/python/tests/fed-migrate/check.py +++ b/sdk/python/tests/fed-migrate/check.py @@ -3,6 +3,7 @@ # SPDX-License-Identifier: Apache-2.0 import arvados +import arvados.errors import json import sys @@ -113,4 +114,64 @@ for i in (3, 5, 9): users = apiC.users().list().execute() check_A(users) + +#### +# bug 16683 tests + +# Check that this query returns empty, instead of returning a 500 or +# 502 error. +# Yes, we're asking for a group from the users endpoint. This is not a +# mistake, this is something workbench does to populate the sharing +# dialog. +clusterID_B = apiB.configs().get().execute()["ClusterID"] +i = apiB.users().list(filters=[["uuid", "in", ["%s-j7d0g-fffffffffffffff" % clusterID_B]]], count="none").execute() +assert len(i["items"]) == 0 + +# Check that we can create a project and give a remote user access to it + +tok3 = apiA.api_client_authorizations().create(body={"api_client_authorization": {"owner_uuid": by_username["case3"]}}).execute() +tok4 = apiA.api_client_authorizations().create(body={"api_client_authorization": {"owner_uuid": by_username["case4"]}}).execute() + +v2_token3 = "v2/%s/%s" % (tok3["uuid"], tok3["api_token"]) +v2_token4 = "v2/%s/%s" % (tok4["uuid"], tok4["api_token"]) + +apiB_3 = arvados.api(host=j["arvados_api_hosts"][1], token=v2_token3, insecure=True) +apiB_4 = arvados.api(host=j["arvados_api_hosts"][1], token=v2_token4, insecure=True) + +assert apiB_3.users().current().execute()["uuid"] == by_username["case3"] +assert apiB_4.users().current().execute()["uuid"] == by_username["case4"] + +newproject = apiB_3.groups().create(body={"group_class": "project", + "name":"fed test project"}, + ensure_unique_name=True).execute() + +try: + # Expect to fail + apiB_4.groups().get(uuid=newproject["uuid"]).execute() +except arvados.errors.ApiError as e: + if e.resp['status'] == '404': + pass + else: + raise + +l = apiB_3.links().create(body={"link_class": "permission", + "name":"can_read", + "tail_uuid": by_username["case4"], + "head_uuid": newproject["uuid"]}).execute() + +# Expect to succeed +apiB_4.groups().get(uuid=newproject["uuid"]).execute() + +# remove permission +apiB_3.links().delete(uuid=l["uuid"]).execute() + +try: + # Expect to fail again + apiB_4.groups().get(uuid=newproject["uuid"]).execute() +except arvados.errors.ApiError as e: + if e.resp['status'] == '404': + pass + else: + raise + print("Passed checks")