def test_listall():
    'successful case for channels listall'
    reset_workspace()

    user1 = reg_user1()
    user2 = reg_user2()

    create_ch1(user1)

    data = json.dumps({
        'token': user2['token'],
        'name': 'new_channel',
        'is_public': True
    }).encode('utf-8')

    req = urllib.request.urlopen(
        urllib.request.Request(f"{BASE_URL}/channels/create",
                               data=data,
                               headers={'Content-Type': 'application/json'}))

    req = urllib.request.Request(f"{BASE_URL}/channels/listall?token=" +
                                 str(user1['token']))

    req.get_method = lambda: 'GET'

    response = json.load(urllib.request.urlopen(req))['channels']

    expected = {'channel_id': 1, 'name': 'new_channel'}

    expected2 = {'channel_id': 2, 'name': 'new_channel'}

    assert expected in response  #pylint disable = C0305
    assert expected2 in response  #pylint disable = C0305
def test_channel_invite_invalid_channel():
    'Invalid channel case'
    reset_workspace()

    # Register users
    user1 = reg_user1()
    token1 = user1['token']
    user2 = reg_user2()
    u_id2 = user2['u_id']
    # Create channel
    create_ch1(user1)

    # Attempt to invite user2 to an invalid channel
    # Invalid channel_id = 100
    data = json.dumps({
        'token': token1,
        'channel_id': 100,
        'u_id': u_id2
    }).encode('utf-8')

    with pytest.raises(HTTPError):
        urllib.request.urlopen(
            urllib.request.Request(
                f"{BASE_URL}/channel/invite",
                data=data,
                headers={'Content-Type': 'application/json'}))
Exemple #3
0
def test_not_in_channel():
    '''
    Test a user unreacting to a message in a channel they
    are not a part of
    '''
    reset_workspace()

    user1 = reg_user1()
    user2 = reg_user2()
    channel1 = create_ch1(user1)
    msg1 = send_msg1(user1, channel1)
    react_to_msg(user1, msg1, 1)

    data = json.dumps({
        'token': user2['token'],
        'message_id': msg1['message_id'],
        'react_id': 1
    }).encode('utf-8')

    with pytest.raises(HTTPError):
        urllib.request.urlopen(
            urllib.request.Request(
                f"{BASE_URL}/message/unreact",
                data=data,
                headers={'Content-Type': 'application/json'}))
def test_unauthor_member():
    'error case'

    reset_workspace()

    user1 = reg_user1()
    channel1 = create_ch1(user1)
    user2 = reg_user2()

    data = json.dumps({
        'token': user1['token'],
        'channel_id': channel1['channel_id'],
        'length': 30
    }).encode('utf-8')

    req = urllib.request.urlopen(
        urllib.request.Request(  # pylint: disable=W0612
            f"{BASE_URL}/standup/start",
            data=data,
            headers={'Content-Type': 'application/json'}))

    data2 = json.dumps({
        'token': user2['token'],
        'channel_id': channel1['channel_id'],
        'message': 'testing'
    }).encode('utf-8')

    with pytest.raises(HTTPError):
        urllib.request.urlopen(
            urllib.request.Request(
                f"{BASE_URL}/standup/send",
                data=data2,
                headers={'Content-Type': 'application/json'}))  # pylint: disable=C0304
def test_channel_invite_unauthorised():
    'User is not a member case'
    reset_workspace()

    # Register users
    user1 = reg_user1()
    user2 = reg_user2()
    token2 = user2['token']
    user3 = reg_user3()
    u_id3 = user3['u_id']

    # Create channel
    channel_info = create_ch1(user1)
    channel_id = channel_info['channel_id']

    data = json.dumps({
        'token': token2,
        'channel_id': channel_id,
        'u_id': u_id3
    }).encode('utf-8')

    with pytest.raises(HTTPError):
        urllib.request.urlopen(
            urllib.request.Request(
                f"{BASE_URL}/channel/invite",
                data=data,
                headers={'Content-Type': 'application/json'}))
def test_channel_messages_invalid_channel():
    'Invalid channel case'
    reset_workspace()

    user1 = reg_user1()
    token1 = user1['token']
    user2 = reg_user2()
    token2 = user2['token']

    channel1 = create_ch1(user1)
    channel_id = channel1['channel_id']

    # Send a message
    data = json.dumps({
        'token': token1,
        'channel_id': channel_id,
        'message': "hello"
    }).encode('utf-8')
    urllib.request.urlopen(urllib.request.Request(
        f"{BASE_URL}/message/send",
        data=data,
        headers={'Content-Type':'application/json'}
    ))

    req = urllib.request.Request(
        f"{BASE_URL}/channel/messages?token="+str(token2)+"&channel_id=100"+"&start="+int(start)
    )
    req.get_method = lambda: 'GET'

    with pytest.raises(HTTPError):
        json.load(urllib.request.urlopen(req))
def test_react2():
    '''
    Test another user in a channel attempting to react to another person message
    '''
    reset_workspace()

    user1 = reg_user1()
    user2 = reg_user2()
    channel1 = create_ch1(user1)
    invite_to_channel(user1, user2, channel1)
    msg1 = send_msg1(user1, channel1)

    data = json.dumps({
        'token': user2['token'],
        'message_id': msg1['message_id'],
        'react_id': 1
    }).encode('utf-8')

    req = urllib.request.urlopen(
        urllib.request.Request(f"{BASE_URL}/message/react",
                               data=data,
                               headers={'Content-Type': 'application/json'}))

    payload = json.load(req)

    assert payload == {}
def test_channel_invite_successful():
    'Successful case'
    reset_workspace()

    # Register users
    user1 = reg_user1()
    token1 = user1['token']
    user2 = reg_user2()
    u_id2 = user2['u_id']
    # Create channel
    channel_info = create_ch1(user1)
    channel_id = channel_info['channel_id']

    # Attempt to invite user2
    data = json.dumps({
        'token': token1,
        'channel_id': channel_id,
        'u_id': u_id2
    }).encode('utf-8')
    req = urllib.request.urlopen(
        urllib.request.Request(f"{BASE_URL}/channel/invite",
                               data=data,
                               headers={'Content-Type': 'application/json'}))
    payload = json.load(req)

    assert payload == {}
Exemple #9
0
def test_not_owner():
    'Non-owner case'
    reset_workspace()

    user1 = reg_user1()
    user2 = reg_user2()
    token2 = user2['token']
    user3 = reg_user3()
    token3 = user3['token']
    u_id3 = user3['u_id']

    channel_info = create_ch1(user1)
    channel_id = channel_info['channel_id']

    # Join
    data = json.dumps({
        'token': token3,
        'channel_id': channel_id
    }).encode('utf-8')
    urllib.request.urlopen(
        urllib.request.Request(f"{BASE_URL}/channel/join",
                               data=data,
                               headers={'Content-Type': 'application/json'}))
    data2 = json.dumps({
        'token': token2,
        'channel_id': channel_id,
        'u_id': u_id3
    }).encode('utf-8')

    with pytest.raises(HTTPError):
        urllib.request.urlopen(
            urllib.request.Request(
                f"{BASE_URL}/channel/addowner",
                data=data2,
                headers={'Content-Type': 'application/json'}))
Exemple #10
0
def test_channel_addowner():
    'Normal case'
    reset_workspace()

    user1 = reg_user1()
    token1 = user1['token']
    user2 = reg_user2()
    token2 = user2['token']
    u_id2 = user2['u_id']

    channel_info = create_ch1(user1)
    channel_id = channel_info['channel_id']

    # Join
    data = json.dumps({
        'token': token2,
        'channel_id': channel_id
    }).encode('utf-8')
    urllib.request.urlopen(
        urllib.request.Request(f"{BASE_URL}/channel/join",
                               data=data,
                               headers={'Content-Type': 'application/json'}))
    data2 = json.dumps({
        'token': token1,
        'channel_id': channel_id,
        'u_id': u_id2
    }).encode('utf-8')
    req = urllib.request.urlopen(
        urllib.request.Request(f"{BASE_URL}/channel/addowner",
                               data=data2,
                               headers={'Content-Type': 'application/json'}))
    payload = json.load(req)

    assert payload == {}
Exemple #11
0
def test_unauth_owner():
    'error case test'
    reset_workspace()

    user1 = reg_user1()
    user2 = reg_user2()

    channel1 = create_ch1(user1)

    invite_to_channel(user1, user2, channel1)
    msg1 = send_msg1(user1, channel1)

    data = json.dumps({
        'token': user1['token'],
        'message_id': msg1['message_id'],
    }).encode('utf-8')

    urllib.request.urlopen(
        urllib.request.Request(f"{BASE_URL}/message/pin",
                               data=data,
                               headers={'Content-Type': 'application/json'}))

    data1 = json.dumps({
        'token': user2['token'],
        'message_id': 1,
    }).encode('utf-8')

    with pytest.raises(HTTPError):
        urllib.request.urlopen(
            urllib.request.Request(
                f"{BASE_URL}/message/unpin",
                data=data1,
                headers={'Content-Type': 'application/json'}))
def test_list():
    '''
    Test for successful case of channels list
    '''
    reset_workspace()

    user1 = reg_user1()
    reg_user2()

    create_ch1(user1)

    req = urllib.request.Request(f"{BASE_URL}/channels/list?token=" +
                                 str(user1['token']))

    req.get_method = lambda: 'GET'

    response = json.load(urllib.request.urlopen(req))['channels']

    expected = {'channel_id': 1, 'name': 'new_channel'}

    assert expected in response
Exemple #13
0
def test_invalid_channel():
    'Invalid channel case'
    reset_workspace()

    user1 = reg_user1()
    token1 = user1['token']
    user2 = reg_user2()
    token2 = user2['token']
    u_id2 = user2['u_id']

    channel_info = create_ch1(user1)
    channel_id = channel_info['channel_id']

    # Join
    data = json.dumps({
        'token': token2,
        'channel_id': channel_id
    }).encode('utf-8')
    urllib.request.urlopen(
        urllib.request.Request(f"{BASE_URL}/channel/join",
                               data=data,
                               headers={'Content-Type': 'application/json'}))
    # Addowner
    data2 = json.dumps({
        'token': token1,
        'channel_id': channel_id,
        'u_id': u_id2
    }).encode('utf-8')
    urllib.request.urlopen(
        urllib.request.Request(f"{BASE_URL}/channel/addowner",
                               data=data2,
                               headers={'Content-Type': 'application/json'}))

    # Invalid channel_id = 100
    data3 = json.dumps({
        'token': token1,
        'channel_id': 100,
        'u_id': u_id2
    }).encode('utf-8')

    with pytest.raises(HTTPError):
        urllib.request.urlopen(
            urllib.request.Request(
                f"{BASE_URL}/channel/addowner",
                data=data3,
                headers={'Content-Type': 'application/json'}))
Exemple #14
0
def test_channel_join_invalid_channel():
    'Invalid channel case'
    reset_workspace()

    user2 = reg_user2()
    token2 = user2['token']

    # User attempting to join an invalid channel
    # Invalid channel_id = 100
    data = json.dumps({'token': token2, 'channel_id': 100}).encode('utf-8')

    with pytest.raises(HTTPError):
        urllib.request.urlopen(
            urllib.request.Request(
                f"{BASE_URL}/channel/join",
                data=data,
                headers={'Content-Type': 'application/json'}))
def test_admin_user_remove_successful3():
    'Successful case with messages'
    reset_workspace()

    user1 = reg_user1()
    token1 = user1['token']
    user2 = reg_user2()
    token2 = user2['token']
    u_id2 = user2['u_id']

    channel_info = create_ch1(user1)
    channel_id = channel_info['channel_id']

    # Join
    data = json.dumps({
        'token': token2,
        'channel_id': channel_id
    }).encode('utf-8')
    urllib.request.urlopen(urllib.request.Request(
        f"{BASE_URL}/channel/join",
        data=data,
        headers={'Content-Type': 'application/json'}
    ))

    # Send a message
    send_msg1(user2, channel_info)

    data2 = json.dumps({
        'token': token1,
        'u_id': u_id2
    }).encode('utf-8')

    req = urllib.request.Request(
        f"{BASE_URL}/admin/user/remove",
        data=data2,
        headers={'Content-Type': 'application/json'}
    )
    req.get_method = lambda: 'DELETE'
    payload = json.load(urllib.request.urlopen(req))

    assert payload == {}
Exemple #16
0
def test_channel_details_unauthorised():
    'User is not a member case'
    reset_workspace()

    # Register users
    user1 = reg_user1()
    user2 = reg_user2()
    token2 = user2['token']

    channel1 = create_ch1(user1)
    channel_id = channel1['channel_id']

    req = urllib.request.Request(f"{BASE_URL}/channel/details?token=" +
                                 str(token2) + "&channel_id=" +
                                 str(channel_id))
    req.get_method = lambda: 'GET'

    # AccessError when we try to get details of channel where the user isn't a member
    # user2 isn't a member
    with pytest.raises(HTTPError):
        json.load(urllib.request.urlopen(req))
Exemple #17
0
def test_channel_join_private():
    'Privat channel case'
    reset_workspace()

    user1 = reg_user1()
    user2 = reg_user2()
    token2 = user2['token']
    pvt_channel = create_pvt_ch(user1)
    channel_id = pvt_channel['channel_id']

    data = json.dumps({
        'token': token2,
        'channel_id': channel_id
    }).encode('utf-8')

    with pytest.raises(HTTPError):
        urllib.request.urlopen(
            urllib.request.Request(
                f"{BASE_URL}/channel/join",
                data=data,
                headers={'Content-Type': 'application/json'}))
def test_unauthorised():
    '''
    Test a user sending a message into a channel in which they are not a part of
    '''
    reset_workspace()

    user1 = reg_user1()
    user2 = reg_user2()
    ch1 = create_ch1(user1)

    data = json.dumps({
        'token': user2['token'],
        'channel_id': ch1['channel_id'],
        'message': 'testing'
    }).encode('utf-8')

    with pytest.raises(HTTPError):
        urllib.request.urlopen(
            urllib.request.Request(
                f"{BASE_URL}/message/send",
                data=data,
                headers={'Content-Type': 'application/json'}))
def test_unauthorised_slackr():
    'Authorised user is not an owner of slackr case'
    reset_workspace()

    user1 = reg_user1()
    u_id1 = user1['u_id']
    user2 = reg_user2()
    token2 = user2['token']

    data2 = json.dumps({
        'token': token2,
        'u_id': u_id1
    }).encode('utf-8')

    req = urllib.request.Request(
        f"{BASE_URL}/admin/user/remove",
        data=data2,
        headers={'Content-Type': 'application/json'}
    )
    req.get_method = lambda: 'DELETE'

    with pytest.raises(HTTPError):
        json.load(urllib.request.urlopen(req))
Exemple #20
0
def test_channel_leave_unauthorised():
    'User is not a member case'
    reset_workspace()

    user1 = reg_user1()
    user2 = reg_user2()
    token2 = user2['token']

    channel_info = create_ch1(user1)
    channel_id = channel_info['channel_id']

    # Attempt for user to leave channel they aren't a member of (user2)
    data = json.dumps({
        'token': token2,
        'channel_id': channel_id
    }).encode('utf-8')

    with pytest.raises(HTTPError):
        urllib.request.urlopen(
            urllib.request.Request(
                f"{BASE_URL}/channel/leave",
                data=data,
                headers={'Content-Type': 'application/json'}))
def test_send2():
    '''
    Test valid use of message_send
    '''
    reset_workspace()

    user1 = reg_user1()
    user2 = reg_user2()
    ch1 = create_ch1(user1)

    invite_to_channel(user1, user2, ch1)

    data = json.dumps({
        'token': user2['token'],
        'channel_id': ch1['channel_id'],
        'message': 'testing'
    }).encode('utf-8')
    req = urllib.request.urlopen(
        urllib.request.Request(f"{BASE_URL}/message/send",
                               data=data,
                               headers={'Content-Type': 'application/json'}))
    payload = json.load(req)

    assert payload['message_id'] == 1
def test_channel_invite_existing_user():
    'Existing user case'
    reset_workspace()

    # Register users
    user1 = reg_user1()
    token1 = user1['token']
    user2 = reg_user2()
    u_id2 = user2['u_id']

    # Create channel
    channel_info = create_ch1(user1)
    channel_id = channel_info['channel_id']

    # Invite
    data = json.dumps({
        'token': token1,
        'channel_id': channel_id,
        'u_id': u_id2
    }).encode('utf-8')
    urllib.request.urlopen(
        urllib.request.Request(f"{BASE_URL}/channel/invite",
                               data=data,
                               headers={'Content-Type': 'application/json'}))
    data2 = json.dumps({
        'token': token1,
        'channel_id': channel_id,
        'u_id': u_id2
    }).encode('utf-8')

    with pytest.raises(HTTPError):
        urllib.request.urlopen(
            urllib.request.Request(
                f"{BASE_URL}/channel/invite",
                data=data2,
                headers={'Content-Type': 'application/json'}))
def test_admin_user_remove_successful1():
    'Successful case with registering'
    # admin_user_remove (DELETE)
    reset_workspace()

    user1 = reg_user1()
    token1 = user1['token']
    user2 = reg_user2()
    u_id2 = user2['u_id']

    data = json.dumps({
        'token': token1,
        'u_id': u_id2
    }).encode('utf-8')

    req = urllib.request.Request(
        f"{BASE_URL}/admin/user/remove",
        data=data,
        headers={'Content-Type': 'application/json'}
    )
    req.get_method = lambda: 'DELETE'
    payload = json.load(urllib.request.urlopen(req))

    assert payload == {}
def test_remove2():
    '''
    The admin of a channel attempting to remove another users message
    '''
    reset_workspace()

    user1 = reg_user1()
    user2 = reg_user2()
    channel1 = create_ch1(user1)
    invite_to_channel(user1, user2, channel1)
    msg1 = send_msg1(user2, channel1)

    data = json.dumps({
        'token': user1['token'],
        'message_id': msg1['message_id']
    }).encode('utf-8')

    req = urllib.request.Request(f"{BASE_URL}/message/remove",
                                 data=data,
                                 headers={'Content-Type': 'application/json'})
    req.get_method = lambda: 'DELETE'
    response = json.load(urllib.request.urlopen(req))

    assert response == {}
def test_unauth_remove1():
    '''
    Test if a user is attempting to remove a message from
    a channel that they are not a part of
    '''
    reset_workspace()

    user1 = reg_user1()
    user2 = reg_user2()
    channel1 = create_ch1(user1)
    msg1 = send_msg1(user1, channel1)

    data = json.dumps({
        'token': user2['token'],
        'message_id': msg1['message_id']
    }).encode('utf-8')

    req = urllib.request.Request(f"{BASE_URL}/message/remove",
                                 data=data,
                                 headers={'Content-Type': 'application/json'})
    req.get_method = lambda: 'DELETE'

    with pytest.raises(HTTPError):
        json.load(urllib.request.urlopen(req))