X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=tests.py;h=d35e262d42d05ec3e1aa012ee82feb8286dc8d55;hb=e5b83c4b51d7949f0da0997f90856c0a612c58c9;hp=548592550b8a911eda2a303ad9b9fd7c90c283d5;hpb=c1490af7a6eb48a6fdb25790aafb56649c979812;p=diaspy.git diff --git a/tests.py b/tests.py index 5485925..d35e262 100644 --- a/tests.py +++ b/tests.py @@ -1,17 +1,21 @@ #!/usr/bin/env python3 +from __future__ import print_function + import unittest -# failure to import any of the modules below indicates failed tests -# modules used by diaspy -import requests +# failure to import any of the modules below indicates failed tests +# ================================================================= +# modules used by diaspy import re -# actual diaspy code +import requests +import warnings +# actual diaspy code import diaspy -#### SETUP STUFF -#### test suite configuration variables: can be adjusted to your liking +#### SETUP STUFF +#### test suite configuration variables: can be adjusted to your liking import testconf __pod__ = testconf.__pod__ __username__ = testconf.__username__ @@ -20,105 +24,246 @@ __passwd__ = testconf.__passwd__ # Test counter try: - test_count_file = open('TEST_COUNT', 'r') - test_count = int(test_count_file.read()) - test_count_file.close() + test_count_file = open('TEST_COUNT', 'r') + test_count = int(test_count_file.read()) + test_count_file.close() except (IOError, ValueError): - test_count = 0 + test_count = 0 finally: - test_count += 1 + test_count += 1 test_count_file = open('TEST_COUNT', 'w') test_count_file.write(str(test_count)) test_count_file.close() print('Running test no. {0}'.format(test_count)) -print('Running tests on connection to pod: "{0}"\t'.format(__pod__), end='') +print('Running tests on connection: "{0}:{1}@{2}"\t'.format(testconf.__username__, '*'*len(testconf.__passwd__), __pod__), end='') test_connection = diaspy.connection.Connection(pod=__pod__, username=__username__, password=__passwd__) test_connection.login() print('[ CONNECTED ]\n') +# Setup test aspects +print('Adding test aspects...\t', end='') +diaspy.streams.Aspects(test_connection).add(testconf.test_aspect_name_fake) +testconf.test_aspect_id = diaspy.streams.Aspects(test_connection).add(testconf.test_aspect_name).id +print('OK') + +print([i['name'] for i in test_connection.getUserData()['aspects']]) + + +post_text = '#diaspy test no. {0}'.format(test_count) + + +####################################### +#### TEST SUITE CODE #### +####################################### +class ConnectionTest(unittest.TestCase): + def testGettingUserInfo(self): + info = test_connection.getUserData() + self.assertEqual(dict, type(info)) + + +class MessagesTests(unittest.TestCase): + def testGettingMailbox(self): + mailbox = diaspy.messages.Mailbox(test_connection) + if mailbox: + for i in range(len(mailbox)): + self.assertEqual(diaspy.models.Conversation, type(mailbox[i])) + + +class AspectsTests(unittest.TestCase): + def testAspectsGettingID(self): + aspects = diaspy.streams.Aspects(test_connection) + id = aspects.getAspectID(testconf.test_aspect_name) + self.assertEqual(testconf.test_aspect_id, id) + + def testAspectsRemoveById(self): + aspects = diaspy.streams.Aspects(test_connection) + for i in test_connection.getUserData()['aspects']: + if i['name'] == testconf.test_aspect_name: + print(i['id'], end=' ') + aspects.remove(id=i['id']) + break + names = [i['name'] for i in test_connection.getUserData()['aspects']] + print(names) + self.assertNotIn(testconf.test_aspect_name, names) + + def testAspectsRemoveByName(self): + aspects = diaspy.streams.Aspects(test_connection) + print(testconf.test_aspect_name_fake, end=' ') + aspects.remove(name=testconf.test_aspect_name_fake) + names = [i['name'] for i in test_connection.getUserData()['aspects']] + print(names) + self.assertNotIn(testconf.test_aspect_name_fake, names) + -#### Test suite code class StreamTest(unittest.TestCase): - def testGetting(self): - stream = diaspy.streams.Generic(test_connection) + def testGetting(self): + stream = diaspy.streams.Generic(test_connection) - def testGettingLength(self): - stream = diaspy.streams.Generic(test_connection) - len(stream) + def testGettingLength(self): + stream = diaspy.streams.Generic(test_connection) + len(stream) - def testClearing(self): - stream = diaspy.streams.Stream(test_connection) - stream.clear() - self.assertEqual(0, len(stream)) + def testClearing(self): + stream = diaspy.streams.Stream(test_connection) + stream.clear() + self.assertEqual(0, len(stream)) - def testPurging(self): - stream = diaspy.streams.Stream(test_connection) - post = stream.post('#diaspy test') - stream.update() - post.delete() - stream.purge() - self.assertNotIn(post.post_id, [p.post_id for p in stream]) + def testPurging(self): + stream = diaspy.streams.Stream(test_connection) + post = stream.post('#diaspy test') + stream.update() + post.delete() + stream.purge() + self.assertNotIn(post.id, [p.id for p in stream]) - def testPostingText(self): - stream = diaspy.streams.Stream(test_connection) - post = stream.post('#diaspy test no. {0}'.format(test_count)) - self.assertEqual(diaspy.models.Post, type(post)) + def testPostingText(self): + stream = diaspy.streams.Stream(test_connection) + post = stream.post(post_text) + self.assertEqual(diaspy.models.Post, type(post)) - def testPostingImage(self): - stream = diaspy.streams.Stream(test_connection) - stream.post_picture('./test-image.png') + def testPostingImage(self): + stream = diaspy.streams.Stream(test_connection) + try: + stream.post(text=post_text, photo='test-image.png') + except (diaspy.errors.StreamError) as e: + warnings.warn('{0}') + finally: + pass + def testingAddingTag(self): + ft = diaspy.streams.FollowedTags(test_connection) + ft.add('test') -class ConnectionTest(unittest.TestCase): - def testLoginWithoutUsername(self): - connection = diaspy.connection.Connection(pod=__pod__) - self.assertRaises(diaspy.connection.LoginError, connection.login, password='foo') - - def testLoginWithoutPassword(self): - connection = diaspy.connection.Connection(pod=__pod__) - self.assertRaises(diaspy.connection.LoginError, connection.login, username='user') - - def testGettingUserInfo(self): - info = test_connection.getUserInfo() - self.assertEqual(dict, type(info)) - - -class ClientTests(unittest.TestCase): - def testGettingStream(self): - client = diaspy.client.Client(test_connection) - stream = client.get_stream() - if len(stream): self.assertEqual(diaspy.models.Post, type(stream[0])) - - def testGettingNotifications(self): - client = diaspy.client.Client(test_connection) - notifications = client.get_notifications() - self.assertEqual(list, type(notifications)) - if notifications: self.assertEqual(dict, type(notifications[0])) - - def testGettingTagAsList(self): - client = diaspy.client.Client(test_connection) - tag = client.get_tag('foo') - self.assertEqual(list, type(tag)) - if tag: self.assertEqual(diaspy.models.Post, type(tag[0])) - - def testGettingTagAsStream(self): - client = diaspy.client.Client(test_connection) - tag = client.get_tag('foo', stream=True) - self.assertEqual(diaspy.streams.Generic, type(tag)) - if tag: self.assertEqual(diaspy.models.Post, type(tag[0])) - - def testGettingMailbox(self): - client = diaspy.client.Client(test_connection) - mailbox = client.get_mailbox() - self.assertEqual(list, type(mailbox)) - self.assertEqual(diaspy.conversations.Conversation, type(mailbox[0])) + def testActivity(self): + activity = diaspy.streams.Activity(test_connection) + + def testMentionsStream(self): + mentions = diaspy.streams.Mentions(test_connection) + + +class UserTests(unittest.TestCase): + def testHandleSeparatorRaisingExceptions(self): + handles = ['user.pod.example.com', + 'user@podexamplecom', + '@pod.example.com', + 'use r@pod.example.com', + 'user0@pod300 example.com', + ] + for h in handles: + self.assertRaises(Exception, diaspy.people.sephandle, h) + + def testGettingUserByHandleData(self): + user = diaspy.people.User(test_connection, handle=testconf.diaspora_id, fetch='data') + self.assertEqual(testconf.guid, user['guid']) + self.assertEqual(testconf.diaspora_id, user['handle']) + self.assertEqual(testconf.diaspora_name, user['name']) + self.assertEqual(type(user.stream), list) + self.assertEqual(user.stream, []) + self.assertIn('id', user.data) + self.assertIn('avatar', user.data) + + def testGettingUserByHandlePosts(self): + user = diaspy.people.User(test_connection, handle=testconf.diaspora_id) + self.assertEqual(testconf.guid, user['guid']) + self.assertEqual(testconf.diaspora_id, user['diaspora_id']) + self.assertEqual(testconf.diaspora_name, user['name']) + self.assertIn('id', user.data) + self.assertIn('avatar', user.data) + self.assertEqual(type(user.stream), diaspy.streams.Outer) + + def testGettingUserByGUID(self): + user = diaspy.people.User(test_connection, guid=testconf.guid) + self.assertEqual(testconf.diaspora_id, user['diaspora_id']) + self.assertEqual(testconf.diaspora_name, user['name']) + self.assertIn('id', user.data) + self.assertIn('avatar', user.data['profile']) + self.assertEqual(type(user.stream), diaspy.streams.Outer) + + def testReprMethod(self): + user = diaspy.people.User(test_connection, guid=testconf.guid) + repr(user) + print(user) + + +class ContactsTest(unittest.TestCase): + def testGetOnlySharing(self): + contacts = diaspy.people.Contacts(test_connection) + result = contacts.get(set='only_sharing') + for i in result: + self.assertEqual(diaspy.people.User, type(i)) + + def testGetAll(self): + contacts = diaspy.people.Contacts(test_connection) + result = contacts.get(set='all') + for i in result: + self.assertEqual(diaspy.people.User, type(i)) + + def testGet(self): + contacts = diaspy.people.Contacts(test_connection) + result = contacts.get() + for i in result: + self.assertEqual(diaspy.people.User, type(i)) + + +class PostTests(unittest.TestCase): + def testStringConversion(self): + s = diaspy.streams.Stream(test_connection) + + def testRepr(self): + s = diaspy.streams.Stream(test_connection) + + +class NotificationsTests(unittest.TestCase): + def testMarkingRead(self): + notifications = diaspy.notifications.Notifications(test_connection) + notif = None + for n in notifications: + if n.unread: + notif = n + break + if notif is not None: + n.mark(unread=False) + else: + warnings.warn('test not sufficient: no unread notifications were found') + + +class SettingsTests(unittest.TestCase): + profile = diaspy.settings.Profile(test_connection) + account = diaspy.settings.Account(test_connection) + + def testGettingName(self): + self.assertEqual(testconf.user_names_tuple, self.profile.getName()) + + def testGettingLocation(self): + self.assertEqual(testconf.user_location_string, self.profile.getLocation()) + + def testGettingGender(self): + self.assertEqual(testconf.user_gender_string, self.profile.getGender()) + + def testGettingBirthDate(self): + self.assertEqual(testconf.user_date_of_birth, self.profile.getBirthDate(named_month=False)) + self.assertEqual(testconf.user_date_of_birth_named, self.profile.getBirthDate(named_month=True)) + + def testGettingInfoIfProfileIsSearchable(self): + self.assertEqual(testconf.user_is_searchable, self.profile.isSearchable()) + + def testGettingInfoIfProfileIsNSFW(self): + self.assertEqual(testconf.user_is_nsfw, self.profile.isNSFW()) + + def testGettingTags(self): + self.assertEqual(sorted(testconf.user_tags), sorted(self.profile.getTags())) + + def testGettingLanguages(self): + self.assertIn(('en', 'English'), self.account.getLanguages()) + + def testGettingEmail(self): + self.assertEqual(testconf.user_email, self.account.getEmail()) if __name__ == '__main__': - unittest.main() - c = diaspy.connection.Connection(__pod__, __username__, __passwd__) - c.login() - stream = diaspy.modules.Stream(c) - for post in stream: - if post['text'] == '#diaspy test': post.delete() + print('Hello World!') + print('It\'s testing time!') + n = unittest.main() + print(n) + print('Good! All tests passed!')