def test_channels_listall_2_channels(setup1, setup2, setup3): data = getData() reset_channels() ''' Creates a public channel (channel1) (Admin: user1) ''' channelsCreate1 = channels_create(setup1['token'], "Public Channel", True) channelId1 = channelsCreate1['channel_id'] ''' Creates a private channel (channel2) (Admin: user2) ''' channelsCreate2 = channels_create(setup2['token'], "Private Channel", False) channelId2 = channelsCreate2['channel_id'] assert channels_listall(setup1['token']) == { 'channels': [{ 'channel_id': channelId1, 'name': 'Public Channel', }, { 'channel_id': channelId2, 'name': 'Private Channel', }] } # Passing in token 2 will return same output assert channels_listall(setup2['token']) == { 'channels': [{ 'channel_id': channelId1, 'name': 'Public Channel', }, { 'channel_id': channelId2, 'name': 'Private Channel', }] }
def test_channel_addowner_success(setup1, setup2, setup3): data = getData() reset_channels() ''' Creates a public channel (Admin: user1) ''' channelsCreate1 = channels_create(setup1['token'], "Public Channel", True) channelId1 = channelsCreate1['channel_id'] ''' User2 joins the channel ''' channel_join(setup2['token'], channelId1) ''' Adds user2 as owner of "Public Channel" ''' channel_addowner(setup1['token'], channelId1, setup2['u_id']) ''' If above line was succesful, will display user2 as an owner when calling channel_details ''' details = channel_details(setup1['token'], channelId1) assert details['owner_members'] == [{ 'u_id': setup1['u_id'], 'name_first': "Sojin", 'name_last': "Nam", 'profile_img_url': "https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/An_up-close_picture_of_a_curious_male_domestic_shorthair_tabby_cat.jpg/440px-An_up-close_picture_of_a_curious_male_domestic_shorthair_tabby_cat.jpg" }, { 'u_id': setup2['u_id'], 'name_first': "Fairuz", 'name_last': "Alam", 'profile_img_url': "https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/An_up-close_picture_of_a_curious_male_domestic_shorthair_tabby_cat.jpg/440px-An_up-close_picture_of_a_curious_male_domestic_shorthair_tabby_cat.jpg" }]
def reset_channels(): data = getData() global channel_id data['channel'] = [] for user in data['users']: user['joined_channels'] = [] channel_id = 0
def test_channel_details_success(setup1, setup2, setup3): data = getData() reset_channels() ''' Creates a public channel (Admin: user1) ''' channelsCreate1 = channels_create(setup1['token'], "Public Channel", True) channelId1 = channelsCreate1['channel_id'] assert channel_details(setup1['token'], channelId1) == { 'name': "Public Channel", 'all_members': [{ 'u_id': setup1['u_id'], 'name_first': 'Sojin', 'name_last': 'Nam', 'profile_img_url': "https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/An_up-close_picture_of_a_curious_male_domestic_shorthair_tabby_cat.jpg/440px-An_up-close_picture_of_a_curious_male_domestic_shorthair_tabby_cat.jpg" }], 'owner_members': [{ 'u_id': setup1['u_id'], 'name_first': 'Sojin', 'name_last': 'Nam', 'profile_img_url': "https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/An_up-close_picture_of_a_curious_male_domestic_shorthair_tabby_cat.jpg/440px-An_up-close_picture_of_a_curious_male_domestic_shorthair_tabby_cat.jpg" }] }
def test_channels_create_invalid_name_private(setup1, setup2, setup3): data = getData() reset_channels() ''' invalid name (> 20 characters) ''' invalidName = "thisisaninvalidname!!!" ''' Error when invalid name entered ''' with pytest.raises(ValueError_http, match=r".*"): channels_create(setup2['token'], invalidName, False)
def setup1(): data = getData() global channel_id channel_id = 0 ''' Registers user1 ''' authRegDict1 = auth_register("*****@*****.**", "password123", "Sojin", "Nam") return authRegDict1
def check_last_owner(u_id): data = getData() foundOwner = 0 foundUser = getUserById(u_id) for user in data['users']: if user['permission_id'] == 1: foundOwner += 1 return foundOwner
def test_channel_addowner_not_a_member(setup1, setup2, setup3): data = getData() reset_channels() ''' Creates a public channel (Admin: user1) ''' channelsCreate1 = channels_create(setup1['token'], "Public Channel", True) channelId1 = channelsCreate1['channel_id'] ''' Error when owner tries to make a non-member an owner ''' with pytest.raises(ValueError_http, match=r".*"): channel_addowner(setup1['token'], channelId1, setup2['u_id'])
def test_channel_invite_no_user(setup1, setup2, setup3): data = getData() reset_channels() ''' Creates a public channel (Admin: user1) ''' channelsCreate1 = channels_create(setup1['token'], "Public Channel", True) channelId1 = channelsCreate1['channel_id'] ''' Error when user does not exist''' with pytest.raises(ValueError_http, match=r".*"): channel_invite(setup1['token'], channelId1, 'wrong')
def test_channel_invite_unauthorized(setup1, setup2, setup3): data = getData() reset_channels() ''' Creates a public channel (Admin: user1) ''' channelsCreate1 = channels_create(setup1['token'], "Public Channel", True) channelId1 = channelsCreate1['channel_id'] ''' Error when authorized user is not a member of channel''' with pytest.raises(AccessError, match=r".*"): channel_invite(setup2['token'], channelId1, setup3['u_id'])
def test_channel_removeowner_unauthorized_user(setup1, setup2, setup3): data = getData() reset_channels() ''' Creates a public channel (Admin: user1) ''' channelsCreate1 = channels_create(setup1['token'], "Public Channel", True) channelId1 = channelsCreate1['channel_id'] ''' Error when not-an-owner tries to remove another user as an owner''' with pytest.raises(AccessError, match=r".*"): channel_removeowner(setup2['token'], channelId1, setup1['u_id'])
def channel_id1(request, reg1, reg2, reg3, reg4): data = getData() #user1 create a public channel channel_id_1 = channels_create(reg1['token'], 'channel1', True)['channel_id'] #user2 joins the public channel channel_join(reg2['token'], channel_id_1) #user4 joins channel 1 channel_join(reg4['token'], channel_id_1) return channel_id_1
def test_channel_leave_success_private(setup1, setup2, setup3): data = getData() reset_channels() ''' Creates a private channel (Admin: user1) ''' channelsCreate2 = channels_create(setup1['token'], "Private Channel", False) channelId2 = channelsCreate2['channel_id'] ''' Leave private channel''' channel_leave(setup1['token'], channelId2) ''' If above line was succesful, channel_list should return an empty list ''' assert channels_list(setup1['token']) == {'channels': []}
def test_channel_leave_success_public(setup1, setup2, setup3): data = getData() reset_channels() # Creates public channel (Admin: user1) channelsCreateDict1 = channels_create(setup1['token'], "Public Channel", True) channelId1 = channelsCreateDict1['channel_id'] ''' Leave public channel ''' channel_leave(setup1['token'], channelId1) ''' If above line was successful, channel_list should return an empty list ''' assert channels_list(setup1['token']) == {'channels': []}
def test_channel_messages_unauthorized(setup1, setup2, setup3): data = getData() reset_channels() # Creates public channel (Admin: user1) channelsCreateDict1 = channels_create(setup1['token'], "Public Channel", True) channelId1 = channelsCreateDict1['channel_id'] # not a member of channel with pytest.raises(AccessError): channel_messages(setup2['token'], channelId1, 1)
def test_channel_invite_already_member(setup1, setup2, setup3): data = getData() reset_channels() ''' Creates a public channel (Admin: user1) ''' channelsCreate1 = channels_create(setup1['token'], "Public Channel", True) channelId1 = channelsCreate1['channel_id'] channel_invite(setup1['token'], channelId1, setup2['u_id']) ''' Error user trying to invite is already a member of channel''' with pytest.raises(ValueError_http, match=r".*"): channel_invite(setup1['token'], channelId1, setup2['u_id'])
def test_channel_removeowner_yourself(setup1, setup2, setup3): data = getData() reset_channels() ''' Creates a public channel (Admin: user1) ''' channelsCreate1 = channels_create(setup1['token'], "Public Channel", True) channelId1 = channelsCreate1['channel_id'] ''' User1 removes attempts to remove themself as an owner ''' ''' (Assumption) It is impossible to remove yourself as an owner (if you are the only owner) ''' with pytest.raises(ValueError_http, match=r".*"): channel_removeowner(setup1['token'], channelId1, setup1['u_id'])
def test_channel_messages_no_channel(setup1, setup2, setup3): data = getData() reset_channels() # Creates public channel (Admin: user1) channelsCreateDict1 = channels_create(setup1['token'], "Public Channel", True) channelId1 = channelsCreateDict1['channel_id'] # channel doesnt exist with pytest.raises(ValueError_http): channel_messages(setup1['token'], -1, 10)
def user_profile_setemail(token, email): data = getData() #'''Email entered is not a valid email''' if not re.match(r"[^@]+@[^@]+\.[^@]+", email): raise ValueError_http("Invalid email") # if getUserByEmail(email) != None: for user in data['users']: if user['email'] == email: raise ValueError_http( "Email address is already being used by another user") found_user = getUserFromToken(token) found_user['email'] = email return ({})
def test_channel_messages_no_message(setup1, setup2, setup3): data = getData() reset_channels() # Creates public channel (Admin: user1) channelsCreateDict1 = channels_create(setup1['token'], "Public Channel", True) channelId1 = channelsCreateDict1['channel_id'] assert channel_messages(setup1['token'], channelId1, 0) == { 'messages': [], 'start': 0, 'end': 0 }
def test_channel_messages_start_equal(setup1, setup2, setup3): data = getData() reset_channels() # Creates public channel (Admin: user1) channelsCreateDict1 = channels_create(setup1['token'], "Public Channel", True) channelId1 = channelsCreateDict1['channel_id'] message_send(setup1['token'], channelId1, 'sendmessage') # start is equal to total messages with pytest.raises(ValueError_http): channel_messages(setup1['token'], channelId1, 1)
def test_channel_addowner_already_owner(setup1, setup2, setup3): data = getData() reset_channels() ''' Creates a public channel (Admin: user1) ''' channelsCreate1 = channels_create(setup1['token'], "Public Channel", True) channelId1 = channelsCreate1['channel_id'] ''' User2 joins the channel ''' channel_join(setup2['token'], channelId1) ''' Adds user2 as owner of "Public Channel" ''' channel_addowner(setup1['token'], channelId1, setup2['u_id']) ''' Error when trying to add owner that is already an owner ''' with pytest.raises(ValueError_http, match=r".*"): channel_addowner(setup1['token'], channelId1, setup2['u_id'])
def test_channel_removeowner_no_channel(setup1, setup2, setup3): data = getData() reset_channels() ''' Creates a public channel (Admin: user1) ''' channelsCreate1 = channels_create(setup1['token'], "Public Channel", True) channelId1 = channelsCreate1['channel_id'] ''' User2 joins the channel ''' channel_join(setup2['token'], channelId1) ''' Adds user2 as owner of "Public Channel" ''' channel_addowner(setup1['token'], channelId1, setup2['u_id']) ''' Error when channel does not exist ''' with pytest.raises(ValueError_http, match=r".*"): channel_removeowner(setup1['token'], -1, setup2['u_id'])
def test_channel_invite_success(setup1, setup2, setup3): data = getData() reset_channels() ''' Creates a public channel (Admin: user1) ''' channelsCreate1 = channels_create(setup1['token'], "Public Channel", True) channelId1 = channelsCreate1['channel_id'] channel_invite(setup1['token'], channelId1, setup2['u_id']) assert channels_list(setup2['token']) == { 'channels': [{ 'channel_id': channelId1, 'name': 'Public Channel', }] }
def test_channel_join_success_admin(setup1, setup2, setup3): data = getData() reset_channels() ''' Creates a public channel (Admin: user1) ''' channelsCreate1 = channels_create(setup1['token'], "Public Channel", True) channelId1 = channelsCreate1['channel_id'] ''' Join public channel ''' channel_join(tokenize('*****@*****.**'), channelId1) assert channels_list(setup1['token']) == { 'channels': [{ 'channel_id': channelId1, 'name': "Public Channel", }] }
def test_channels_create_success_private(setup1, setup2, setup3): data = getData() reset_channels() ''' valid name ''' validName2 = "anothername" ''' Creating a private channel ''' channelsCreate2 = channels_create(setup1['token'], validName2, False) channelId2 = channelsCreate2['channel_id'] ''' If the above was successful, it will display the channel when calling channels_listall''' assert channels_listall(setup1['token']) == { 'channels': [{ 'channel_id': channelId2, 'name': validName2 }] }
def search(token, query_str): data = getData() returnMessage = [] u_id = getUidFromToken(token) # condition for query_str is an empty string if query_str == '': return [] # search for messages with query_str and add to returnMessage for channels in data['channel']: if u_id in channels['all_members']: for msg in channels['messages']: if re.search(query_str.lower(), msg['message'].lower()): returnMessage.append(msg) # print(returnMessage) return returnMessage
def test_channels_list_one_channel(setup1, setup2, setup3): data = getData() reset_channels() ''' Creates a public channel (channel1) (Admin: user1) ''' channelsCreate1 = channels_create(setup1['token'], "Public Channel", True) channelId1 = channelsCreate1['channel_id'] assert channels_list(setup1['token']) == { 'channels': [{ 'channel_id': channelId1, 'name': 'Public Channel', }] } # Passing in token 2 will return empty list assert channels_list(setup2['token']) == {'channels': []}
def test_channels_create_success_public(setup1, setup2, setup3): data = getData() reset_channels() ''' valid name ''' validName1 = "validname" ''' Creating a public channel ''' channelsCreate1 = channels_create(setup1['token'], validName1, True) channelId1 = channelsCreate1['channel_id'] ''' Confirm that created channel is public by attempting to add unauthorized user ''' channel_join(setup2['token'], channelId1) ''' If the above was successful, it will display the channel when calling channels_listall ''' assert channels_listall(setup1['token']) == { 'channels': [{ 'channel_id': channelId1, 'name': validName1, }] }
def users_all(token): data = getData() foundUser = getUserFromToken(token) all_users = [] for user in data['users']: user_dic = { 'u_id': user['u_id'], 'email': user['email'], 'name_first': user['name_first'], 'name_last': user['name_last'], 'handle_str': user['handle_str'], 'profile_img_url': user['profile_img_url'] } all_users.append(user_dic) return { 'users': all_users, }