示例#1
0
def test_list_submission_users_owned(database):
    """ Test listing users based on owned submissions """
    cgacs = [CGACFactory(cgac_code='000'), CGACFactory(cgac_code='111')]
    first_user = UserFactory.with_cgacs(cgacs[0],
                                        name='Test User 1',
                                        email='*****@*****.**')
    other_user = UserFactory.with_cgacs(cgacs[0],
                                        name='Test User',
                                        email='*****@*****.**')
    database.session.add_all(cgacs + [first_user, other_user])
    database.session.commit()

    sub_1 = SubmissionFactory(cgac_code=cgacs[1].cgac_code,
                              user_id=other_user.user_id,
                              d2_submission=False)
    database.session.add(sub_1)
    database.session.commit()

    g.user = first_user
    response = list_submission_users(False)
    user_response = json.loads(response.data.decode('UTF-8'))['users']

    # Don't list any submissions because they don't own any and have no cgac/frec affiliations
    assert len(user_response) == 0

    g.user = other_user
    response = list_submission_users(False)
    user_response = json.loads(response.data.decode('UTF-8'))['users']

    # List the user because they have a submission they own (even though it doesn't match the cgac)
    assert len(user_response) == 1
    assert user_response[0]['user_id'] == other_user.user_id
    assert user_response[0]['name'] == other_user.name
    assert user_response[0]['email'] == other_user.email
def test_list_submission_users_cgac_affil(database):
    """ Test listing users based on cgac affiliations """
    cgacs = [CGACFactory(cgac_code='000'), CGACFactory(cgac_code='111')]
    first_user = UserFactory.with_cgacs(cgacs[0], name='Test User 1')
    other_user = UserFactory.with_cgacs(cgacs[1], name='Test User')
    database.session.add_all(cgacs + [first_user, other_user])
    database.session.commit()

    sub_1 = SubmissionFactory(cgac_code=cgacs[0].cgac_code, user_id=first_user.user_id, d2_submission=False)
    sub_2 = SubmissionFactory(cgac_code=cgacs[0].cgac_code, user_id=other_user.user_id, d2_submission=False)
    database.session.add_all([sub_1, sub_2])
    database.session.commit()

    g.user = first_user
    response = list_submission_users(False)
    user_response = json.loads(response.data.decode('UTF-8'))['users']

    # List both users because each has a submission with the cgac
    assert len(user_response) == 2
    assert {user_response[0]['user_id'], user_response[1]['user_id']} == {first_user.user_id, other_user.user_id}
    assert {user_response[0]['name'], user_response[1]['name']} == {first_user.name, other_user.name}

    g.user = other_user
    response = list_submission_users(False)
    user_response = json.loads(response.data.decode('UTF-8'))['users']

    # List only the submissions this user is part of because they have no cgac/frec affiliations with either submission
    assert len(user_response) == 1
    assert user_response[0]['user_id'] == other_user.user_id
    assert user_response[0]['name'] == other_user.name
def test_list_submission_users_fabs_dabs(database):
    """ Test listing DABS vs FABS users """
    cgacs = [CGACFactory(cgac_code='000'), CGACFactory(cgac_code='111')]
    first_user = UserFactory.with_cgacs(cgacs[0], name='Test User 1')
    other_user = UserFactory.with_cgacs(cgacs[1], name='Test User')
    database.session.add_all(cgacs + [first_user, other_user])
    database.session.commit()

    sub_1 = SubmissionFactory(cgac_code=cgacs[0].cgac_code, user_id=first_user.user_id, d2_submission=False)
    sub_2 = SubmissionFactory(cgac_code=cgacs[0].cgac_code, user_id=other_user.user_id, d2_submission=True)
    database.session.add_all([sub_1, sub_2])
    database.session.commit()

    g.user = first_user
    response = list_submission_users(False)
    user_response = json.loads(response.data.decode('UTF-8'))['users']

    # List only the first user because they're the only ones with a DABS submission
    assert len(user_response) == 1
    assert user_response[0]['user_id'] == first_user.user_id
    assert user_response[0]['name'] == first_user.name

    response = list_submission_users(True)
    user_response = json.loads(response.data.decode('UTF-8'))['users']

    # List only the other user because they're the only ones with a FABS submission
    assert len(user_response) == 1
    assert user_response[0]['user_id'] == other_user.user_id
    assert user_response[0]['name'] == other_user.name
示例#4
0
def test_list_submission_users_fabs_dabs(database):
    """ Test listing DABS vs FABS users """
    cgacs = [CGACFactory(cgac_code='000'), CGACFactory(cgac_code='111')]
    first_user = UserFactory.with_cgacs(cgacs[0], name='Test User 1')
    other_user = UserFactory.with_cgacs(cgacs[1], name='Test User')
    database.session.add_all(cgacs + [first_user, other_user])
    database.session.commit()

    sub_1 = SubmissionFactory(cgac_code=cgacs[0].cgac_code,
                              user_id=first_user.user_id,
                              d2_submission=False)
    sub_2 = SubmissionFactory(cgac_code=cgacs[0].cgac_code,
                              user_id=other_user.user_id,
                              d2_submission=True)
    database.session.add_all([sub_1, sub_2])
    database.session.commit()

    g.user = first_user
    response = list_submission_users(False)
    user_response = json.loads(response.data.decode('UTF-8'))['users']

    # List only the first user because they're the only ones with a DABS submission
    assert len(user_response) == 1
    assert user_response[0]['user_id'] == first_user.user_id
    assert user_response[0]['name'] == first_user.name

    response = list_submission_users(True)
    user_response = json.loads(response.data.decode('UTF-8'))['users']

    # List only the other user because they're the only ones with a FABS submission
    assert len(user_response) == 1
    assert user_response[0]['user_id'] == other_user.user_id
    assert user_response[0]['name'] == other_user.name
def test_list_submission_users_owned(database):
    """ Test listing users based on owned submissions """
    cgacs = [CGACFactory(cgac_code='000'), CGACFactory(cgac_code='111')]
    first_user = UserFactory.with_cgacs(cgacs[0], name='Test User 1')
    other_user = UserFactory.with_cgacs(cgacs[0], name='Test User')
    database.session.add_all(cgacs + [first_user, other_user])
    database.session.commit()

    sub_1 = SubmissionFactory(cgac_code=cgacs[1].cgac_code, user_id=other_user.user_id, d2_submission=False)
    database.session.add(sub_1)
    database.session.commit()

    g.user = first_user
    response = list_submission_users(False)
    user_response = json.loads(response.data.decode('UTF-8'))['users']

    # Don't list any submissions because they don't own any and have no cgac/frec affiliations
    assert len(user_response) == 0

    g.user = other_user
    response = list_submission_users(False)
    user_response = json.loads(response.data.decode('UTF-8'))['users']

    # List the user because they have a submission they own (even though it doesn't match the cgac)
    assert len(user_response) == 1
    assert user_response[0]['user_id'] == other_user.user_id
    assert user_response[0]['name'] == other_user.name
示例#6
0
def test_list_submission_users_cgac_affil(database):
    """ Test listing users based on cgac affiliations """
    cgacs = [CGACFactory(cgac_code='000'), CGACFactory(cgac_code='111')]
    first_user = UserFactory.with_cgacs(cgacs[0], name='Test User 1', email='*****@*****.**')
    other_user = UserFactory.with_cgacs(cgacs[1], name='Test User', email='*****@*****.**')
    database.session.add_all(cgacs + [first_user, other_user])
    database.session.commit()

    sub_1 = SubmissionFactory(cgac_code=cgacs[0].cgac_code, user_id=first_user.user_id, is_fabs=False)
    sub_2 = SubmissionFactory(cgac_code=cgacs[0].cgac_code, user_id=other_user.user_id, is_fabs=False)
    database.session.add_all([sub_1, sub_2])
    database.session.commit()

    g.user = first_user
    response = list_submission_users(False)
    user_response = json.loads(response.data.decode('UTF-8'))['users']

    # List both users because each has a submission with the cgac
    assert len(user_response) == 2
    assert {user_response[0]['user_id'], user_response[1]['user_id']} == {first_user.user_id, other_user.user_id}
    assert {user_response[0]['name'], user_response[1]['name']} == {first_user.name, other_user.name}
    assert {user_response[0]['email'], user_response[1]['email']} == {first_user.email, other_user.email}

    g.user = other_user
    response = list_submission_users(False)
    user_response = json.loads(response.data.decode('UTF-8'))['users']

    # List only the submissions this user is part of because they have no cgac/frec affiliations with either submission
    assert len(user_response) == 1
    assert user_response[0]['user_id'] == other_user.user_id
    assert user_response[0]['name'] == other_user.name
    assert user_response[0]['email'] == other_user.email
示例#7
0
def test_list_submission_users_admin(database):
    """ Test listing all users with a submission (admin called the function) """
    cgacs = [CGACFactory(cgac_code='000'), CGACFactory(cgac_code='111')]
    admin_user = UserFactory(website_admin=True,
                             name='Admin User',
                             email='*****@*****.**')
    other_user = UserFactory.with_cgacs(cgacs[0],
                                        name='Test User',
                                        email='*****@*****.**')
    database.session.add_all(cgacs + [admin_user, other_user])
    database.session.commit()

    sub_1 = SubmissionFactory(cgac_code=cgacs[0].cgac_code,
                              user_id=other_user.user_id,
                              d2_submission=False)
    database.session.add(sub_1)
    database.session.commit()

    g.user = admin_user
    response = list_submission_users(False)
    user_response = json.loads(response.data.decode('UTF-8'))['users']

    # Only lists users with submissions and doesn't care about affiliations because admin
    assert len(user_response) == 1
    assert user_response[0]['user_id'] == other_user.user_id
    assert user_response[0]['name'] == other_user.name
    assert user_response[0]['email'] == other_user.email
def test_list_submission_users_cgac_frec_affil(database):
    """ Test listing users based on both cgac and frec affiliations """
    cgacs = [CGACFactory(cgac_code='000'), CGACFactory(cgac_code='111')]
    frecs = [FRECFactory(frec_code='0000', cgac=cgacs[0]), FRECFactory(frec_code='1111', cgac=cgacs[1])]
    first_user = UserFactory.with_cgacs(cgacs[0], name='Test User 1')
    other_user = UserFactory.with_cgacs(cgacs[1], name='Test User')
    third_user = UserFactory.with_cgacs(cgacs[1], name='Frec User')
    third_user.affiliations =\
        third_user.affiliations + [UserAffiliation(frec=frecs[0], user_id=third_user.user_id,
                                                   permission_type_id=PERMISSION_TYPE_DICT['reader'])]
    database.session.add_all(cgacs + frecs + [first_user, other_user])
    database.session.commit()

    # Third user now has cgac 111 and frec 0000
    sub_1 = SubmissionFactory(frec_code=frecs[0].frec_code, user_id=first_user.user_id, d2_submission=False)
    sub_2 = SubmissionFactory(cgac_code=cgacs[1].cgac_code, user_id=other_user.user_id, d2_submission=False)
    sub_3 = SubmissionFactory(frec_code=frecs[1].frec_code, user_id=other_user.user_id, d2_submission=False)
    database.session.add_all([sub_1, sub_2, sub_3])
    database.session.commit()

    g.user = third_user
    response = list_submission_users(False)
    user_response = json.loads(response.data.decode('UTF-8'))['users']

    # List both other users because one has a frec agency and one has a cgac
    assert len(user_response) == 2
    assert {user_response[0]['user_id'], user_response[1]['user_id']} == {first_user.user_id, other_user.user_id}
    assert {user_response[0]['name'], user_response[1]['name']} == {first_user.name, other_user.name}
def test_list_submission_users_frec_affil(database):
    """ Test listing users based on frec affiliations """
    cgacs = [CGACFactory(cgac_code='000'), CGACFactory(cgac_code='111')]
    frecs = [FRECFactory(frec_code='0000', cgac=cgacs[0]), FRECFactory(frec_code='1111', cgac=cgacs[1])]
    first_user = UserFactory.with_cgacs(cgacs[0], name='Test User 1')
    other_user = UserFactory.with_cgacs(cgacs[1], name='Test User')
    third_user = UserFactory(name='Frec User')
    third_user.affiliations = [UserAffiliation(frec=frecs[0], user_id=third_user.user_id,
                                               permission_type_id=PERMISSION_TYPE_DICT['reader'])]
    database.session.add_all(cgacs + frecs + [first_user, other_user])
    database.session.commit()

    sub_1 = SubmissionFactory(frec_code=frecs[0].frec_code, user_id=first_user.user_id, d2_submission=False)
    sub_2 = SubmissionFactory(cgac_code=cgacs[1].cgac_code, user_id=other_user.user_id, d2_submission=False)
    sub_3 = SubmissionFactory(frec_code=frecs[1].frec_code, user_id=other_user.user_id, d2_submission=False)
    database.session.add_all([sub_1, sub_2, sub_3])
    database.session.commit()

    g.user = third_user
    response = list_submission_users(False)
    user_response = json.loads(response.data.decode('UTF-8'))['users']

    # List the first user because they have a submission with that frec
    assert len(user_response) == 1
    assert user_response[0]['user_id'] == first_user.user_id
    assert user_response[0]['name'] == first_user.name
示例#10
0
def test_list_submission_users_cgac_frec_affil(database):
    """ Test listing users based on both cgac and frec affiliations """
    cgacs = [CGACFactory(cgac_code='000'), CGACFactory(cgac_code='111')]
    frecs = [FRECFactory(frec_code='0000', cgac=cgacs[0]), FRECFactory(frec_code='1111', cgac=cgacs[1])]
    first_user = UserFactory.with_cgacs(cgacs[0], name='Test User 1', email='*****@*****.**')
    other_user = UserFactory.with_cgacs(cgacs[1], name='Test User', email='*****@*****.**')
    third_user = UserFactory.with_cgacs(cgacs[1], name='Frec User', email='*****@*****.**')
    third_user.affiliations =\
        third_user.affiliations + [UserAffiliation(frec=frecs[0], user_id=third_user.user_id,
                                                   permission_type_id=PERMISSION_TYPE_DICT['reader'])]
    database.session.add_all(cgacs + frecs + [first_user, other_user])
    database.session.commit()

    # Third user now has cgac 111 and frec 0000
    sub_1 = SubmissionFactory(frec_code=frecs[0].frec_code, user_id=first_user.user_id, is_fabs=False)
    sub_2 = SubmissionFactory(cgac_code=cgacs[1].cgac_code, user_id=other_user.user_id, is_fabs=False)
    sub_3 = SubmissionFactory(frec_code=frecs[1].frec_code, user_id=other_user.user_id, is_fabs=False)
    database.session.add_all([sub_1, sub_2, sub_3])
    database.session.commit()

    g.user = third_user
    response = list_submission_users(False)
    user_response = json.loads(response.data.decode('UTF-8'))['users']

    # List both other users because one has a frec agency and one has a cgac
    assert len(user_response) == 2
    assert {user_response[0]['user_id'], user_response[1]['user_id']} == {first_user.user_id, other_user.user_id}
    assert {user_response[0]['name'], user_response[1]['name']} == {first_user.name, other_user.name}
    assert {user_response[0]['email'], user_response[1]['email']} == {first_user.email, other_user.email}
示例#11
0
def test_list_submission_users_frec_affil(database):
    """ Test listing users based on frec affiliations """
    cgacs = [CGACFactory(cgac_code='000'), CGACFactory(cgac_code='111')]
    frecs = [FRECFactory(frec_code='0000', cgac=cgacs[0]), FRECFactory(frec_code='1111', cgac=cgacs[1])]
    first_user = UserFactory.with_cgacs(cgacs[0], name='Test User 1', email='*****@*****.**')
    other_user = UserFactory.with_cgacs(cgacs[1], name='Test User', email='*****@*****.**')
    third_user = UserFactory(name='Frec User', email='*****@*****.**')
    third_user.affiliations = [UserAffiliation(frec=frecs[0], user_id=third_user.user_id,
                                               permission_type_id=PERMISSION_TYPE_DICT['reader'])]
    database.session.add_all(cgacs + frecs + [first_user, other_user])
    database.session.commit()

    sub_1 = SubmissionFactory(frec_code=frecs[0].frec_code, user_id=first_user.user_id, is_fabs=False)
    sub_2 = SubmissionFactory(cgac_code=cgacs[1].cgac_code, user_id=other_user.user_id, is_fabs=False)
    sub_3 = SubmissionFactory(frec_code=frecs[1].frec_code, user_id=other_user.user_id, is_fabs=False)
    database.session.add_all([sub_1, sub_2, sub_3])
    database.session.commit()

    g.user = third_user
    response = list_submission_users(False)
    user_response = json.loads(response.data.decode('UTF-8'))['users']

    # List the first user because they have a submission with that frec
    assert len(user_response) == 1
    assert user_response[0]['user_id'] == first_user.user_id
    assert user_response[0]['name'] == first_user.name
    assert user_response[0]['email'] == first_user.email
def test_list_submission_users_admin(database):
    """ Test listing all users with a submission (admin called the function) """
    cgacs = [CGACFactory(cgac_code='000'), CGACFactory(cgac_code='111')]
    admin_user = UserFactory(website_admin=True, name='Admin User')
    other_user = UserFactory.with_cgacs(cgacs[0], name='Test User')
    database.session.add_all(cgacs + [admin_user, other_user])
    database.session.commit()

    sub_1 = SubmissionFactory(cgac_code=cgacs[0].cgac_code, user_id=other_user.user_id, d2_submission=False)
    database.session.add(sub_1)
    database.session.commit()

    g.user = admin_user
    response = list_submission_users(False)
    user_response = json.loads(response.data.decode('UTF-8'))['users']

    # Only lists users with submissions and doesn't care about affiliations because admin
    assert len(user_response) == 1
    assert user_response[0]['user_id'] == other_user.user_id
    assert user_response[0]['name'] == other_user.name
 def list_submission_users_route(d2_submission):
     """ List all users with submissions that the requesting user has permissions for """
     return list_submission_users(d2_submission)
示例#14
0
 def list_submission_users_route(is_fabs):
     """ List all users with submissions that the requesting user has permissions for """
     return list_submission_users(is_fabs)