Example #1
0
def test_login():
    #normal functioning
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    assert login("*****@*****.**", "12345678") == user_info
    save(clear_data())

    # Email entered is not a valid email
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    with pytest.raises(Value_Error):
        login("minglang_gmail.com", "12345678")
    save(clear_data())

    # Email entered is not a valid email
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    with pytest.raises(Value_Error):
        login("minglang@gmailcom", "12345678")
    save(clear_data())

    # Password is not correct
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    with pytest.raises(Value_Error):
        login("*****@*****.**", "87654321")
    save(clear_data())

    # Email entered does not belong to a user
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    with pytest.raises(Value_Error):
        login("*****@*****.**", "12345678")
    save(clear_data())
Example #2
0
def test_sethandle():
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    sethandle(user_info['token'], 'lol')
    assert profile(user_info['token'], user_info['u_id']) == {
        'email': "*****@*****.**",
        'name_first': "minglang",
        'name_last': "xie",
        'handle_str': "lol",
        'profile_img_url': '/user_image?file=default.jpg'
    }
    save(clear_data())

    # handle is already used by another user
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    sethandle(user_info['token'], 'lol')
    with pytest.raises(Value_Error):
        sethandle(user_info['token'], 'lol')
    save(clear_data())

    # handle_str must be between 3 and 20 characters
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    with pytest.raises(Value_Error):
        sethandle(user_info['token'], 'ab')
    save(clear_data())

    # handle_str must be between 3 and 20 characters
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    with pytest.raises(Value_Error):
        sethandle(user_info['token'], 'minglang' * 20)
    save(clear_data())
Example #3
0
def test_standup_start_send():
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    create(user_info1['token'], 'lol', True)
    finish_time = standup_start(user_info1['token'], 0, 10)
    standup_send(user_info1['token'], 0, "hi")
    standup_send(user_info1['token'], 0, "lol")

    data = getData()
    assert (len(data['messages']) == 1
            and data['messages'][0]['time_created'].replace(
                tzinfo=timezone.utc).timestamp() == finish_time['time_finish'])
    # An active standup is currently running in this channel
    with pytest.raises(Value_Error):
        finish_time = standup_start(user_info1['token'], 0, 10)

    # Channel ID: is not a valid channel
    with pytest.raises(Value_Error):
        finish_time = standup_start(user_info1['token'], 1, 10)

    # standup_send: Channel ID: is not a valid channel
    with pytest.raises(Value_Error):
        standup_send(user_info1['token'], 1, "hi")

    # standup_send: Message is more than 1000 characters
    with pytest.raises(Value_Error):
        standup_send(user_info1['token'], 0, "hi" * 1000)

    # The authorised user is not a member of the channel that the message is within
    with pytest.raises(AccessError):
        finish_time = standup_start(user_info2['token'], 0, 10)

    # standup_send: The authorised user is not a member of the channel that the message is within
    with pytest.raises(AccessError):
        standup_send(user_info2['token'], 0, "hi")

    save(clear_data())

    # standup_send: An active standup is not currently running in this channel
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    create(user_info1['token'], 'lol', True)

    # The authorised user is not a member of the channel that the message is within
    with pytest.raises(Value_Error):
        standup_send(user_info1['token'], 0, "hi")

    save(clear_data())
Example #4
0
def test_join():
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    create(user_info1['token'], 'lol', True)
    join(user_info2['token'], 0)

    data = getData()
    assert len(data['channels_list'][0]['members']) == 2

    # nothing change if join the same ppl
    join(user_info2['token'], 0)
    data = getData()
    assert len(data['channels_list'][0]['members']) == 2

    # Channel ID is not a valid channel
    leave(user_info2['token'], 0)
    with pytest.raises(Value_Error):
        join(user_info2['token'], 1)

    # a private channel can only be joined by invitation
    create(user_info1['token'], 'lol', False)
    with pytest.raises(AccessError):
        join(user_info2['token'], 1)
    save(clear_data())
Example #5
0
def test_message_edit():
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "321654", "Frank", "Li")
    user_info3 = register("*****@*****.**", "456789", "Frank", "Li")
    create(user_info1['token'], 'lol', True)
    invite(user_info1['token'], 0, user_info2['u_id'])
    send(user_info2['token'], 0, "first message")

    edit(user_info1['token'], 0, "new first message")
    data = getData()
    assert (data['messages'][0]['message'] == "new first message")

    edit(user_info2['token'], 0, "second new first message")
    data = getData()
    assert (data['messages'][0]['message'] == "second new first message")

    # a normal member who doesn't send message wants to edit it
    with pytest.raises(AccessError):
        edit(user_info3['token'], 0, "not possible")

    # a member in channel but not the owner who doesn't send message wants to edit it
    invite(user_info1['token'], 0, user_info3['u_id'])
    with pytest.raises(AccessError):
        edit(user_info3['token'], 0, "not possible")

    # now member 3 is a admin
    data = getData()
    data['users'][2]['permission'] = 2
    edit(user_info1['token'], 0, "final message")
    data = getData()
    assert (data['messages'][0]['message'] == "final message")
    save(clear_data())
Example #6
0
def test_message_react():
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    create(user_info1['token'], 'lol', True)
    send(user_info1['token'], 0, "first message")
    react(user_info1['token'], 0, 1)

    data = getData()
    assert len(data['messages'][0]['reacts'][0]['u_ids']) == 1

    # sencond user create a channel and send a msg
    create(user_info2['token'], 'lol', True)
    send(user_info2['token'], 1, "second message")

    data = getData()
    assert len(data['messages']) == 2

    # Not a valid message within a channel that the authorised user has joined
    with pytest.raises(Value_Error):
        react(user_info1['token'], 1, 1)

    # Not a valid react_id
    with pytest.raises(Value_Error):
        react(user_info2['token'], 1, 0)

    # Message already contains active react with same react_id
    react(user_info2['token'], 1, 1)
    data = getData()
    assert len(data['messages'][1]['reacts'][0]['u_ids']) == 1

    with pytest.raises(Value_Error):
        react(user_info2['token'], 1, 1)

    save(clear_data())
Example #7
0
def test_standup_active():
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    create(user_info1['token'], 'lol', True)
    finish_time = standup_start(user_info1['token'], 0, 1)
    standup_send(user_info1['token'], 0, "hi")
    standup_send(user_info1['token'], 0, "lol")

    data = getData()
    assert standup_active(user_info1, 0) == {
        'is_active': True,
        'time_finish': finish_time['time_finish']
    }

    sleep(1)
    assert standup_active(user_info1, 0) == {
        'is_active': False,
        'time_finish': finish_time['time_finish']
    }

    # Channel ID: is not a valid channel
    with pytest.raises(Value_Error):
        standup_active(user_info1, 1)

    save(clear_data())
Example #8
0
def test_logout():
    # normal functioning
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    login("*****@*****.**", "12345678")
    assert logout(user_info['token']) == {'is_success': True}
    save(clear_data())
    # logout without login
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    assert logout(user_info['token']) == {'is_success': False}
    save(clear_data())
    # login, logout, then logout again
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    login("*****@*****.**", "12345678")

    assert logout(user_info['token']) == {'is_success': True}
    assert logout(user_info['token']) == {'is_success': False}

    save(clear_data())
Example #9
0
def test_detail():
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    create(user_info1['token'], 'lol', True)
    create(user_info2['token'], 'wtf', True)
    # check channel_deatil
    assert details(user_info1['token'], 0) == {
        'name':
        'lol',
        'owner_members': [{
            'u_id': user_info1['u_id'],
            'profile_img_url': '/user_image?file=default.jpg',
            'name_first': "minglang",
            'name_last': "xie"
        }],
        'all_members': [{
            'u_id': user_info1['u_id'],
            'profile_img_url': '/user_image?file=default.jpg',
            'name_first': "minglang",
            'name_last': "xie"
        }],
    }
    save(clear_data())

    # Channel ID is not a valid channel
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    create(user_info1['token'], 'lol', True)
    with pytest.raises(Value_Error):
        details(user_info1['token'], 1)
    save(clear_data())

    # Authorised user is not a member of channel with channel_id
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    create(user_info1['token'], 'lol', True)
    with pytest.raises(AccessError):
        details(user_info2['token'], 0)
    save(clear_data())
Example #10
0
def test_password_request_and_reset():
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    reset_code = passwordreset_request("*****@*****.**")
    passwordreset_reset(reset_code['reset_code'], '87654321')
    assert login("*****@*****.**", "87654321") == user_info
    save(clear_data())

    # Password entered is not a valid password
    register("*****@*****.**", "12345678", "minglang", "xie")
    reset_code = passwordreset_request("*****@*****.**")
    with pytest.raises(Value_Error):
        passwordreset_reset(reset_code['reset_code'], '123')
    save(clear_data())

    # reset_code is not a valid reset code
    register("*****@*****.**", "12345678", "minglang", "xie")
    reset_code = passwordreset_request("*****@*****.**")
    with pytest.raises(Value_Error):
        passwordreset_reset('aaaaa', '87654321')
    save(clear_data())
Example #11
0
def test_all_user():
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    assert all_user(user_info['token']) == {
        'users': [{
            'u_id': user_info['u_id'],
            'email': "*****@*****.**",
            'name_first': "minglang",
            'name_last': "xie",
            'handle_str': "minglangxie",
            'profile_img_url': '/user_image?file=default.jpg'
        }]
    }
    save(clear_data())
Example #12
0
def test_setemail():
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    setemail(user_info['token'], '*****@*****.**')
    assert profile(user_info['token'], user_info['u_id']) == {
        'email': "*****@*****.**",
        'name_first': "minglang",
        'name_last': "xie",
        'handle_str': "minglangxie",
        'profile_img_url': '/user_image?file=default.jpg'
    }
    save(clear_data())

    # Email address is already being used by another user
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    with pytest.raises(Value_Error):
        setemail(user_info['token'], '*****@*****.**')
    save(clear_data())

    # Email entered is not a valid email
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    with pytest.raises(Value_Error):
        setemail(user_info['token'], 'w17a.credible4_gmail.com')
    save(clear_data())
Example #13
0
def test_message_unpin():
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    create(user_info1['token'], 'lol', True)
    send(user_info1['token'], 0, "first message")
    pin(user_info1['token'], 0)
    unpin(user_info1['token'], 0)
    data = getData()
    assert data['messages'][0]['is_pinned'] == False

    # Message_Id is not a valid message
    with pytest.raises(Value_Error):
        unpin(user_info1['token'], 1)

    # Message with ID message_id already pinned
    with pytest.raises(Value_Error):
        unpin(user_info1['token'], 0)

# The user is not an admin
    with pytest.raises(Value_Error):
        unpin(user_info2['token'], 0)

    save(clear_data())

    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    create(user_info2['token'], 'lol', True)
    send(user_info2['token'], 0, "first message")

    # The authorised user is not a member of the channel that the message is within
    with pytest.raises(AccessError):
        unpin(user_info1['token'], 0)

    save(clear_data())
Example #14
0
def test_message_unreact():
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    create(user_info1['token'], 'lol', True)
    send(user_info1['token'], 0, "first message in first channel")
    react(user_info1['token'], 0, 1)

    data = getData()
    assert len(data['messages'][0]['reacts'][0]['u_ids']) == 1

    # sencond user create a channel and send a msg and react by itself
    create(user_info2['token'], 'lol', True)
    send(user_info2['token'], 1, "first message in second channel")
    react(user_info2['token'], 1, 1)

    data = getData()
    assert len(data['messages']) == 2

    # Not a valid message within a channel that the authorised user has joined
    with pytest.raises(Value_Error):
        unreact(user_info1['token'], 1, 1)

    # Not a valid react_id
    with pytest.raises(Value_Error):
        unreact(user_info2['token'], 1, 0)

    # Message with ID message_id does not contain an active React with ID react_id
    send(user_info2['token'], 1, "third message")
    data = getData()
    assert len(data['messages'][2]['reacts'][0]['u_ids']) == 0

    with pytest.raises(Value_Error):
        unreact(user_info2['token'], 2, 1)

    # pass test
    unreact(user_info2['token'], 1, 1)
    data = getData()
    assert len(data['messages'][1]['reacts'][0]['u_ids']) == 0

    save(clear_data())
Example #15
0
def test_search():
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    create(user_info1['token'], 'lol', True)
    send(user_info1['token'], 0, "first message")
    send(user_info1['token'], 0, "second message")

    messages = search(user_info1['token'], 'mess')
    assert len(messages['messages']) == 2

    messages = search(user_info1['token'], 'p')
    assert len(messages['messages']) == 0

    messages = search(user_info1['token'], '')
    assert len(messages['messages']) == 0

    messages = search(user_info1['token'], 'second')
    assert len(messages['messages']) == 1

    save(clear_data())
Example #16
0
def test_addowner_and_remove():
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    create(user_info1['token'], 'lol', True)
    join(user_info2['token'], 0)

    addowner(user_info1['token'], 0, user_info2['u_id'])
    data = getData()
    assert len(data['channels_list'][0]['owners']) == 2

    removeowner(user_info1['token'], 0, user_info2['u_id'])
    data = getData()
    assert len(data['channels_list'][0]['owners']) == 1

    # Channel ID is not a valid channel
    with pytest.raises(Value_Error):
        addowner(user_info1['token'], 1, user_info2['u_id'])

    # you don't have the right to access to add owner
    with pytest.raises(AccessError):
        addowner(user_info2['token'], 0, user_info2['u_id'])

    # you don't have the right to access to remove owner
    with pytest.raises(AccessError):
        removeowner(user_info2['token'], 0, user_info2['u_id'])

    # the user id is already an owner
    addowner(user_info1['token'], 0, user_info2['u_id'])
    data = getData()
    assert len(data['channels_list'][0]['owners']) == 2

    with pytest.raises(Value_Error):
        addowner(user_info1['token'], 0, user_info2['u_id'])

    # Channel ID: is not a valid channel
    with pytest.raises(Value_Error):
        removeowner(user_info1['token'], 1, user_info2['u_id'])

    save(clear_data())
Example #17
0
def test_setname():
    # normal functioning
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    setname(user_info['token'], 'li', 'yu')
    assert profile(user_info['token'], user_info['u_id']) == {
        'email': "*****@*****.**",
        'name_first': "li",
        'name_last': "yu",
        'handle_str': "minglangxie",
        'profile_img_url': '/user_image?file=default.jpg'
    }
    save(clear_data())
    # normal functioning with exactly 50 character's last name and first name
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    setname(user_info['token'], 'l' * 50, 'y' * 50)
    assert profile(user_info['token'], user_info['u_id']) == {
        'email': "*****@*****.**",
        'name_first': 'l' * 50,
        'name_last': 'y' * 50,
        'handle_str': "minglangxie",
        'profile_img_url': '/user_image?file=default.jpg'
    }
    save(clear_data())

    # name_first has no length
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    with pytest.raises(Value_Error):
        setname(user_info['token'], '', 'yu')
    save(clear_data())

    # name_first is longer than 50 characters in length
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    with pytest.raises(Value_Error):
        setname(user_info['token'], "y" * 51, 'yu')
    save(clear_data())

    # name_last has no length
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    with pytest.raises(Value_Error):
        setname(user_info['token'], 'li', '')
    save(clear_data())

    # name_last has length longer tan 50 characters
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    with pytest.raises(Value_Error):
        setname(user_info['token'], 'li', '')
    save(clear_data())
Example #18
0
def test_uploadphoto():
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    assert profile(user_info['token'], user_info['u_id']) == {
        'email': "*****@*****.**",
        'name_first': "minglang",
        'name_last': "xie",
        'handle_str': "minglangxie",
        'profile_img_url': '/user_image?file=default.jpg'
    }
    uploadphoto(
        user_info['token'],
        'https://assets1.ignimgs.com/2019/04/23/doraemon-story-of-seasons---button-01-1556056822190.jpg',
        0, 0, 720, 720)
    assert profile(user_info['token'], user_info['u_id']) == {
        'email': "*****@*****.**",
        'name_first': "minglang",
        'name_last': "xie",
        'handle_str': "minglangxie",
        'profile_img_url':
        '/user_image?file=' + str(user_info['token']) + '.jpg'
    }
    img_addr = './server/user_image/' + str(user_info['token']) + '.jpg'
    os.remove(img_addr)

    # any of x_start, y_start, x_end, y_end are not within the dimensions of the image at the URL
    with pytest.raises(Value_Error):
        uploadphoto(
            user_info['token'],
            'https://assets1.ignimgs.com/2019/04/23/doraemon-story-of-seasons---button-01-1556056822190.jpg',
            0, 0, 800, 800)

    # img_url is returns an HTTP status other than 200
    with pytest.raises(Value_Error):
        uploadphoto(
            user_info['token'],
            'https://images-na.ssl-images-amazon.com/images/I/71hEb5HHBTL.png',
            0, 0, 512, 512)

    save(clear_data())
Example #19
0
def test_message_sendlater():
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    create(user_info1['token'], 'lol', True)
    sent_time_before = dt.utcnow() - timedelta(minutes=15)
    sent_time_after = dt.utcnow() + timedelta(minutes=15)
    sendlater(user_info1['token'], 0, "first message", sent_time_after)

    data = getData()
    assert (data['messages'][0]['message'] == "first message"
            and data['messages'][0]['time_created'] == sent_time_after)

    # Channel ID: is not a valid channel
    with pytest.raises(Value_Error):
        sendlater(user_info1['token'], 1, "second message", sent_time_after)

    # Message is more than 1000 characters
    with pytest.raises(Value_Error):
        sendlater(user_info1['token'], 0, "second message" * 500,
                  sent_time_after)

    # the authorised user has not joined the channel they are trying to post to
    with pytest.raises(AccessError):
        sendlater(user_info2['token'], 0, "second message", sent_time_after)

    # Time sent is a time in the past
    with pytest.raises(Value_Error):
        sendlater(user_info1['token'], 0, "second message", sent_time_before)

    # if the given time type is not datetime
    sendlater(user_info1['token'], 0, "first message",
              sent_time_after.replace(tzinfo=timezone.utc).timestamp())

    data = getData()
    assert (data['messages'][0]['message'] == "first message"
            and data['messages'][0]['time_created'] == sent_time_after)
    save(clear_data())
Example #20
0
def test_message_remove():
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    create(user_info1['token'], 'lol', True)
    send(user_info1['token'], 0, "first message")
    remove(user_info1['token'], 0)

    data = getData()
    assert len(data['messages']) == 0

    # Message (based on ID) no longer exists
    send(user_info1['token'], 0, "first message")
    remove(user_info1['token'], 0)
    with pytest.raises(Value_Error):
        remove(user_info1['token'], 0)

    # Message with message_id was not sent by the authorised user making this request and The authorised user is not an admin or owner of this channel or the slackr
    send(user_info1['token'], 0, "first message")
    with pytest.raises(Value_Error):
        remove(user_info2['token'], 0)

    save(clear_data())
Example #21
0
def test_message_send():
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    create(user_info1['token'], 'lol', True)
    send(user_info1['token'], 0, "first message")

    data = getData()
    assert data['messages'][0]['message'] == "first message"

    send(user_info1['token'], 0, "second message")
    data = getData()
    assert len(data['messages']) == 2

    # Message is more than 1000 characters
    with pytest.raises(Value_Error):
        send(user_info1['token'], 0, "second message" * 500)

    # the authorised user has not joined the channel they are trying to post to
    with pytest.raises(AccessError):
        send(user_info2['token'], 0, "second message")

    save(clear_data())
Example #22
0
def test_channel_leave():
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    create(user_info1['token'], 'lol', True)
    invite(user_info1['token'], 0, user_info2['u_id'])

    data = getData()
    assert len(data['channels_list'][0]['members']) == 2

    # Channel ID is not a valid channel
    with pytest.raises(Value_Error):
        leave(user_info2['token'], 1)

    leave(user_info2['token'], 0)
    data = getData()
    assert len(data['channels_list'][0]['members']) == 1

    # leave again, and it should have no change
    leave(user_info2['token'], 0)
    data = getData()
    assert len(data['channels_list'][0]['members']) == 1
    save(clear_data())
Example #23
0
def test_channel_messages():
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    create(user_info1['token'], 'lol', True)
    send(user_info1['token'], 0, "first message")
    send(user_info1['token'], 0, "second message")

    channel_message = messages(user_info1['token'], 0, 0)
    assert (len(channel_message['messages'])
            == 2) and (channel_message['start'] == 0
                       and channel_message['end'] == -1)

    channel_message = messages(user_info1['token'], 0, 1)
    assert (len(channel_message['messages'])
            == 1) and (channel_message['start'] == 1
                       and channel_message['end'] == -1)

    edit(user_info1['token'], 0, '')
    channel_message = messages(user_info1['token'], 0, 0)
    assert (len(channel_message['messages'])
            == 1) and (channel_message['start'] == 0
                       and channel_message['end'] == -1)

    # start is greater than or equal to the total number of messages in the channel
    with pytest.raises(Value_Error):
        channel_message = messages(user_info1['token'], 0, 2)

    # Channel ID: is not a valid channel
    with pytest.raises(Value_Error):
        channel_message = messages(user_info1['token'], 1, 0)

    # Authorised user is not a member of channel with channel_id
    with pytest.raises(AccessError):
        channel_message = messages(user_info2['token'], 0, 0)

    save(clear_data())
Example #24
0
def test_channel_invite():
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    user_info3 = register("*****@*****.**", "12345678", "Frank", "Li")

    # channel_id does not refer to a valid channel that the authorised user is part of
    create(user_info1['token'], 'lol', True)
    with pytest.raises(Value_Error):
        invite(user_info1['token'], 2, user_info2['u_id'])

    # u_id does not refer to a valid user
    with pytest.raises(Value_Error):
        invite(user_info1['token'], 0, 4)

    #  AccessError whenthe authorised user is not already a member of the channel
    with pytest.raises(AccessError):
        invite(user_info2['token'], 0, user_info1['u_id'])

    #  AccessError whenthe authorised user is not already a member of the channel
    with pytest.raises(AccessError):
        invite(user_info3['token'], 0, user_info2['u_id'])

    invite(user_info1['token'], 0, user_info2['u_id'])
    data = getData()

    assert {
        'u_id': user_info2['u_id'],
        'profile_img_url': '/user_image?file=default.jpg',
        'name_first': data['users'][user_info2['u_id']]['name_first'],
        'name_last': data['users'][user_info2['u_id']]['name_last']
    } in data['channels_list'][0]['members']

    invite(user_info1['token'], 0, user_info2['u_id'])
    data = getData()
    assert len(data['channels_list'][0]['members']) == 2
    save(clear_data())
Example #25
0
def test_register():
    # normal functioning with one user
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    assert user_info == {'u_id': 0, 'token': generateToken(0)}
    assert login("*****@*****.**", "12345678") == user_info

    # create another user to see if the user successful joined into list
    user_info2 = register("*****@*****.**", "abcd1234", "Yun", "Li")
    assert user_info2 == {'u_id': 1, 'token': generateToken(1)}
    assert login("*****@*****.**", "abcd1234") == user_info2

    data = getData()  # see i the total number of user increased
    assert len(data['users']) == 2
    save(clear_data())

    # the email is invalid
    with pytest.raises(Value_Error):
        register("minglang_gmail.com", "12345", "minglang", "xie")
    save(clear_data())

    # Email address is already being used by another user
    register("*****@*****.**", "12345678", "minglang", "xie")
    with pytest.raises(Value_Error):
        register("*****@*****.**", "23456456", "xie", "minglang")
    save(clear_data())

    # password is below 6 characters characters in length
    with pytest.raises(Value_Error):
        register("*****@*****.**", "12345", "minglang", "xie")
    save(clear_data())

    # name_first is not between 1 and 50 characters in length
    with pytest.raises(Value_Error):
        register("*****@*****.**", "12345678", "Y" * 51, "Li")
    save(clear_data())

    # name_last is not between 1 and 50 characters in length
    with pytest.raises(Value_Error):
        register("*****@*****.**", "12345678", "Yun", "L" * 51)
    save(clear_data())
Example #26
0
def test_profile():
    # normal case
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    assert profile(user_info['token'], user_info['u_id']) == {
        'email': "*****@*****.**",
        'name_first': "minglang",
        'name_last': "xie",
        'handle_str': "minglangxie",
        'profile_img_url': '/user_image?file=default.jpg'
    }
    save(clear_data())
    # complex normal case with repeated user name, capital user name
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    assert profile(user_info['token'], user_info['u_id']) == {
        'email': "*****@*****.**",
        'name_first': "minglang",
        'name_last': "xie",
        'handle_str': "minglangxie",
        'profile_img_url': '/user_image?file=default.jpg'
    }
    user_info2 = register("*****@*****.**", "asdfdsas", "minglang",
                          "xie")
    assert profile(user_info2['token'], user_info2['u_id']) == {
        'email': "*****@*****.**",
        'name_first': "minglang",
        'name_last': "xie",
        'handle_str': "1minglangxie1",
        'profile_img_url': '/user_image?file=default.jpg'
    }
    user_info3 = register("*****@*****.**", "asdfdsas", "MINGLANG", "Xie")
    assert profile(user_info2['token'], user_info3['u_id']) == {
        'email': "*****@*****.**",
        'name_first': "MINGLANG",
        'name_last': "Xie",
        'handle_str': "2minglangxie2",
        'profile_img_url': '/user_image?file=default.jpg'
    }
    save(clear_data())
    # two same name, made second one diff
    user_info = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    assert profile(user_info2['token'], user_info2['u_id']) == {
        'email': "*****@*****.**",
        'name_first': "minglang",
        'name_last': "xie",
        'handle_str': "1minglangxie1",
        'profile_img_url': '/user_image?file=default.jpg'
    }
    save(clear_data())
    # the first name and last name registered is too short, so we need to modify them to make them long enough
    user_info = register("*****@*****.**", "12345678", "m", "x")
    assert profile(user_info['token'], user_info['u_id']) == {
        'email': "*****@*****.**",
        'name_first': "m",
        'name_last': "x",
        'handle_str': "0mx0",
        'profile_img_url': '/user_image?file=default.jpg'
    }
    save(clear_data())
    # complex case, two people who use different first and last name but after cut off to 20 characters, their stirng user name is same, we check is the handle str generateed is different
    user_info = register("*****@*****.**", "12345678", "m" * 20, "x")
    assert profile(user_info['token'], user_info['u_id']) == {
        'email': "*****@*****.**",
        'name_first': "m" * 20,
        'name_last': "x",
        'handle_str': "mmmmmmmmmmmmmmmmmmmm",
        'profile_img_url': '/user_image?file=default.jpg'
    }
    user_info = register("*****@*****.**", "12345678", "m" * 19, "mx")
    assert profile(user_info['token'], user_info['u_id']) == {
        'email': "*****@*****.**",
        'name_first': "m" * 19,
        'name_last': "mx",
        'handle_str': "1mmmmmmmmmmmmmmmmmm1",
        'profile_img_url': '/user_image?file=default.jpg'
    }
    save(clear_data())
    # too short first and last name
    user_info = register("*****@*****.**", "12345678", "m", "x")
    with pytest.raises(Value_Error):
        profile(user_info['token'], 1)
    save(clear_data())
Example #27
0
def test_permission():
    # normal functioning
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    # 3 to 2
    permission(user_info1['token'], user_info2['u_id'], 2)
    data = getData()
    assert data['users'][user_info2['u_id']]['permission'] == 2

    # 2 to 1
    permission(user_info1['token'], user_info2['u_id'], 1)
    data = getData()
    assert data['users'][user_info2['u_id']]['permission'] == 1

    # 1 to 2
    permission(user_info1['token'], user_info2['u_id'], 2)
    data = getData()
    assert data['users'][user_info2['u_id']]['permission'] == 2
    save(clear_data())

    # if a member is able to change other's permission after a he become an a owner,
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    user_info3 = register("*****@*****.**", "12345678", "Yun", "Li")
    # 3 to 1
    permission(user_info1['token'], user_info2['u_id'], 1)
    data = getData()
    assert data['users'][user_info2['u_id']]['permission'] == 1

    # 3 to 1 by new owner
    permission(user_info2['token'], user_info3['u_id'], 1)
    data = getData()
    assert data['users'][user_info3['u_id']]['permission'] == 1

    # 1 to 3 by new owner
    permission(user_info3['token'], user_info1['u_id'], 3)
    data = getData()
    assert data['users'][user_info1['u_id']]['permission'] == 3
    #now he should has no permission to change other's permisssion
    with pytest.raises(Value_Error):
        permission(user_info1['token'], user_info2['u_id'], 2)

    # 1 to 2
    permission(user_info3['token'], user_info1['u_id'], 2)
    data = getData()
    assert data['users'][user_info1['u_id']]['permission'] == 2

    # 1 to 3 by new admin
    permission(user_info1['token'], user_info2['u_id'], 3)
    data = getData()
    assert data['users'][user_info2['u_id']]['permission'] == 3
    # now he should has no permission to change other's permisssion
    with pytest.raises(Value_Error):
        permission(user_info2['token'], user_info3['u_id'], 1)

    save(clear_data())

    # permission_id does not refer to a value permission
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    with pytest.raises(Value_Error):
        permission(user_info1['token'], user_info2['u_id'], 4)
    save(clear_data())

    # u_id does not refer to a valid user
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    with pytest.raises(Value_Error):
        permission(user_info1['token'], 3, 2)
    save(clear_data())

    # The authorised user is not an admin or owner
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    with pytest.raises(Value_Error):
        permission(user_info2['token'], user_info2['u_id'], 2)
    save(clear_data())
Example #28
0
def test_create_list_listall():

    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")

    #check when people join or created no channel
    assert user_channel_list(user_info1['token']) == {'channels': []}
    assert listall(user_info1['token']) == {'channels': []}

    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    create(user_info1['token'], 'lol', True)
    create(user_info2['token'], 'wtf', True)

    # check channel_id and diff ppl create a channel
    assert user_channel_list(user_info1['token']) == {
        'channels': [{
            'channel_id': 0,
            'name': 'lol'
        }]
    }
    assert user_channel_list(user_info2['token']) == {
        'channels': [{
            'channel_id': 1,
            'name': 'wtf'
        }]
    }
    # check channel_list_all
    assert listall(user_info1['token']) == {
        'channels': [{
            'channel_id': 0,
            'name': 'lol'
        }, {
            'channel_id': 1,
            'name': 'wtf'
        }]
    }
    assert listall(user_info1['token']) == listall(user_info2['token'])
    # check channel_deatil
    assert details(user_info1['token'], 0) == {
        'name':
        'lol',
        'owner_members': [{
            'u_id': user_info1['u_id'],
            'profile_img_url': '/user_image?file=default.jpg',
            'name_first': "minglang",
            'name_last': "xie"
        }],
        'all_members': [{
            'u_id': user_info1['u_id'],
            'profile_img_url': '/user_image?file=default.jpg',
            'name_first': "minglang",
            'name_last': "xie"
        }],
    }
    save(clear_data())

    # the token doesn't exist
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    data = getData()
    token = generateToken(len(data['users']))
    with pytest.raises(Value_Error):
        create(token, 'lol', True)
    save(clear_data())

    #check channel_create: the name is longer than 20 character
    user_info1 = register("*****@*****.**", "12345678", "minglang", "xie")
    user_info2 = register("*****@*****.**", "12345678", "minglang",
                          "xie")
    with pytest.raises(Value_Error):
        create(user_info1['token'], 'lol' * 20, True)
    save(clear_data())