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
Example #4
0
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')
Example #7
0
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)
Example #9
0
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)
Example #10
0
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)
Example #12
0
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)
Example #13
0
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)
Example #15
0
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')
Example #23
0
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')
Example #25
0
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)
Example #26
0
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)
Example #27
0
def test_message_pin_invalid_message_id():
    a_token = login('*****@*****.**', 'pass123456')[1]
    with pytest.raises(HTTPError):
        message_pin(a_token, 35)
    logout(a_token)
Example #28
0
def test_message_unreact_invalid_react():
    a_token = login('*****@*****.**', 'pass123456')[1]

    with pytest.raises(HTTPError):
        message_unreact(a_token, 0, 2)
    logout(a_token)
Example #29
0
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)