123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- #!/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 re
- import requests
- import warnings
- # actual diaspy code
- import diaspy
- #### SETUP STUFF
- #### test suite configuration variables: can be adjusted to your liking
- import testconf
- __pod__ = testconf.__pod__
- __username__ = testconf.__username__
- __passwd__ = testconf.__passwd__
- # Test counter
- try:
- test_count_file = open('TEST_COUNT', 'r')
- test_count = int(test_count_file.read())
- test_count_file.close()
- except (IOError, ValueError):
- test_count = 0
- finally:
- 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: "{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)
- class StreamTest(unittest.TestCase):
- def testGetting(self):
- stream = diaspy.streams.Generic(test_connection)
- 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 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(post_text)
- self.assertEqual(diaspy.models.Post, type(post))
-
- 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')
- 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['handle'])
- 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['handle'])
- 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 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__':
- print('Hello World!')
- print('It\'s testing time!')
- n = unittest.main()
- print(n)
- print('Good! All tests passed!')
|