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'}))
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 == {}
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'}))
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 == {}
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
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'}))
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 == {}
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))
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))
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))