Exemple #1
0
def test_edit_valid_owner(users):
    """
    Testing if a single message can be sent, be stored and editted by owner
    """
    user1, user2, chan = users
    message_exp = 'Test 1 test 2 swiggity Swagg'
    message_exp2 = 'This is to stop there being no message in the channel'
    message.message_send(user1['token'], chan['channel_id'], message_exp2)
    message_id = message.message_send(user2['token'], chan['channel_id'],
                                      message_exp)
    message_from_channel = channel.channel_messages(user1['token'],
                                                    chan['channel_id'], 0)

    #Checks that the message was added
    assert message_exp == message_from_channel['messages'][0]['message']
    assert user2['u_id'] == message_from_channel['messages'][0]['u_id']
    assert message_id['message_id'] == message_from_channel['messages'][0][
        'message_id']
    new_message = "This is the new message"
    message.message_edit(user1['token'], message_id['message_id'], new_message)
    new_message_from_channel = channel.channel_messages(
        user1['token'], chan['channel_id'], 0)

    #Checks that the message was changed
    assert new_message == new_message_from_channel['messages'][0]['message']
    assert user2['u_id'] == new_message_from_channel['messages'][0]['u_id']
    assert message_id['message_id'] == new_message_from_channel['messages'][0][
        'message_id']
    other.clear()
Exemple #2
0
def test_edit_no_message(users):
    """
    Tests that a message edit with no message acts as a delete
    """
    user1, user2, chan = users
    message_exp = 'Test 1 test 2 swiggity Swagg'
    message_exp2 = 'This is to stop there being no message in the channel'
    message.message_send(user1['token'], chan['channel_id'], message_exp2)
    message_id = message.message_send(user2['token'], chan['channel_id'],
                                      message_exp)
    message_from_channel = channel.channel_messages(user1['token'],
                                                    chan['channel_id'], 0)

    #Checks that the message was added
    assert message_exp == message_from_channel['messages'][0]['message']
    assert user2['u_id'] == message_from_channel['messages'][0]['u_id']
    assert message_id['message_id'] == message_from_channel['messages'][0][
        'message_id']

    #Uses the function message edit but has the message editted to an empty string
    message.message_edit(user2['token'], message_id['message_id'], '')
    new_message_from_channel = channel.channel_messages(
        user1['token'], chan['channel_id'], 0)

    #Checks that the message was removed
    assert message_exp != new_message_from_channel['messages'][0]['message']
    assert user2['u_id'] != new_message_from_channel['messages'][0]['u_id']
    assert message_id['message_id'] != new_message_from_channel['messages'][0][
        'message_id']
    other.clear()
Exemple #3
0
def test_standup_start_simple():
    clear()
    user1, user2 = register_n_users(2)

    # Create channel and join
    channel = channels_create(user1["token"], "channel1", is_public=True)
    channel_join(user2["token"], channel["channel_id"])

    # Start the standup period
    standup = standup_start(user1["token"], channel["channel_id"], 1)
    assert standup["time_finish"] == round(time() + 1)

    # Send two standup message
    standup_send(user1["token"], channel["channel_id"], "test1")
    standup_send(user2["token"], channel["channel_id"], "test2")

    # Assert the messages are empty
    messages = channel_messages(user1["token"], channel["channel_id"],
                                0)["messages"]
    assert len(messages) == 0

    # Assert the two message has been sent when the standup period finishes
    sleep(2)
    messages = channel_messages(user1["token"], channel["channel_id"],
                                0)["messages"]
    assert len(messages) == 1

    user1_profile = user_profile(user1["token"], user1["u_id"])["user"]
    user1_handle = user1_profile["handle_str"]
    user2_handle = user_profile(user2["token"],
                                user2["u_id"])["user"]["handle_str"]
    assert messages[0][
        "message"] == f"{user1_handle}: test1\n{user2_handle}: test2"
    assert messages[0]["u_id"] == user1_profile["u_id"]
Exemple #4
0
def test_remove_valid_owner(users):
    """
    Testing if a single message can be sent, be stored and removed by owner
    """
    user1, user2, chan = users
    message_exp2 = "Test this is different from message_exp"
    message.message_send(user1["token"], chan['channel_id'], message_exp2)
    message_exp = "Test 1 test 2 swiggity Swagg"
    message_id = message.message_send(user2["token"], chan['channel_id'],
                                      message_exp)
    message_from_channel = channel.channel_messages(user1["token"],
                                                    chan['channel_id'], 0)

    #Checks that the message was added
    assert message_exp == message_from_channel["messages"][0]["message"]
    assert user2["u_id"] == message_from_channel["messages"][0]["u_id"]
    assert message_id["message_id"] == message_from_channel["messages"][0][
        "message_id"]
    message.message_remove(user1["token"], message_id["message_id"])
    new_message_from_channel = channel.channel_messages(
        user1["token"], chan['channel_id'], 0)

    #Checks that the message was removed
    assert message_exp != new_message_from_channel["messages"][0]["message"]
    assert user2["u_id"] != new_message_from_channel["messages"][0]["u_id"]
    assert message_id["message_id"] != new_message_from_channel["messages"][0][
        "message_id"]
    other.clear()
Exemple #5
0
def test_message_react_data():
    _, wenyao_dict, weiqiang_dict, channel1, channel2 = initialise_data()
    # send 2 messages in different channel
    message1 = message_send(wenyao_dict['token'], channel1['channel_id'],
                            "hello1")
    message2 = message_send(weiqiang_dict['token'], channel2['channel_id'],
                            "hello2")
    # react both messages
    message_react(wenyao_dict['token'], message1['message_id'], 1)
    message_react(weiqiang_dict['token'], message2['message_id'], 1)
    messages_detail1 = channel_messages(wenyao_dict['token'],
                                        channel1['channel_id'], 0)
    messages_detail2 = channel_messages(weiqiang_dict['token'],
                                        channel2['channel_id'], 0)
    # check the information returned by channel_message
    assert messages_detail1['messages'][0]['reacts'][0][
        'is_this_user_reacted'] == True
    assert messages_detail1['messages'][0]['reacts'][0]['u_ids'] == [
        wenyao_dict['u_id']
    ]
    assert messages_detail2['messages'][0]['reacts'][0][
        'is_this_user_reacted'] == True
    assert messages_detail2['messages'][0]['reacts'][0]['u_ids'] == [
        weiqiang_dict['u_id']
    ]
def test_channel_messages_more_than_fifty(reset, create_public_channel):
    '''
    Testing sending more than 50 messages
    and checking the function returns only the first 50 (pagination)
    Unfortunately, we have to use a for loop
    '''

    # create a public channel using fixture and return its details and the
    # owner's
    channel_id, owner_info = create_public_channel
    sent_msgs_ids = []
    # for loop to send messages
    # the first message of the channel was sent by hangman bot
    for i in range(50):
        sent_msgs_ids.append(
            message_send(owner_info['token'], channel_id['channel_id'],
                         "message " + str(i)))

    # retrieving message list
    msgs = channel_messages(owner_info['token'], channel_id['channel_id'], 0)

    # asserting start and end are correct
    assert msgs['start'] == 0
    assert msgs['end'] == 50

    # changing the start message to 1
    msgs = channel_messages(owner_info['token'], channel_id['channel_id'], 1)

    # asserting start and end are correct
    assert msgs['start'] == 1
    assert msgs['end'] == -1
def test_react_succesfully():
    clear()
    user_a, user_b = register_n_users(2)
    public_channel_id = channels_create(user_a["token"], "public_channel",
                                        True)["channel_id"]
    # user_b join the channel created by user_a
    channel_join(user_b["token"], public_channel_id)
    message_id = message_send(user_a["token"], public_channel_id,
                              "Nice to see you mate")["message_id"]

    # user_a react to his own message
    message_react(user_a["token"], message_id, 1)

    # Message from the perspective of user_a
    message_a = channel_messages(user_a["token"], public_channel_id,
                                 0)["messages"][0]
    # user_a reacted
    assert message_a["reacts"][0]["is_this_user_reacted"] == True
    assert user_a["u_id"] in message_a["reacts"][0]["u_ids"]

    # Message from the perspective of user_b
    message_b = channel_messages(user_b["token"], public_channel_id,
                                 0)["messages"][0]
    # user_b haven't reacted
    assert message_b["reacts"][0]["is_this_user_reacted"] == False
    # user_b react to the message
    message_react(user_b["token"], message_id, 1)
    message_b = channel_messages(user_b["token"], public_channel_id,
                                 0)["messages"][0]
    assert message_b["reacts"][0]["is_this_user_reacted"] == True
    assert user_b["u_id"] in message_b["reacts"][0]["u_ids"]
Exemple #8
0
def test_message_sendlater_more_channels():
    _, wenyao_dict, _, channel_team1, _ = initialise_data()
    channel_team2 = channels_create(wenyao_dict['token'], "team2", True)
    time_sent = int(time.time())
    time_sent += 3
    message_sendlater(wenyao_dict['token'], channel_team1['channel_id'],
                      "hi there1", time_sent)
    message_sendlater(wenyao_dict['token'], channel_team2['channel_id'],
                      "hi there2", time_sent)
    # check the return value from messages details
    messages_detail1 = channel_messages(wenyao_dict['token'],
                                        channel_team1['channel_id'], 0)
    messages_detail2 = channel_messages(wenyao_dict['token'],
                                        channel_team2['channel_id'], 0)
    assert len(messages_detail1['messages']) == 0
    assert len(messages_detail2['messages']) == 0
    # sleep for 5s
    time.sleep(5)
    messages_detail1 = channel_messages(wenyao_dict['token'],
                                        channel_team1['channel_id'], 0)
    messages_detail2 = channel_messages(wenyao_dict['token'],
                                        channel_team2['channel_id'], 0)
    assert len(messages_detail1['messages']) == 1
    assert len(messages_detail2['messages']) == 1
    assert messages_detail1['messages'][0]['message'] == "hi there1"
    assert messages_detail2['messages'][0]['message'] == "hi there2"
Exemple #9
0
def test_channel_messages_invalid_user(channel_init):
    '''
    test_channel_messages_invalid_user
    '''
    with pytest.raises(AccessError):
        #Test with valid index and channel_id
        channel_messages(channel_init[3]['token'], channel_init[2], 0)
Exemple #10
0
def test_channel_messages_invalid_index(channel_init):
    '''
    test_channel_messages_invalid_index
    '''
    with pytest.raises(InputError):
        #Test with valid user and channel_id
        channel_messages(channel_init[0]['token'], channel_init[2], 1)
Exemple #11
0
def test_channel_messages_invalid_channel(channel_init):
    '''
    test_channel_messages_invalid_channel
    '''
    with pytest.raises(InputError):
        #Test with valid user and index
        channel_messages(channel_init[0]['token'], "", 0)
def test_message_unpin_others_msg(make_users):
    # setting up users and public channel
    user_ab, user_cd = make_users
    new_ch = channels_create(user_ab['token'], 'test_channel_public', True)

    channel_invite(user_ab["token"], new_ch["channel_id"], user_cd["u_id"])

    msg_id0 = message_send(
        user_ab["token"], new_ch["channel_id"],
        "This message by the owner will not be pinned.")["message_id"]
    msg_id1 = message_send(
        user_cd["token"], new_ch["channel_id"],
        "This message from a normal member will be pinned by the owner"
    )["message_id"]

    message_pin(user_ab["token"], msg_id1)

    msg_dict = channel_messages(user_ab["token"], new_ch["channel_id"],
                                0)["messages"]
    assert msg_dict[0]["is_pinned"]
    assert not msg_dict[1]["is_pinned"]

    message_unpin(user_ab["token"], msg_id1)
    assert not channel_messages(user_ab["token"], new_ch["channel_id"],
                                0)["messages"][0]["is_pinned"]
Exemple #13
0
def test_channel_messages_except():
    reset()
    u_id, token = get_user("user1")
    channel_id = channels.channels_create(token, "Example Channel",
                                          True)['channel_id']
    # InputError:
    #   Channel ID is not a valid channel
    # Assumption that 0 is an invalid _id and testing type error
    with pytest.raises(InputError) as e:
        assert channel.channel_messages(token, 0, 0)
    #with pytest.raises(InputError) as e:
    #    assert channel.channel_messages(token,"somestring",0)

    #   Start is greater than the total number of messages in the channel
    # Assuming that the list "messages" contains all the messages in the channel
    #total_messages = len(channel.channel_messages(token,channel_id,u_id)["messages"])

    max_int = sys.maxsize

    with pytest.raises(InputError) as e:
        assert channel.channel_messages(token, channel_id, max_int)

    # Access Error:
    #   Authorised user is not a member of channel with channel_id
    # Create a new user, who is not a member of channel with channel_id
    random_id, random_token = get_user("user2")
    with pytest.raises(AccessError) as e:
        assert channel.channel_messages(random_token, channel_id, 0)
Exemple #14
0
def test_message_sendlater_with_other_messages():
    '''
    tests the message_sendlater functionality in a channel which
    already have messages
    '''
    other.clear()
    send_time = int(time.time()) + 5
    owner = auth.auth_register("*****@*****.**", "password", "Homer",
                               "Simpson")
    channels.channels_create(owner['token'], "channel_1", True)
    channel_2 = channels.channels_create(owner['token'], "channel_1", True)
    message.message_send(owner['token'], channel_2['channel_id'],
                         "test message")
    new_message_id = message.message_sendlater(
        owner['token'], channel_2['channel_id'],
        'this is the first test message', send_time)
    messages = channel.channel_messages(owner['token'],
                                        channel_2['channel_id'], 0)
    assert messages['messages'][0]['message'] == 'test message'
    time.sleep(6)
    later_message = channel.channel_messages(owner['token'],
                                             channel_2['channel_id'], 0)
    assert later_message['messages'][0] == {
        'message_id': new_message_id,
        'u_id': owner['u_id'],
        'message': 'this is the first test message',
        'time_created': send_time,
        'reacts': [],
        'is_pinned': False,
    }
def test_sendlater_single():
    clear()
    # setup
    user = register_n_users(1)
    channel_id = channels_create(user["token"], "name",
                                 is_public=True)["channel_id"]

    # send message with delay
    send_at = int(round(time.time() + 1 * DELAY_SCALE))
    message_sendlater(user["token"], channel_id, "message", send_at)

    # make sure there are now messages
    messages = channel_messages(user["token"], channel_id, start=0)
    assert int(round(time.time())) < send_at, ERR_TOO_SLOW
    assert len(messages["messages"]) == 0

    # wait for the message to be sent
    time.sleep(2)

    # check that the message is there
    messages = channel_messages(user["token"], channel_id, start=0)
    assert len(messages["messages"]) == 1
    assert messages["messages"][0]["message"] == "message"

    # if this fails, there has been a time difference of more than half a second
    # time.time() is a float, and floats shouldn't be compared with ==
    assert messages["messages"][0]["time_created"] - send_at <= 1
Exemple #16
0
def test_standup_send_complex():
    reset_data()
    member1 = auth_register('*****@*****.**', 'helloworld', 'a', 'A')
    member2 = auth_register('*****@*****.**', 'thisisfun', 'b', 'B')
    member3 = auth_register('*****@*****.**', 'iamrobbie', 'c', 'C')
    channel = channels_create(member1['token'], 'Hey Channel', True)
    channel_id = channel['channel_id']
    channel_join(member2['token'], channel_id)
    channel_join(member3['token'], channel_id)
    standup_start(member1['token'], channel_id, 1)
    assert standup_send(member1['token'], channel_id, '1\nSTOP') == {}
    assert standup_send(member2['token'], channel_id, '2\nSTOP') == {}
    assert standup_send(member3['token'], channel_id, '3\nSTOP') == {}
    sleep(1.1)
    tmp = channel_messages(member1['token'], channel_id, 0)
    message = tmp['messages'][0]
    timestamp = message['time_created']
    assert channel_messages(member1['token'], channel_id, 0) == {
        'messages': [
            {
                'message_id': 1,
                'u_id': 1,
                'message': 'aa: 1\nSTOP\nbb: 2\nSTOP\ncc: 3\nSTOP',
                'time_created': timestamp
            },
            ],
        'start': 0,
        'end': -1,
        }
Exemple #17
0
def test_standup_start_complex():
    reset_data()
    member1 = auth_register('*****@*****.**', 'helloworld', 'ARoy', 'Wallace')
    member2 = auth_register('*****@*****.**', 'helloworld', 'BRoy', 'Wallace')
    test_channel = channels_create(member1['token'], 'New Channel', True)
    channel_id = test_channel['channel_id']
    channel_join(member2['token'], channel_id)

    standup_start(member2['token'], channel_id, 1)
    standup_send(member1['token'], channel_id, 'Standup message1')
    standup_send(member2['token'], channel_id, 'Standup message2')
    sleep(1.1)
    tmp = channel_messages(member1['token'], channel_id, 0)
    message = tmp['messages'][0]
    timestamp = message['time_created']
    assert channel_messages(member2['token'], channel_id, 0) == {
        'messages': [
            {
                'message_id': 1,
                'u_id': 2,
                'message': 'aroywallace: Standup message1\nbroywallace: Standup message2',
                'time_created': timestamp
            },
            ],
        'start': 0,
        'end': -1,
        }
def test_channel_messages_start_greater_than_end():
    user_1 = auth_register("*****@*****.**", "12345678", "Devansh",
                           "Kala")
    user_1_u_id = user_1["u_id"]
    user_1_token = user_1["token"]

    user_2 = auth_register("*****@*****.**", "9101112131414", "Jane",
                           "Smith")
    user_2_u_id = user_2["u_id"]
    user_2_token = user_2["token"]

    new_channel = channels_create(user_1_token, "NEWCHANNEL", True)
    new_channel_channel_id = new_channel["channel_id"]
    #user_2 is added to the channel
    channel_invite(user_1_token, new_channel_channel_id, user_2_u_id)

    #user_1 is used to get the start and end of the messages
    new_channel_channel_messages = channel_messages(user_1_token,
                                                    new_channel_channel_id, 0)
    new_channel_message_start = new_channel_channel_messages["start"]
    new_channel_message_end = new_channel_channel_messages["end"]

    #user_2 cannot access messages which are greater than the start + end + 1000
    with pytest.raises(InputError) as e:
        channel_messages(
            user_2_token, new_channel_channel_id,
            new_channel_message_start + new_channel_message_end + 1000)
Exemple #19
0
def test_search_multiple_channels():
    user_info = auth.auth_register('m@gmail', 'sadsad', 'name', 'lastname')
    # Creating the channel
    channels.channels_create(user_info['token'], 'a', True)
    channels.channels_create(user_info['token'], 'b', True)
    # Messaging the channel
    message.message_send(user_info['token'], 1, "hello there my name is John")
    message.message_send(user_info['token'], 2, "hello there my name is John")
    # Finding a timestamp
    tmp = channel.channel_messages(user_info['token'], 1, 0)
    message1 = tmp['messages'][0]
    timestamp1 = message1['time_created']
    tmp2 = channel.channel_messages(user_info['token'], 2, 0)
    message2 = tmp2['messages'][0]
    timestamp2 = message2['time_created']
    # Giving all messages containing the query string
    assert other.search(user_info['token'], "hello") == {
        'messages': [{
            'message_id': 1,
            'u_id': 1,
            'message': 'hello there my name is John',
            'time_created': timestamp1,
        }, {
            'message_id': 2,
            'u_id': 1,
            'message': 'hello there my name is John',
            'time_created': timestamp2,
        }],
    }
Exemple #20
0
def test_timer_messages(users1):
    """
    Testing The correct series of messages is printed in the channel
    """
    user1, chan = users1
    message_exp = "/KAHIO/Question/ A/ 6"
    message_id = message.message_send(user1["token"], chan['channel_id'],
                                      message_exp)
    message_from_channel = channel.channel_messages(user1["token"],
                                                    chan['channel_id'], 0)

    assert message_from_channel["messages"][0]["message"] == "Question"
    assert user1["u_id"] == message_from_channel["messages"][0]["u_id"]
    assert message_id["message_id"] == message_from_channel["messages"][0][
        "message_id"]
    time.sleep(0.4)
    for i in range(0, 5):
        message_from_channel = channel.channel_messages(
            user1["token"], chan['channel_id'], 0)
        assert message_from_channel["messages"][0][
            "message"] == f"The kahoi game has {6-i} seconds remaining"
        assert user1["u_id"] == message_from_channel["messages"][0]["u_id"]

        time.sleep(1)
    time.sleep(1)
    message_from_channel = channel.channel_messages(user1["token"],
                                                    chan['channel_id'], 0)
    message_exp = "Kahio game has ended.\nThe correct answer was a\nNo correct answers"
    assert message_from_channel["messages"][0]["message"] == message_exp
    assert user1["u_id"] == message_from_channel["messages"][0]["u_id"]
    other.clear()
Exemple #21
0
def test_send_answer_valid(users):
    """
    Testing if a single message can be sent and be stored
    """
    user1, user2, chan = users
    message_exp = "/KAHIO/Question/ A/ 10"
    message_id = message.message_send(user1["token"], chan['channel_id'],
                                      message_exp)
    message_from_channel = channel.channel_messages(user1["token"],
                                                    chan['channel_id'], 0)

    assert message_from_channel["messages"][0]["message"] == "Question"
    assert user1["u_id"] == message_from_channel["messages"][0]["u_id"]
    assert message_id["message_id"] == message_from_channel["messages"][0][
        "message_id"]

    message_ans = " A"
    message_id2 = message.message_send(user2["token"], chan['channel_id'],
                                       message_ans)

    time.sleep(11)

    message_from_channel = channel.channel_messages(user1["token"],
                                                    chan['channel_id'], 0)
    assert user1["u_id"] == message_from_channel["messages"][0]["u_id"]
    occured = False
    for cur_message in message_from_channel["messages"]:
        if message_id2["message_id"] == cur_message["message_id"]:
            assert cur_message["u_id"] == user1["u_id"]
            assert cur_message[
                "message"] == "KevinHuang guessed the correct answer"
            occured = True
    assert occured is True
    other.clear()
Exemple #22
0
def test_standup_send_handle():
    """ 
    Tests if standup_start and standup_send works. 
    """
    clear()
    user1 = auth.auth_register("*****@*****.**", "password", "Bilbo", "Baggins")
    channel_dict = channels.channels_create(user1['token'], "test_channel", True)
    user.user_profile_sethandle(user1['token'], 'handle')
    standup.standup_start(user1['token'], channel_dict['channel_id'], 3)
    standup.standup_send(user1['token'], channel_dict['channel_id'], "message1")

    time.sleep(5)
    standup.standup_active(user1['token'], channel_dict['channel_id'])
    
    message_dict = channel.channel_messages(user1['token'], channel_dict['channel_id'], 0)
    
    assert message_dict['messages'][0]['message'] == ("handle: message1")
    user.user_profile_sethandle(user1['token'], 'eren')
    standup.standup_start(user1['token'], channel_dict['channel_id'], 3)
    standup.standup_send(user1['token'], channel_dict['channel_id'], "message1")

    time.sleep(5)
    standup.standup_active(user1['token'], channel_dict['channel_id'])
    
    message_dict = channel.channel_messages(user1['token'], channel_dict['channel_id'], 0)
    assert message_dict['messages'][0]['message'] == ("eren: message1")
Exemple #23
0
def test_send_answer_incorrect(users):
    """
    Testing if a single message can be sent and be stored
    """
    user1, user2, chan = users
    message_exp = "/KAHIO/Question/ A/ 1"
    message_id = message.message_send(user1["token"], chan['channel_id'],
                                      message_exp)
    message_from_channel = channel.channel_messages(user1["token"],
                                                    chan['channel_id'], 0)

    assert message_from_channel["messages"][0]["message"] == "Question"
    assert user1["u_id"] == message_from_channel["messages"][0]["u_id"]
    assert message_id["message_id"] == message_from_channel["messages"][0][
        "message_id"]

    message_ans = " b"
    message_id2 = message.message_send(user2["token"], chan['channel_id'],
                                       message_ans)

    time.sleep(2)

    message_from_channel = channel.channel_messages(user1["token"],
                                                    chan['channel_id'], 0)
    message_exp = "Kahio game has ended.\nThe correct answer was a\nNo correct answers"
    assert message_from_channel["messages"][0]["message"] == message_exp
    assert user1["u_id"] == message_from_channel["messages"][0]["u_id"]
    bling = True
    for cur_message in message_from_channel["messages"]:
        if message_id2["message_id"] == cur_message["message_id"]:
            assert cur_message["u_id"] == user2["u_id"]
            assert cur_message["message"] == " b"
            bling = False
    assert bling is False
    other.clear()
Exemple #24
0
def test_hangman():
    ''' Tests hangman game (just for coverage) '''
    clear()
    user = auth_register('*****@*****.**', 'password', 'Admin', 'User')
    channel = channels_create(user['token'], 'Channel', True)
    # Hangman game not started
    message_send(user['token'], channel['channel_id'], '/guess A')
    messages = channel_messages(user['token'], channel['channel_id'], 0)['messages']
    assert len(messages) == 2
    # Hangman game already started (doesn't raise Exception, just sends a message
    # saying game already in progress, and displays the current game)
    message_send(user['token'], channel['channel_id'], '/hangman start')
    messages = channel_messages(user['token'], channel['channel_id'], 0)['messages']
    assert len(messages) == 4
    message_send(user['token'], channel['channel_id'], '/hangman start')
    messages = channel_messages(user['token'], channel['channel_id'], 0)['messages']
    assert len(messages) == 7
    # Invalid message format
    message_send(user['token'], channel['channel_id'], '/guess')
    messages = channel_messages(user['token'], channel['channel_id'], 0)['messages']
    assert len(messages) == 9
    # Can't really test hangman guesses (esp win condition), so..
    for _ in range(5):
        message_send(user['token'], channel['channel_id'], '/guess z')
        message_send(user['token'], channel['channel_id'], '/guess Z')
        message_send(user['token'], channel['channel_id'], '/guess hellowolrd')
Exemple #25
0
def test_bot_message_parser_prune():
    ''' Message prune tests '''
    clear()
    # Check messages have been deleted - and bot sends a temporary message (10s)
    f_owner = auth_register('*****@*****.**', 'password', 'Admin', 'User')
    channel = channels_create(f_owner['token'], 'Channel', True)
    message_send(f_owner['token'], channel['channel_id'], 'Hello, World!')
    # Invalid commands should just display error, not raise exceptions
    message_send(f_owner['token'], channel['channel_id'], '/prune 5x')
    # Flockr owner sends two messages, bot adds one
    messages = channel_messages(f_owner['token'], channel['channel_id'], 0)['messages']
    assert len(messages) == 3
    # Invalid prune amount (4 maximum including /prune command message)
    message_send(f_owner['token'], channel['channel_id'], '/prune 5')
    # Bot displays error message
    messages = channel_messages(f_owner['token'], channel['channel_id'], 0)['messages']
    assert len(messages) == 5
    # Successful prune
    message_send(f_owner['token'], channel['channel_id'], '/prune 6')
    messages = channel_messages(f_owner['token'], channel['channel_id'], 0)['messages']
    assert len(messages) == 1
    # Bot message should be automatically removed after 10 seconds
    time.sleep(13)
    messages = channel_messages(f_owner['token'], channel['channel_id'], 0)['messages']
    assert len(messages) == 0
Exemple #26
0
def test_message_prune_valid():
    ''' Valid test cases for message prune (function) '''
    clear()
    # Register users, create channel and users join
    f_owner = auth_register('*****@*****.**', 'password', 'Admin', 'User')
    c_owner = auth_register('*****@*****.**', 'password', 'Chantelle', 'Owner')
    r_user = auth_register('*****@*****.**', 'password', 'Random', 'User')

    channel = channels_create(c_owner['token'], 'Channel', True)
    channel_join(r_user['token'], channel['channel_id'])
    channel_join(f_owner['token'], channel['channel_id'])

    # Send 3 dummy messages
    message_send(f_owner['token'], channel['channel_id'], 'Message 1')
    message_send(c_owner['token'], channel['channel_id'], 'Message 2')
    message_send(r_user['token'], channel['channel_id'], 'Message 3')
    messages = channel_messages(r_user['token'], channel['channel_id'], 0)['messages']
    assert len(messages) == 3

    # Valid pruning from Flockr owner
    message_prune(f_owner['token'], channel['channel_id'], 3)
    messages = channel_messages(r_user['token'], channel['channel_id'], 0)['messages']
    assert len(messages) == 0

    # Send 3 dummy messages
    message_send(f_owner['token'], channel['channel_id'], 'Message 1')
    message_send(c_owner['token'], channel['channel_id'], 'Message 2')
    message_send(r_user['token'], channel['channel_id'], 'Message 3')
    messages = channel_messages(r_user['token'], channel['channel_id'], 0)['messages']
    assert len(messages) == 3

    # Valid pruning from Channel owner
    message_prune(c_owner['token'], channel['channel_id'], 3)
    messages = channel_messages(c_owner['token'], channel['channel_id'], 0)['messages']
    assert len(messages) == 0
Exemple #27
0
def test_user_remove_messages_removed(
        reset, create_public_channel, make_user_cd):
    '''
    Testing if the users messages are removed
    '''
    # creating a public channel
    channel_id, owner_info = create_public_channel

    # creating user
    user_info = make_user_cd
    # joining and sending a message
    channel_join(user_info['token'], channel_id['channel_id'])
    message_send(user_info['token'], channel_id['channel_id'], 'HelloWorld')
    print(
        channel_messages(
            owner_info['token'],
            channel_id['channel_id'],
            start=0))

    # removing user
    user_remove(owner_info['token'], user_info['u_id'])
    # should be empty
    messages = channel_messages(
        owner_info['token'],
        channel_id['channel_id'],
        start=0)
    assert len(messages['messages']) == 1
Exemple #28
0
def test_invalid_channel_id_messages():
    '''test for invalid channel id'''
    reset_data()
    owner = auth_register("*****@*****.**", "avengers", "Natasha",
                          "Romanova")

    with pytest.raises(InputError):
        channel.channel_messages(owner['token'], 8333, 0)
Exemple #29
0
def test_channel_messages_invalid_start():
    """Tests passing an invalid start into channel_messages """
    clear()
    new_user = auth_register("*****@*****.**", "maccas19201", "Travis",
                             "Scott")
    new_channel = channels_create(new_user["token"], "Halloween Sesh", False)
    with pytest.raises(InputError):
        channel_messages(new_user["token"], new_channel["channel_id"], -1)
Exemple #30
0
def test_access_error(initial_users, initial_msg):
    # access error when Authorised user is not 
    # a member of channel with channel_id
    with pytest.raises(AccessError):
        assert channel.channel_messages(users[2]['token'], channels[0]['channel_id'], 0)
    # access error when given token does not refer to a valid user
    with pytest.raises(AccessError):
        assert channel.channel_messages('invalid_token', channels[0]['channel_id'], 0)