def test_login_multiple_users(reset): reg_token = register('*****@*****.**', 'wubbalubba', 'Max', 'Smith')[1] logout(reg_token) log_token = login('*****@*****.**', 'wubbalubba')[1] logout(log_token) reg_token = register('*****@*****.**', 'wubbalubba', 'Bob', 'Smith')[1] logout(reg_token) log_token = login('*****@*****.**', 'wubbalubba')[1] logout(log_token) reg_token = register('*****@*****.**', 'wubbalubba', 'Mike', 'Smith')[1] logout(reg_token) log_token = login('*****@*****.**', 'wubbalubba')[1] logout(log_token)
def test_join_channel_logged_out(reset): _, reg_token = register('*****@*****.**', 'wubbalubba', 'Max', 'Smith') logout(reg_token) owner_token = login('*****@*****.**', 'wubbalubba')[1] channel_id = channels_create(owner_token, 'Maxs Channel', is_public=True) success = logout(owner_token) assert success == True _, reg_token = register('*****@*****.**', 'wubbalubba', 'Mike', 'Smith') logout(reg_token) user_token = login('*****@*****.**', 'wubbalubba')[1] logout(user_token) with pytest.raises(HTTPError): channel_join(user_token, channel_id)
def test_login_user(reset): reg_token = register('*****@*****.**', 'wubbalubba', 'Max', 'Smith')[1] logout(reg_token) login_token = login('*****@*****.**', 'wubbalubba')[1] assert reg_token == login_token success = logout(login_token) assert success == True
def test_message_react_invalid_react(): a_token = login('*****@*****.**', 'pass123456')[1] msg1_id = message_send(a_token, 1, 'a second test message') with pytest.raises(HTTPError): message_react(a_token, msg1_id, 2) logout(a_token)
def test_channels_create_invalid_token(): ''' Testing valid token when attempting to create channel ''' a_token = login('*****@*****.**', 'pass123456')[1] with pytest.raises(HTTPError): channels_create(a_token + 'bad', 'test_name', True)
def test_channels_listall_invalid_token(): ''' Testing invalid token ''' a_token = login('*****@*****.**', 'pass123456')[1] # chuck in invalid token with pytest.raises(HTTPError): channels_listall(a_token + 'invalid')
def test_message_sendlater_badtime(): ''' Testing message send later request with time_sent in the past ''' a_token = login('*****@*****.**', 'pass123456')[1] with pytest.raises(HTTPError): message_sendlater(a_token, 1, 'sending later', time.time() - 0.01) logout(a_token)
def test_user_profile_does_not_exist(): ''' user does not exist ''' j_id, j_token = login("*****@*****.**", "cre4t1v3p4s5") with pytest.raises(HTTPError): user_profile(j_token, j_id + 1) logout(j_token)
def test_message_send_invalid_message(): ''' Testing sending an invalid message ''' a_token = login('*****@*****.**', 'pass123456')[1] with pytest.raises(HTTPError): message_send(a_token, 1, 'a' * 1001) logout(a_token)
def test_message_send_invalid_token(): ''' Testing requesting with invalid token ''' a_token = login('*****@*****.**', 'pass123456')[1] with pytest.raises(HTTPError): message_send(a_token + 'x', 1, 'Hello world') logout(a_token)
def test_channels_create_bad(): ''' Testing invalid inputs (e.g. name too long) will be picked up and thrown error ''' a_token = login('*****@*****.**', 'pass123456')[1] with pytest.raises(HTTPError): channels_create(a_token, 225, True) # for next test logout(a_token)
def test_message_react_already_reacted(): a_token = login('*****@*****.**', 'pass123456')[1] channel_id_priv = channels_create(a_token, 'test_private', False) msg1_id = message_send(a_token, channel_id_priv, 'test message please react') message_react(a_token, msg1_id, 1) with pytest.raises(HTTPError): message_react(a_token, msg1_id, 1) logout(a_token)
def test_message_sendlater_invalid_token(): ''' Testing requesting with invalid token ''' a_token = login('*****@*****.**', 'pass123456')[1] channel_id = channels_create(a_token, 'test_public', True) with pytest.raises(HTTPError): message_sendlater(a_token + 'x', channel_id, 'Hello world', time.time() + 1) logout(a_token)
def test_user_profile_logged_out(): ''' info of a logged out user ''' j_token = login("*****@*****.**", "cre4t1v3p4s5")[1] k_id, k_token = login("*****@*****.**", "IAMAMUSICIAN") logout(k_token) payload = user_profile(j_token, k_id) assert payload == { "u_id": k_id, "email": "*****@*****.**", "name_first": "Ken", "name_last": "Li", "handle_str": "kenli", "profile_img_url": "" } logout(j_token)
def test_message_pin_owner_pins_user(): a_token = login('*****@*****.**', 'pass123456')[1] k_token = register('*****@*****.**', 'kenis123', 'Ken', 'Li')[1] channel_join(k_token, 1) msg1_id = message_send(k_token, 1, 'User message') # user a pins user k's message message_pin(a_token, msg1_id) msg_list = channel_messages(a_token, 1, 0)[0] assert msg_list[0]['is_pinned'] and msg_list[1]['is_pinned'] logout(a_token) logout(k_token)
def test_channels_listall_ok(): ''' Testing listing all channels when there are multiple ''' a_token = login('*****@*****.**', 'pass123456')[1] k_token = login('*****@*****.**', 'kenisaperson')[1] # assert both users get the same list when calling listall payload = channels_listall(a_token) payload2 = channels_listall(k_token) assert payload == payload2 == [{ 'channel_id': 1, 'name': 'test_public', }, { 'channel_id': 2, 'name': 'test_priv', }, { 'channel_id': 3, 'name': 'ken_channel', }] logout(a_token) logout(k_token)
def test_channels_list_ok(): ''' single channel created by admin ''' a_token = login('*****@*****.**', 'pass123456')[1] channels_create(a_token, 'test_public', True) payload = channels_list(a_token) # check now channel list includes the new channel assert payload == [{ 'channel_id': 1, 'name': 'test_public', }] logout(a_token)
def test_user_profile_data_missing(): ''' missing first and last ''' j_token = login("*****@*****.**", "cre4t1v3p4s5")[1] data = json.dumps({"token": j_token}).encode() request = urllib.request.Request( urls.PROFILE_URL, data=data, method='GET', headers={'Content-Type': 'application/json'}) with pytest.raises(HTTPError): urllib.request.urlopen(request)
def test_user_profile(): ''' valid request ''' j_token = login("*****@*****.**", "cre4t1v3p4s5")[1] k_id, k_token = register("*****@*****.**", "IAMAMUSICIAN", "Ken", "Li") payload = user_profile(j_token, k_id) assert payload == { "u_id": k_id, "email": "*****@*****.**", "name_first": "Ken", "name_last": "Li", "handle_str": "kenli", "profile_img_url": "" } logout(j_token) logout(k_token)
def test_channels_list_multiple(): ''' multiple channels (public and private) ''' k_token = register('*****@*****.**', 'kenisaperson', 'Ken', 'Li')[1] a_token = login('*****@*****.**', 'pass123456')[1] # both admin and ken create a channel each channels_create(a_token, 'test_priv', False) channels_create(k_token, 'ken_channel', True) # checking that all channels are added assert channels_list(a_token) == [{ 'channel_id': 1, 'name': 'test_public', }, { 'channel_id': 2, 'name': 'test_priv', }] assert channels_list(k_token) == [{ 'channel_id': 3, 'name': 'ken_channel', }] logout(k_token) logout(a_token)
def test_password_no_match(reset): register('*****@*****.**', 'wubbalubba', 'Max', 'Smith') with pytest.raises(HTTPError): login('*****@*****.**', 'wubbalub')
def test_register_without_logging_out(reset): reg_token = register('*****@*****.**', 'wubbalubba', 'Max', 'Smith')[1] logout(reg_token) log_token = login('*****@*****.**', 'wubbalubba')[1] assert log_token == reg_token reg_token = register('*****@*****.**', 'wubbalubba', 'Max', 'Smith')
def test_message_remove_invalid_token(): a_token = login('*****@*****.**', 'pass123456')[1] with pytest.raises(HTTPError): message_remove(a_token + 'x', 2) logout(a_token)
def test_login_non_user(reset): register('*****@*****.**', 'wubbalubba', 'Max', 'Smith') with pytest.raises(HTTPError): login('*****@*****.**', 'wubbalubba')
def test_message_pin_not_member(): c_token = login('*****@*****.**', 'ssap12652')[1] channel_leave(c_token, 1) with pytest.raises(HTTPError): message_pin(c_token, 1) logout(c_token)
def test_message_pin_already_pinned(): # recall from first test, admin already pinned their own message a_token = login('*****@*****.**', 'pass123456')[1] with pytest.raises(HTTPError): message_pin(a_token, 2) logout(a_token)
def test_message_pin_invalid_message_id(): a_token = login('*****@*****.**', 'pass123456')[1] with pytest.raises(HTTPError): message_pin(a_token, 35) logout(a_token)
def test_message_unreact_invalid_react(): a_token = login('*****@*****.**', 'pass123456')[1] with pytest.raises(HTTPError): message_unreact(a_token, 0, 2) logout(a_token)
def test_message_react_nonexistent_message_id(): a_token = login('*****@*****.**', 'pass123456')[1] with pytest.raises(HTTPError): message_react(a_token, 2222, 1) logout(a_token)