def test_admin_userpermission_change_to_member(): ''' Test that admin_userpermission_change can set permissions of the user with the given user ID from owner to member permissions. ''' clear() user1 = auth_register('*****@*****.**', 'password', 'Bill', 'Gates') user2 = auth_register('*****@*****.**', 'password', 'Steve', 'Ballmer') # First user changes permissions of second user to make them a Flockr owner admin_userpermission_change(user1['token'], user2['u_id'], 1) # Second user creates a private channel f_channel = channels_create(user2['token'], 'Private Channel', False) # First user is able to join the private channel as they are a Flockr owner channel_join(user1['token'], f_channel['channel_id']) channel_leave(user1['token'], f_channel['channel_id']) # Second user changes permissions of first user to make them a member admin_userpermission_change(user2['token'], user1['u_id'], 2) # Check that first user is now a member # (verified by now not being able to join the private channel) with pytest.raises(AccessError): channel_join(user1['token'], f_channel['channel_id'])
def test_userpermssion_change_other_owner(): ''' Register two users, with one being owner by default, and change the permission of the member to owner. Newly promoted owner should be able to change the permissions of the other owner. ''' clear() user_1 = auth_register('*****@*****.**', '123abc!@#*', 'Bob', 'Ross', None) user_2 = auth_register('*****@*****.**', '123abc!@#*', 'Jo', 'Ross', None) token_1 = user_1['token'] token_2 = user_2['token'] id_1 = user_1['u_id'] id_2 = user_2['u_id'] owner_level = 1 member_level = 2 admin_userpermission_change(token_1, id_2, owner_level) admin_userpermission_change(token_2, id_1, member_level) for user in users: if user['u_id'] == id_1: assert user['permission_id'] == member_level break
def admin_user_permission_change(): payload = request.get_json() token = payload['token'] u_id = payload['u_id'] permission_id = payload['permission_id'] other.admin_userpermission_change(token, u_id, permission_id) return dumps({})
def test_permissions_removeowner(): ''' If permissions updated then no errors raised when removing. ''' clear() #flock owner user_1 = auth_register("*****@*****.**", "passwordOne", "Firstone", "Lastone") user_1_token = user_1.get('token') #change permissions to flock owner user_2 = auth_register("*****@*****.**", "passwordTwo", "Firsttwo", "Lasttwo") user_2_id = user_2.get('u_id') user_2_token = user_2.get('token') #add as channel owner user_3 = auth_register("*****@*****.**", "passwordOne", "Firstone", "Lastone") user_3_id = user_3.get('u_id') #make user 2 become owner admin_userpermission_change(user_1_token, user_2_id, 1) channel = channels_create(user_1_token, "channel1", True) channel1_id = channel.get("channel_id") channel_join(user_2_token, channel1_id) channel_addowner(user_1_token, channel1_id, user_3_id) channel_removeowner(user_2_token, channel1_id, user_3_id)
def test_admin_userpermission_change_2to1(): boyu_dict, wenyao_dict = initialise_data() admin_userpermission_change(boyu_dict['token'], wenyao_dict['u_id'], 1) # create a channel and add the new flockr owner as a member channel = channels_create(boyu_dict['token'], "team1", True) channel_id = channel['channel_id'] channel_invite(boyu_dict['token'], channel_id, wenyao_dict['u_id']) # check if the new flockr owner has owner permission in the channel channel_removeowner(wenyao_dict['token'], channel_id, boyu_dict['u_id']) assert channel_details(wenyao_dict['token'], channel_id) == { 'name': 'team1', 'owner_members': [{ 'u_id': wenyao_dict['u_id'], 'name_first': 'Wenyao', 'name_last': 'Chen', 'profile_img_url': '', }], 'all_members': [{ 'u_id': boyu_dict['u_id'], 'name_first': 'Boyu', 'name_last': 'Cai', 'profile_img_url': '', }, { 'u_id': wenyao_dict['u_id'], 'name_first': 'Wenyao', 'name_last': 'Chen', 'profile_img_url': '', }], }
def user_permission_change(): data = request.get_json() token = str(data["token"]) u_id = int(data["u_id"]) permission_id = data["permission_id"] admin_userpermission_change(token, u_id, permission_id) return dumps({})
def test_admin_userpermission_change_successful(): clear() admin, usera, userb = register_n_users(3, include_admin=True) admin_userpermission_change(admin["token"], usera["u_id"], 1) # usera should now be able to change other people's permission admin_userpermission_change(usera["token"], userb["u_id"], 2)
def test_admin_userpermission_change_invalid_uid(): ''' Exception test for invalid uid ''' other.clear() user_1 = auth.auth_register('*****@*****.**', 'abcd1234', 'Will', 'Smith') auth.auth_register('*****@*****.**', 'abcd1234', 'Carlton', 'Banks') with pytest.raises(error.InputError): other.admin_userpermission_change(user_1['token'], 4, 2)
def test_admin_userpermission_change_unauthorised(): ''' Exception test for an unauthorised user ''' other.clear() user_1 = auth.auth_register('*****@*****.**', 'abcd1234', 'Will', 'Smith') user_2 = auth.auth_register('*****@*****.**', 'abcd1234', 'Carlton', 'Banks') with pytest.raises(error.AccessError): other.admin_userpermission_change(user_2['token'], user_1['u_id'], 3)
def test_admin_userpermission_change_invalid_user(): clear() user = auth_register('*****@*****.**', '3mptyH3@dn0i', 'Ben', 'Lucas') invalid_u_id1 = user['u_id'] + 34 invalid_u_id2 = user['u_id'] + 79 with pytest.raises(InputError): admin_userpermission_change(user['token'], invalid_u_id1, 2) with pytest.raises(InputError): admin_userpermission_change(user['token'], invalid_u_id2, 2)
def test_admin_userpermission_change_user_notowner(): clear() user1 = auth_register('*****@*****.**', 'NKJ*j2j3b', 'Thomas', 'Dean') user2 = auth_register('*****@*****.**', '980ujdfKJn', 'Bethany', 'Bridgers') user3 = auth_register('*****@*****.**', '&YHBJBNJMK', 'Bob', 'Higgins') with pytest.raises(AccessError): admin_userpermission_change(user2['token'], user1['u_id'], 1) with pytest.raises(AccessError): admin_userpermission_change(user2['token'], user3['u_id'], 1)
def test_admin_userpermission_change_fail_other(): clear() admin, usera, userb = register_n_users(3, include_admin=True) # cannot change another member's permission with pytest.raises(AccessError): admin_userpermission_change(usera["token"], userb["u_id"], 1) # cannot change admin permission with pytest.raises(AccessError): admin_userpermission_change(usera["token"], admin["u_id"], 2)
def test_channel_join_user_permission_changed(): other.clear() owner = auth.auth_register("*****@*****.**", "password", "Homer", "Simpson") random_user1 = auth.auth_register("*****@*****.**", "password", "Bart", "Simpson") channel_1 = channels.channels_create(owner['token'], "channel_1", True) other.admin_userpermission_change(owner['token'], random_user1['u_id'], 1) channel.channel_join(random_user1['token'], channel_1['channel_id'])
def test_token_invalid(): ''' Testing when oken is invalid. ''' clear() # first user should automatically become a flockr owner user_1 = auth_register("*****@*****.**", "passwordOne", "Firstone", "Lastone") # put random user id as input: with pytest.raises(AccessError): admin_userpermission_change('token', user_1.get('u_id'), 1)
def test_invalid_user(): ''' Testing when user is invalid. ''' clear() # first user should automatically become a flockr owner user_1 = auth_register("*****@*****.**", "passwordOne", "Firstone", "Lastone") user_1_token = user_1.get('token') # put random user id as input: with pytest.raises(InputError): admin_userpermission_change(user_1_token, 123, 1)
def test_admin_userpermission_no_permission(): boyu_dict, wenyao_dict = initialise_data() admin_userpermission_change(boyu_dict['token'], wenyao_dict['u_id'], 1) admin_userpermission_change(boyu_dict['token'], wenyao_dict['u_id'], 2) # create a channel and add the new flockr owner as a member channel = channels_create(boyu_dict['token'], "team1", True) channel_id = channel['channel_id'] channel_invite(boyu_dict['token'], channel_id, wenyao_dict['u_id']) # check if the user has owner permission in the channel with pytest.raises(AccessError): assert channel_removeowner(wenyao_dict['token'], channel_id, boyu_dict['u_id'])
def test_invalid_id(): ''' Testing invalid permission_id. ''' clear() user_1 = auth_register("*****@*****.**", "passwordOne", "Firstone", "Lastone") user_1_token = user_1.get('token') user_2 = auth_register("*****@*****.**", "passwordTwo", "Firsttwo", "Lasttwo") user_2_id = user_2.get('u_id') with pytest.raises(InputError): admin_userpermission_change(user_1_token, user_2_id, 3)
def test_flocker_owner_access_other(): ''' Testing for a valid message edited by a flocker owner. ''' clear() user = auth_register("*****@*****.**", "password", "User_0", "User_last_0") user_1 = auth_register("*****@*****.**", "password", "User_1", "User_last_1") channel_1 = channels_create(user.get('token'), 'channel_1', True) channel_join(user_1.get("token"), channel_1.get("channel_id")) admin_userpermission_change(user.get('token'), user_1.get("u_id"), 1) message_info = message_send(user.get('token'), channel_1.get('channel_id'), 'Hello world') message_edit(user_1.get('token'), message_info.get('message_id'), 'Hellooo Worlldddd!!!!')
def test_admin_userpermission_change_revert_success(user1): """ Tests successful uses of admin_userpermission_change, focusing on reverting changes """ user2 = auth.auth_register("*****@*****.**", "honeysyrup2", "first_name", "last_name") assert other.admin_userpermission_change(user1["token"], user2["u_id"], 1) == {} assert other.admin_userpermission_change(user1["token"], user2["u_id"], 2) == {} other.clear()
def test_userpermssion_change_notexist(): ''' Register one user, the owner as first to register. Attempts to change permission of a non-existing user, to get InputError returned. ''' clear() user_owner = auth_register('*****@*****.**', '123abc!@#*', 'Bob', 'Ross', None) owner_token = user_owner['token'] non_member_id = 99 owner_level = 1 with pytest.raises(InputError): admin_userpermission_change(owner_token, non_member_id, owner_level)
def test_remove_flocker_owner_access(): ''' Testing for a valid message removed by a flockr owner. ''' clear() user = auth_register("*****@*****.**", "password", "First", "Last") user_1 = auth_register("*****@*****.**", "password", "First_1", "Last_1") channel_1 = channels_create(user.get('token'), 'channel_1', True) channel_join(user_1.get('token'), channel_1.get('channel_id')) message_info = message_send(user_1.get('token'), channel_1.get('channel_id'), 'Hello world') admin_userpermission_change(user.get('token'), user_1.get("u_id"), 1) message_remove(user_1.get('token'), message_info.get('message_id'))
def test_admin_userpermission_change_user_not_owner(): ''' Test that an AccessError is raised when the authorised user calling admin_userpermission_change does not have owner permissions ''' clear() f_owner = auth_register('*****@*****.**', 'password', 'Bob', 'Bob') member1 = auth_register('*****@*****.**', 'password', 'Tim', 'Hall') member2 = auth_register('*****@*****.**', 'password', 'Kim', 'Sean') with pytest.raises(AccessError): admin_userpermission_change(member1['token'], f_owner['u_id'], 2) with pytest.raises(AccessError): admin_userpermission_change(member2['token'], member1['u_id'], 1)
def test_non_owner_access(): ''' Testing a non-owner trying to use permission change. ''' clear() auth_register("*****@*****.**", "passwordOne", "Firstone", "Lastone") user_2 = auth_register("*****@*****.**", "passwordOne", "Firstone", "Lastone") user_2_token = user_2.get('token') user_3 = auth_register("*****@*****.**", "passwordOne", "Firstone", "Lastone") user_3_id = user_3.get('u_id') with pytest.raises(AccessError): admin_userpermission_change(user_2_token, user_3_id, 1)
def test_change_permission(user1): """ Changes user"s serverwide permissions to whatever was specified """ user2 = auth.auth_register("*****@*****.**", "Sullivan", "Mike", "Wazowski") # User2 is not owner, so can't remove owner with pytest.raises(AccessError): assert other.admin_userpermission_change(user2["token"], user1["u_id"], 2) # User1 is owner, so can add owner data.change_permission(user2["u_id"], 1) # User2 is owner so can remove owner (Would raise AccessError if # change_permission didn't work as intended) assert other.admin_userpermission_change(user2["token"], user1["u_id"], 2) == {} other.clear()
def test_admin_userpermission_change(): ''' Test that the function changes a users' permission ''' other.clear() user_1 = auth.auth_register('*****@*****.**', 'abcd1234', 'Will', 'Smith') user_2 = auth.auth_register('*****@*****.**', 'abcd1234', 'Carlton', 'Banks') channel_1 = channels.channels_create(user_1['token'], 'channel_1', True) channel.channel_join(user_2['token'], channel_1['channel_id']) other.admin_userpermission_change(user_1['token'], user_2['u_id'], 1) info = channel.channel_details(user_1['token'], channel_1['channel_id']) assert info['owner_members'][1]['u_id'] == user_2['u_id']
def test_userpermssion_change_member(): ''' Register two users, one owner as first to register, and the other member by default. Member will attempt to change owner's permission to member, only to get an AccessError. ''' clear() user_owner = auth_register('*****@*****.**', '123abc!@#*', 'Bob', 'Ross', None) user_member = auth_register('*****@*****.**', '123abc!@#*', 'Jo', 'Ross', None) member_token = user_member['token'] owner_id = user_owner['u_id'] member_level = 2 with pytest.raises(AccessError): admin_userpermission_change(member_token, owner_id, member_level)
def admin_userpermission_change_handler(): data = request.get_json() token = data["token"] u_id = data["u_id"] permission_id = data["permission_id"] return jsonify(admin_userpermission_change(token, u_id, permission_id))
def test_admin_userpermission_change_demote(): ''' Test if the function can promote a user then demote him ''' other.clear() user_1 = auth.auth_register('*****@*****.**', 'abcd1234', 'Will', 'Smith') user_2 = auth.auth_register('*****@*****.**', 'abcd1234', 'Carlton', 'Banks') channel_1 = channels.channels_create(user_1['token'], 'channel_1', True) channels.channels_create(user_1['token'], 'channel_1', True) channel.channel_join(user_2['token'], channel_1['channel_id']) other.admin_userpermission_change(user_1['token'], user_2['u_id'], 1) other.admin_userpermission_change(user_1['token'], user_2['u_id'], 2) info = channel.channel_details(user_1['token'], channel_1['channel_id']) assert len(info['owner_members']) == 1
def test_userpermission_input_err(): other.clear() u0 = auth.auth_register('*****@*****.**', 'youshallpass', 'King', 'Kingson') # call function with invalid id 0 with pytest.raises(InputError): assert other.admin_userpermission_change(u0['token'], 0, 1)
def change_permissions(): """ Sets a user's permissions according to the permission value using http """ data = request.get_json() token = data["token"] u_id = convert_to_int(data["u_id"]) permission_id = convert_to_int(data["permission_id"]) return other.admin_userpermission_change(token, u_id, permission_id)