Fixed tests, and improved send()

This commit is contained in:
Mads Marquart
2017-05-05 20:12:17 +02:00
parent 2280d31cbb
commit 64243c20b2
2 changed files with 32 additions and 15 deletions

View File

@@ -451,6 +451,8 @@ class Client(object):
:param like: size of the like sticker you want to send
:param image_id: id for the image to send, gotten from the UploadURL
:param add_user_ids: a list of user ids to add to a chat
returns a list of message ids of the sent message(s)
"""
if self.is_def_recipient_set:
@@ -522,10 +524,9 @@ class Client(object):
r = self._post(SendURL, data)
if r.ok:
log.info('Message sent.')
else:
log.info('Message not sent.')
if not r.ok:
log.warning('Error when sending message: Got {} response'.format(r.status_code))
return False
if isinstance(r._content, str) is False:
r._content = r._content.decode(facebookEncoding)
@@ -535,9 +536,17 @@ class Client(object):
log.warning('Error #{} when sending message: {}'.format(j['error'], j['errorDescription']))
return False
message_ids = []
try:
message_ids += [action['message_id'] for action in j['payload']['actions'] if 'message_id' in action]
except KeyError as e:
log.warning('Error when sending message: No message ids could be found')
return False
log.info('Message sent.')
log.debug("Sending {}".format(r))
log.debug("With data {}".format(data))
return True
return message_ids
def sendRemoteImage(self, recipient_id=None, message=None, is_user=True, image=''):
@@ -826,10 +835,10 @@ class Client(object):
fbid = m['delta']['messageMetadata']['actorFbId']
self.on_message_new(mid, fbid, message, m, recipient_id, thread_type)
elif m['type'] in ['jewel_requests_add']:
from_id = m['from']
self.on_friend_request(from_id)
from_id = m['from']
self.on_friend_request(from_id)
else:
log.debug("Unknown type {}".format(m))
self.on_unknown_type(m)
except Exception as e:
# ex_type, ex, tb = sys.exc_info()
self.on_message_error(sys.exc_info(), m)
@@ -1021,3 +1030,9 @@ class Client(object):
def on_qprimer(self, timestamp):
pass
def on_unknown_type(self, m):
"""subclass Client and override this method to add custom behavior on event"""
log.debug("Unknown type {}".format(m))

View File

@@ -14,17 +14,19 @@ fbchat.log.setLevel(100)
"""
Tests for fbchat
~~~~~~~~~~~~~~~~
To use these tests, put:
- email
- password
- a group_uid
- a user_uid whom will be kicked from that group and then added again
- a user_uid (the user will be kicked from the group and then added again)
(seperated these by a newline) in a file called `tests.data`, or type them manually in the terminal prompts
Please remember to test both python v. 2.7 and python v. 3.6!
If you've made any changes to the 2FA functionality, test it with a 2FA enabled account
If you only want to execute specific tests, pass the function names in the commandline
"""
@@ -56,21 +58,21 @@ class TestFbchat(unittest.TestCase):
def test_getAllUsers(self):
users = client.getAllUsers()
self.assertTrue(len(users) > 0)
self.assertGreater(len(users), 0)
def test_getUsers(self):
users = client.getUsers("Mark Zuckerberg")
self.assertTrue(len(users) > 0)
self.assertGreater(len(users), 0)
u = users[0]
# Test if values are set correctly
self.assertTrue(isinstance(u.uid, int))
self.assertIsInstance(u.uid, int)
self.assertEquals(u.type, 'user')
self.assertEquals(u.photo[:4], 'http')
self.assertEquals(u.url[:4], 'http')
self.assertEquals(u.name, 'Mark Zuckerberg')
self.assertTrue(u.score > 0)
self.assertGreater(u.score, 0)
def test_send_likes(self):
self.assertTrue(client.send(client.uid, like='s'))
@@ -147,7 +149,7 @@ if __name__ == '__main__':
try:
with open(path.join(path.dirname(__file__), 'tests.data'), 'r') as f:
content = f.readlines()
content = [x.strip() for x in content]
content = [x.strip() for x in content if len(x.strip()) != 0]
email = content[0]
password = content[1]
group_uid = content[2]