コード例 #1
0
def test_update_token_add_resource():
    resource_id_1 = set_policy()
    resource_id_2 = set_policy()

    body = {}
    body['request'] = [resource_id_1]
    r = consumer.get_token(body)
    assert r['success'] is True
    assert r['status_code'] == 200

    token = r['response']['token']
    s = token.split("/")
    uuid = s[3]

    resources = []

    r = consumer.view_tokens()
    for tokens in r['response']:
        if tokens['uuid'] == uuid:
            resources = tokens['request']

    for resource in resources:
        assert resource_id_1 == resource['cat_id']
        assert resource['status'] == 'active'

    assert len(resources) == 1

    body['request'] = [{
        'token': uuid,
        'resources': [resource_id_1, resource_id_2]
    }]

    r = consumer.update_token(body)
    assert r['success'] is True
    assert r['status_code'] == 200

    resources = []

    r = consumer.view_tokens()
    for tokens in r['response']:
        if tokens['uuid'] == uuid:
            resources = tokens['request']
    check = 0
    for i in resources:
        if i['cat_id'] == resource_id_1 and i['status'] == 'active':
            check = check + 1
        if i['cat_id'] == resource_id_2 and i['status'] == 'active':
            check = check + 1

    assert check == 2
コード例 #2
0
def test_get_tokens_deleted_resource():
    resource_id_1 = set_policy()
    resource_id_2 = set_policy()

    body = {}
    body['request'] = [resource_id_1, resource_id_2]
    r = consumer.get_token(body)
    assert r['success'] is True
    assert r['status_code'] == 200

    token = r['response']['token']
    s = token.split("/")
    uuid = s[3]

    body['request'] = [{'token': uuid, 'resources': [resource_id_2]}]
    r = consumer.update_token(body)
    assert r['success'] is True
    assert r['status_code'] == 200

    r = consumer.view_tokens()
    resources = []

    check = False
    for tokens in r['response']:
        if uuid == tokens['uuid']:
            resources = tokens['request']

    for i in resources:
        if i['cat_id'] == resource_id_1:
            assert i['status'] == 'deleted'
            check = True

    assert check is True
コード例 #3
0
def test_delete_token_again():
    resource_id = set_policy()

    body = {}
    body['request'] = [resource_id]
    r = consumer.get_token(body)
    assert r['success'] is True
    assert r['status_code'] == 200

    token = r['response']['token']
    s = token.split("/")
    uuid = s[3]

    body = {'tokens': [uuid]}
    r = consumer.delete_token(body)
    assert r['success'] is True
    assert r['status_code'] == 200

    r = consumer.view_tokens()

    for tokens in r['response']:
        assert tokens['uuid'] != uuid

    body = {'tokens': [uuid]}
    r = consumer.delete_token(body)
    assert r['success'] is False
    assert r['status_code'] == 400
コード例 #4
0
def test_delete_token_success():
    resource_id_1 = set_policy()
    resource_id_2 = set_policy()

    body = {}
    # get first token
    body['request'] = [resource_id_1]
    r = consumer.get_token(body)
    assert r['success'] is True
    assert r['status_code'] == 200

    token = r['response']['token']
    s = token.split("/")
    uuid_1 = s[3]

    # get second token
    body['request'] = [resource_id_2]
    r = consumer.get_token(body)
    assert r['success'] is True
    assert r['status_code'] == 200

    token = r['response']['token']
    s = token.split("/")
    uuid_2 = s[3]

    body = {'tokens': [uuid_1, uuid_2]}
    r = consumer.delete_token(body)
    assert r['success'] is True
    assert r['status_code'] == 200

    r = consumer.view_tokens()

    for tokens in r['response']:
        assert tokens['uuid'] != uuid_1
        assert tokens['uuid'] != uuid_2
コード例 #5
0
def test_get_valid_token_multiple_resources():
    # test resource groups and resource items
    resource_id_1 = set_policy()
    resource_id_2 = set_policy() + '/item-1'
    resource_id_3 = set_policy()
    resource_id_4 = set_policy() + '/item-2'
    resource_id_5 = set_policy() + '/item-5'

    body = {}
    body['request'] = [
        resource_id_1, resource_id_2, resource_id_3, resource_id_4,
        resource_id_5
    ]
    r = consumer.get_token(body)
    assert r['success'] is True
    assert r['status_code'] == 200

    token = r['response']['token']
    s = token.split("/")
    uuid = s[3]

    resources = []
    r = consumer.view_tokens()

    for tokens in r['response']:
        if tokens['uuid'] == uuid:
            resources = tokens['request']

    for resource in resources:
        assert resource['cat_id'] in body['request']
コード例 #6
0
def test_get_tokens_revoked_resource():
    resource_id = set_policy()

    body = {}
    body['request'] = [resource_id]
    r = consumer.get_token(body)
    assert r['success'] is True
    assert r['status_code'] == 200

    token = r['response']['token']
    s = token.split("/")
    uuid = s[3]

    access_id = -1

    # find access ID and delete it
    r = provider.get_provider_access()
    assert r['success'] == True
    assert r['status_code'] == 200
    rules = r['response']
    for r in rules:
        if resource_id == r['item']['cat_id']:
            access_id = r['id']
            break

    assert access_id != -1
    r = provider.delete_rule([{'id': access_id}])
    assert r['success'] == True
    assert r['status_code'] == 200

    r = consumer.view_tokens()

    check = False
    for tokens in r['response']:
        if uuid == tokens['uuid']:
            assert tokens['request'][0]['status'] == 'revoked'
            check = True

    assert check is True
コード例 #7
0
def test_get_valid_token():
    resource_id = set_policy()
    body = {}
    body['request'] = [resource_id]
    r = consumer.get_token(body)
    assert r['success'] is True
    assert r['status_code'] == 200

    token = r['response']['token']
    s = token.split("/")
    assert len(s) == 4
    assert s[0] == 'auth.iudx.org.in'
    uuid = s[3]

    check = False
    r = consumer.view_tokens()

    for tokens in r['response']:
        if tokens['uuid'] == uuid:
            check = True

    assert check is True
コード例 #8
0
def test_different_provider_tokens():
    resource_id = set_policy()

    # let alt_provider set a policy
    resource_id_alt = "iisc.ac.in/2052f450ac2dde345335fb18b82e21da92e3388c/rs.iudx.io/" + rand_rsg(
    )
    access_req = {
        "user_email": email,
        "user_role": 'consumer',
        "item_id": resource_id_alt,
        "item_type": "resourcegroup",
        "capabilities": ["complex", "subscription", "temporal"]
    }
    r = alt_provider.provider_access([access_req])
    assert r['success'] == True
    assert r['status_code'] == 200

    body = {}
    body['request'] = [resource_id, resource_id_alt]
    r = consumer.get_token(body)
    assert r['success'] is True
    assert r['status_code'] == 200

    token = r['response']['token']
    s = token.split("/")
    uuid = s[3]

    r = consumer.view_tokens()

    check = False
    for tokens in r['response']:
        if uuid == tokens['uuid']:
            assert len(tokens['request']) == 2
            resources = [i['cat_id'] for i in tokens['request']]
            assert set(resources) == set(body['request'])
            check = True

    assert check is True
コード例 #9
0
def test_same_resource_same_user_diff_role():
    # policy set for same resource for a user registered as consumer
    # and data ingester. Getting a token for the resource will result
    # in a token with '2' resources, one reflecting the consumer
    # policy, the other for the ingester policy
    resource_id = set_policy()

    access_req = {
        "user_email": email,
        "user_role": 'data ingester',
        "item_id": resource_id,
        "item_type": "resourcegroup"
    }
    r = provider.provider_access([access_req])
    assert r['success'] == True
    assert r['status_code'] == 200

    body = {}
    body['request'] = [resource_id]
    r = consumer.get_token(body)
    assert r['success'] is True
    assert r['status_code'] == 200

    token = r['response']['token']
    s = token.split("/")
    uuid = s[3]

    r = consumer.view_tokens()

    check = False
    for tokens in r['response']:
        if uuid == tokens['uuid']:
            assert len(tokens['request']) == 2
            check = True

    assert check is True
コード例 #10
0
def test_get_tokens_expired_token():
    resource_id = set_policy()

    body = {}
    body['request'] = [resource_id]
    r = consumer.get_token(body)
    assert r['success'] is True
    assert r['status_code'] == 200

    token = r['response']['token']
    s = token.split("/")
    uuid = s[3]

    assert expire_token(uuid) is True

    r = consumer.view_tokens()

    check = False
    for tokens in r['response']:
        if uuid == tokens['uuid']:
            assert tokens['status'] == 'expired'
            check = True

    assert check is True
コード例 #11
0
def test_update_token_delete_and_undelete_resource():
    resource_id_1 = set_policy()
    resource_id_2 = set_policy()

    body = {}
    body['request'] = [resource_id_1, resource_id_2]
    r = consumer.get_token(body)
    assert r['success'] is True
    assert r['status_code'] == 200

    token = r['response']['token']
    s = token.split("/")
    uuid = s[3]

    resources = []

    r = consumer.view_tokens()
    for tokens in r['response']:
        if tokens['uuid'] == uuid:
            resources = tokens['request']

    assert len(resources) == 2
    for i in resources:
        assert i['status'] == 'active'

    body['request'] = [{'token': uuid, 'resources': [resource_id_2]}]

    r = consumer.update_token(body)
    assert r['success'] is True
    assert r['status_code'] == 200
    assert resource_id_1 in r['response'][0]['deleted_resources']
    assert resource_id_2 in r['response'][0]['active_resources']

    resources = []

    r = consumer.view_tokens()
    for tokens in r['response']:
        if tokens['uuid'] == uuid:
            resources = tokens['request']
    check = 0
    for i in resources:
        if i['cat_id'] == resource_id_1:
            assert i['status'] == 'deleted'
            check = check + 1
        if i['cat_id'] == resource_id_2:
            assert i['status'] == 'active'
            check = check + 1

    assert check == 2

    # undelete the resource/add it again
    body['request'] = [{
        'token': uuid,
        'resources': [resource_id_1, resource_id_2]
    }]

    r = consumer.update_token(body)
    assert r['success'] is True
    assert r['status_code'] == 200
    assert len(r['response'][0]['deleted_resources']) == 0

    resources = []

    r = consumer.view_tokens()
    for tokens in r['response']:
        if tokens['uuid'] == uuid:
            resources = tokens['request']
    check = 0
    for i in resources:
        assert i['status'] == 'active'