def test_access_admin_not_owner_else_member(user_1, user_2, user_3):
    """Testing whether a member can change someone else's permissions to member
    """
    admin_userpermission_change(user_1["token"], user_3["u_id"], OWNER)
    with pytest.raises(AccessError):
        admin_userpermission_change(user_2["token"], user_3["u_id"], MEMBER)
    clear()
def test_input_admin_valid_u_id(user_1):
    """u_id does not refer to a valid user
    """
    with pytest.raises(InputError):
        admin_userpermission_change(user_1["token"], user_1["u_id"] + 1, OWNER)
    with pytest.raises(InputError):
        admin_userpermission_change(user_1["token"], user_1["u_id"] - 1, MEMBER)
    clear()
def test_output_admin_owner_change_first_owner_to_owner(user_1, user_2, public_channel_1):
    """Test whether another flockr owner successfully change another the first
    flockr owner to an owner (essentially does nothing as permission has not changed)
    """
    admin_userpermission_change(user_1["token"], user_2["u_id"], OWNER)
    admin_userpermission_change(user_2["token"], user_1["u_id"], OWNER)
    channel.channel_join(user_2['token'], public_channel_1['channel_id'])
    clear()
def test_output_admin_owner_change_to_member(user_1, user_2, private_channel_1):
    """Test whether the an owner can set themselves as an member
    """
    admin_userpermission_change(user_1["token"], user_2["u_id"], OWNER)
    admin_userpermission_change(user_2["token"], user_2["u_id"], MEMBER)
    with pytest.raises(AccessError):
        channel.channel_join(user_2['token'], private_channel_1['channel_id'])
    clear()
def test_access_admin_not_owner_own(user_1, user_2):
    """Testing whether a member can change their own permissions
    """
    with pytest.raises(AccessError):
        admin_userpermission_change(user_2["token"], user_2["u_id"], OWNER)
    with pytest.raises(AccessError):
        admin_userpermission_change(user_2["token"], user_2["u_id"], MEMBER)
    clear()
def test_input_admin_owner_change_first_owner_to_member(user_1, user_2):
    """Test whether the another flockr owner cannot change the first flockr owner
    to a member
    """
    admin_userpermission_change(user_1["token"], user_2["u_id"], OWNER)
    with pytest.raises(InputError):
        admin_userpermission_change(user_2["token"], user_1["u_id"], MEMBER)
    clear()
def test_output_admin_member_change_to_member(user_1, user_2, private_channel_1):
    """Test whether a member is changed to a member, the function will do nothing.
    """
    with pytest.raises(AccessError):
        channel.channel_join(user_2['token'], private_channel_1['channel_id'])
    admin_userpermission_change(user_1["token"], user_2["u_id"], MEMBER)
    with pytest.raises(AccessError):
        channel.channel_join(user_2['token'], private_channel_1['channel_id'])
    clear()
def test_output_admin_owner_change_to_owner(user_1, user_2, public_channel_1):
    """Test whether an owner is changed to an owner, the function will do nothing.
    """
    admin_userpermission_change(user_1["token"], user_2["u_id"], OWNER)
    channel.channel_join(user_2['token'], public_channel_1['channel_id'])
    channel.channel_leave(user_2['token'], public_channel_1['channel_id'])
    admin_userpermission_change(user_2["token"], user_2["u_id"], OWNER)
    channel.channel_join(user_2['token'], public_channel_1['channel_id'])
    clear()
def test_output_admin_owner_change_member_to_owner(user_1, user_2):
    """Test whether a member has become a flockr owner by joining a private channel
    """
    admin_userpermission_change(user_1["token"], user_2["u_id"], OWNER)
    channel_info = channels.channels_create(user_1['token'], "Group 1", False)
    # Owner can join any channels including private
    # Testing user, with now as flockr owner to join private channel
    channel.channel_join(user_2['token'], channel_info['channel_id'])
    clear()
def test_output_admin_owner_change_owner_to_member_logout(user_1, user_2, private_channel_1):
    """Test whether permission change carry through after logout
    """
    admin_userpermission_change(user_1["token"], user_2["u_id"], OWNER)
    admin_userpermission_change(user_1["token"], user_2["u_id"], MEMBER)
    auth.auth_logout(user_2['token'])
    user_2 = auth.auth_login('*****@*****.**', 'password')
    with pytest.raises(AccessError):
        channel.channel_join(user_2['token'], private_channel_1['channel_id'])
    clear()
def test_output_admin_owner_change_member_to_owner_logout(user_1, user_2, public_channel_1):
    """Testing whether the permission change carry through after user logout and
    logs back in.
    """
    admin_userpermission_change(user_1["token"], user_2["u_id"], OWNER)
    auth.auth_logout(user_2["token"])
    user_2 = auth.auth_login('*****@*****.**', 'password')
    # Owner can join any channels including private
    # Testing user, with now as flockr owner to join private channel
    channel.channel_join(user_2['token'], public_channel_1['channel_id'])
    clear()
def test_input_admin_valid_permission_id(user_1):
    """permission_id does not refer to a value permission
    """
    with pytest.raises(InputError):
        admin_userpermission_change(user_1["token"], user_1["u_id"], -1)
    with pytest.raises(InputError):
        admin_userpermission_change(user_1["token"], user_1["u_id"], 0)
    with pytest.raises(InputError):
        admin_userpermission_change(user_1["token"], user_1["u_id"], 2)
    clear()
def test_access_admin_valid_token(user_1):
    """Test if token is invalid does not refer to a valid user
    """
    auth.auth_logout(user_1['token'])
    with pytest.raises(AccessError):
        admin_userpermission_change(user_1["token"], user_1["u_id"], OWNER)
    with pytest.raises(AccessError):
        admin_userpermission_change(user_1["token"], user_1["u_id"], MEMBER)
    with pytest.raises(AccessError):
        admin_userpermission_change("INVALID", user_1["u_id"], MEMBER)
    clear()
Example #14
0
def route_admin_userpermission_change():
    """Given a User by their user ID, set their permissions to new permissions
    described by permission_id

    Args:
        token (string)
        u_id (int)
        permission_id (int)
    """
    payload = request.get_json()
    u_id = int(payload['u_id'])
    permission_id = int(payload['permission_id'])
    try:
        return dumps(
            admin_userpermission_change(payload['token'], u_id, permission_id))
    except (InputError, AccessError) as e:
        return e
def test_input_admin_first_owner_changes_to_member(user_1):
    """Test whether the first flockr owner cannot change themselves to a member
    """
    with pytest.raises(InputError):
        admin_userpermission_change(user_1["token"], user_1["u_id"], MEMBER)
    clear()