Fixed examples, added changeNickname
and changeThreadEmoji
, changed changeGroupTitle
back to changeThreadTitle
I also removed the parameter `set_default_events` from __init__, since it's not really necessary Also added testing of examples and simple testing of listen functions
This commit is contained in:
93
tests.py
93
tests.py
@@ -7,13 +7,33 @@ import logging
|
||||
import unittest
|
||||
from getpass import getpass
|
||||
from sys import argv
|
||||
from os import path
|
||||
from os import path, chdir
|
||||
from glob import glob
|
||||
from fbchat import Client
|
||||
from fbchat.models import *
|
||||
import py_compile
|
||||
|
||||
logging_level = logging.ERROR
|
||||
|
||||
class CustomClient(Client):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.got_qprimer = False
|
||||
super(type(self), self).__init__(*args, **kwargs)
|
||||
|
||||
def onQprimer(self, made, msg):
|
||||
self.got_qprimer = True
|
||||
|
||||
class TestFbchat(unittest.TestCase):
|
||||
def test_examples(self):
|
||||
# Checks for syntax errors in the examples
|
||||
chdir('examples')
|
||||
for f in glob('*.txt'):
|
||||
print(f)
|
||||
with self.assertRaises(py_compile.PyCompileError):
|
||||
py_compile.compile(f)
|
||||
|
||||
chdir('..')
|
||||
|
||||
def test_loginFunctions(self):
|
||||
self.assertTrue(client.isLoggedIn())
|
||||
|
||||
@@ -31,13 +51,16 @@ class TestFbchat(unittest.TestCase):
|
||||
def test_sessions(self):
|
||||
global client
|
||||
session_cookies = client.getSession()
|
||||
client = Client(email, password, session_cookies=session_cookies, logging_level=logging_level)
|
||||
client = CustomClient(email, password, session_cookies=session_cookies, logging_level=logging_level)
|
||||
|
||||
self.assertTrue(client.isLoggedIn())
|
||||
|
||||
def test_defaultThread(self):
|
||||
# setDefaultThread
|
||||
client.setDefaultThread(client.uid, ThreadType.USER)
|
||||
client.setDefaultThread(group_uid, ThreadType.GROUP)
|
||||
self.assertTrue(client.sendMessage('test_default_recipient★'))
|
||||
|
||||
client.setDefaultThread(user_uid, ThreadType.USER)
|
||||
self.assertTrue(client.sendMessage('test_default_recipient★'))
|
||||
|
||||
# resetDefaultThread
|
||||
@@ -50,7 +73,7 @@ class TestFbchat(unittest.TestCase):
|
||||
self.assertGreater(len(users), 0)
|
||||
|
||||
def test_getUsers(self):
|
||||
users = client.getUsers("Mark Zuckerberg")
|
||||
users = client.getUsers('Mark Zuckerberg')
|
||||
self.assertGreater(len(users), 0)
|
||||
|
||||
u = users[0]
|
||||
@@ -66,11 +89,11 @@ class TestFbchat(unittest.TestCase):
|
||||
def test_sendEmoji(self):
|
||||
self.assertTrue(client.sendEmoji(size=EmojiSize.SMALL, thread_id=user_uid, thread_type=ThreadType.USER))
|
||||
self.assertTrue(client.sendEmoji(size=EmojiSize.MEDIUM, thread_id=user_uid, thread_type=ThreadType.USER))
|
||||
self.assertTrue(client.sendEmoji("😆", EmojiSize.LARGE, user_uid, ThreadType.USER))
|
||||
self.assertTrue(client.sendEmoji('😆', EmojiSize.LARGE, user_uid, ThreadType.USER))
|
||||
|
||||
self.assertTrue(client.sendEmoji(size=EmojiSize.SMALL, thread_id=group_uid, thread_type=ThreadType.GROUP))
|
||||
self.assertTrue(client.sendEmoji(size=EmojiSize.MEDIUM, thread_id=group_uid, thread_type=ThreadType.GROUP))
|
||||
self.assertTrue(client.sendEmoji("😆", EmojiSize.LARGE, group_uid, ThreadType.GROUP))
|
||||
self.assertTrue(client.sendEmoji('😆', EmojiSize.LARGE, group_uid, ThreadType.GROUP))
|
||||
|
||||
def test_sendMessage(self):
|
||||
self.assertIsNotNone(client.sendMessage('test_send_user★', user_uid, ThreadType.USER))
|
||||
@@ -81,42 +104,54 @@ class TestFbchat(unittest.TestCase):
|
||||
def test_sendImages(self):
|
||||
image_url = 'https://cdn4.iconfinder.com/data/icons/ionicons/512/icon-image-128.png'
|
||||
image_local_url = path.join(path.dirname(__file__), 'tests/image.png')
|
||||
#self.assertTrue(client.sendRemoteImage(image_url, 'test_send_user_images_remote', user_uid, ThreadType.USER))
|
||||
self.assertTrue(client.sendRemoteImage(image_url, 'test_send_user_images_remote★', user_uid, ThreadType.USER))
|
||||
self.assertTrue(client.sendRemoteImage(image_url, 'test_send_group_images_remote★', group_uid, ThreadType.GROUP))
|
||||
# Idk why but doesnt work, payload is null
|
||||
#self.assertTrue(client.sendLocalImage(image_local_url, 'test_send_group_images_local', user_uid, ThreadType.USER))
|
||||
self.assertTrue(client.sendLocalImage(image_local_url, 'test_send_group_images_local★', user_uid, ThreadType.USER))
|
||||
self.assertTrue(client.sendLocalImage(image_local_url, 'test_send_group_images_local★', group_uid, ThreadType.GROUP))
|
||||
|
||||
def test_getThreadInfo(self):
|
||||
client.sendMessage('test_user_getThreadInfo★', user_uid, ThreadType.USER)
|
||||
|
||||
|
||||
info = client.getThreadInfo(20, user_uid, ThreadType.USER)
|
||||
self.assertEqual(info[0].author, 'fbid:' + client.uid)
|
||||
self.assertEqual(info[0].body, 'test_user_getThreadInfo★')
|
||||
|
||||
client.sendMessage('test_group_getThreadInfo★', group_uid, ThreadType.GROUP)
|
||||
|
||||
|
||||
info = client.getThreadInfo(20, group_uid, ThreadType.GROUP)
|
||||
self.assertEqual(info[0].author, 'fbid:' + client.uid)
|
||||
self.assertEqual(info[0].body, 'test_group_getThreadInfo★')
|
||||
|
||||
def test_markAs(self):
|
||||
# To be implemented (requires some form of manual watching)
|
||||
pass
|
||||
|
||||
def test_listen(self):
|
||||
client.startListening()
|
||||
client.doOneListen()
|
||||
client.stopListening()
|
||||
|
||||
self.assertTrue(client.got_qprimer)
|
||||
|
||||
def test_getUserInfo(self):
|
||||
info = client.getUserInfo(4)
|
||||
self.assertEqual(info['name'], 'Mark Zuckerberg')
|
||||
|
||||
def test_removeAddFromGroup(self):
|
||||
self.assertTrue(client.removeUserFromGroup(user_uid, group_uid))
|
||||
self.assertTrue(client.addUsersToGroup([user_uid], group_uid))
|
||||
self.assertTrue(client.removeUserFromGroup(user_uid, thread_id=group_uid))
|
||||
self.assertTrue(client.addUsersToGroup(user_uid, thread_id=group_uid))
|
||||
|
||||
def test_changeGroupTitle(self):
|
||||
self.assertTrue(client.changeGroupTitle('test_changeGroupTitle★', group_uid))
|
||||
def test_changeThreadTitle(self):
|
||||
self.assertTrue(client.changeThreadTitle('test_changeThreadTitle★', thread_id=group_uid, thread_type=ThreadType.GROUP))
|
||||
self.assertTrue(client.changeThreadTitle('test_changeThreadTitle★', thread_id=user_uid, thread_type=ThreadType.USER))
|
||||
|
||||
def test_changeNickname(self):
|
||||
self.assertTrue(client.changeNickname('test_changeNicknameSelf★', client.uid, thread_id=user_uid, thread_type=ThreadType.USER))
|
||||
self.assertTrue(client.changeNickname('test_changeNicknameOther★', user_uid, thread_id=user_uid, thread_type=ThreadType.USER))
|
||||
self.assertTrue(client.changeNickname('test_changeNicknameSelf★', client.uid, thread_id=group_uid, thread_type=ThreadType.GROUP))
|
||||
self.assertTrue(client.changeNickname('test_changeNicknameOther★', user_uid, thread_id=group_uid, thread_type=ThreadType.GROUP))
|
||||
|
||||
def test_changeThreadEmoji(self):
|
||||
self.assertTrue(client.changeThreadEmoji('😀', group_uid))
|
||||
self.assertTrue(client.changeThreadEmoji('😀', user_uid))
|
||||
self.assertTrue(client.changeThreadEmoji('😆', group_uid))
|
||||
self.assertTrue(client.changeThreadEmoji('😆', user_uid))
|
||||
|
||||
def test_changeThreadColor(self):
|
||||
self.assertTrue(client.changeThreadColor(ThreadColor.BRILLIANT_ROSE, group_uid))
|
||||
@@ -125,13 +160,16 @@ class TestFbchat(unittest.TestCase):
|
||||
self.assertTrue(client.changeThreadColor(ThreadColor.MESSENGER_BLUE, user_uid))
|
||||
|
||||
def test_reactToMessage(self):
|
||||
mid = client.sendMessage('react_to_message', user_uid, ThreadType.USER)
|
||||
mid = client.sendMessage('test_reactToMessage★', user_uid, ThreadType.USER)
|
||||
self.assertTrue(client.reactToMessage(mid, MessageReaction.LOVE))
|
||||
|
||||
mid = client.sendMessage('test_reactToMessage★', group_uid, ThreadType.GROUP)
|
||||
self.assertTrue(client.reactToMessage(mid, MessageReaction.LOVE))
|
||||
|
||||
def test_setTypingStatus(self):
|
||||
self.assertTrue(client.sendMessage('Hi', thread_id=user_uid, thread_type=ThreadType.USER))
|
||||
self.assertTrue(client.setTypingStatus(TypingStatus.TYPING, thread_id=user_uid, thread_type=ThreadType.USER))
|
||||
self.assertTrue(client.setTypingStatus(TypingStatus.STOPPED, thread_id=user_uid, thread_type=ThreadType.USER))
|
||||
self.assertTrue(client.setTypingStatus(TypingStatus.TYPING, thread_id=group_uid, thread_type=ThreadType.GROUP))
|
||||
self.assertTrue(client.setTypingStatus(TypingStatus.STOPPED, thread_id=user_uid, thread_type=ThreadType.USER))
|
||||
self.assertTrue(client.setTypingStatus(TypingStatus.STOPPED, thread_id=group_uid, thread_type=ThreadType.GROUP))
|
||||
|
||||
|
||||
@@ -143,8 +181,8 @@ def start_test(param_client, param_group_uid, param_user_uid, tests=[]):
|
||||
client = param_client
|
||||
group_uid = param_group_uid
|
||||
user_uid = param_user_uid
|
||||
|
||||
tests = ['test_' + test for test in tests]
|
||||
|
||||
tests = ['test_' + test if 'test_' != test[:5] else test for test in tests]
|
||||
|
||||
if len(tests) == 0:
|
||||
suite = unittest.TestLoader().loadTestsFromTestCase(TestFbchat)
|
||||
@@ -175,10 +213,9 @@ if __name__ == '__main__':
|
||||
password = getpass()
|
||||
group_uid = input('Please enter a group thread id (To test group functionality): ')
|
||||
user_uid = input('Please enter a user thread id (To test kicking/adding functionality): ')
|
||||
|
||||
|
||||
print('Logging in...')
|
||||
client = Client(email, password, logging_level=logging_level)
|
||||
|
||||
client = CustomClient(email, password, logging_level=logging_level)
|
||||
|
||||
# Warning! Taking user input directly like this could be dangerous! Use only for testing purposes!
|
||||
start_test(client, group_uid, user_uid, argv[1:])
|
||||
|
||||
|
Reference in New Issue
Block a user