Commit | Line | Data |
---|---|---|
94c2d637 MM |
1 | #!/usr/bin/env python3 |
2 | ||
3 | import unittest | |
4 | ||
313c9233 | 5 | # failure to import any of the modules below indicates failed tests |
94c2d637 | 6 | # modules used by diaspy |
88ec6cda MM |
7 | import requests |
8 | import re | |
94c2d637 MM |
9 | # actual diaspy code |
10 | import diaspy | |
11 | ||
12 | ||
62f1912f | 13 | #### SETUP STUFF |
94c2d637 | 14 | #### test suite configuration variables: can be adjusted to your liking |
fab8b736 MM |
15 | import testconf |
16 | __pod__ = testconf.__pod__ | |
17 | __username__ = testconf.__username__ | |
18 | __passwd__ = testconf.__passwd__ | |
94c2d637 | 19 | |
505fc964 | 20 | |
62f1912f MM |
21 | # Test counter |
22 | try: | |
23 | test_count_file = open('TEST_COUNT', 'r') | |
24 | test_count = int(test_count_file.read()) | |
25 | test_count_file.close() | |
26 | except (IOError, ValueError): | |
27 | test_count = 0 | |
28 | finally: | |
29 | test_count += 1 | |
30 | test_count_file = open('TEST_COUNT', 'w') | |
31 | test_count_file.write(str(test_count)) | |
32 | test_count_file.close() | |
33 | print('Running test no. {0}'.format(test_count)) | |
94c2d637 | 34 | |
c1490af7 | 35 | print('Running tests on connection to pod: "{0}"\t'.format(__pod__), end='') |
62f1912f MM |
36 | test_connection = diaspy.connection.Connection(pod=__pod__, username=__username__, password=__passwd__) |
37 | test_connection.login() | |
c1490af7 | 38 | print('[ CONNECTED ]\n') |
62f1912f | 39 | |
66c3bb76 MM |
40 | post_text = '#diaspy test no. {0}'.format(test_count) |
41 | ||
62f1912f | 42 | |
a8fdc14a MM |
43 | ####################################### |
44 | #### TEST SUITE CODE #### | |
45 | ####################################### | |
385e7ebe MM |
46 | class ConnectionTest(unittest.TestCase): |
47 | def testLoginWithoutUsername(self): | |
48 | connection = diaspy.connection.Connection(pod=__pod__) | |
49 | self.assertRaises(diaspy.connection.LoginError, connection.login, password='foo') | |
50 | ||
51 | def testLoginWithoutPassword(self): | |
52 | connection = diaspy.connection.Connection(pod=__pod__) | |
53 | self.assertRaises(diaspy.connection.LoginError, connection.login, username='user') | |
54 | ||
264336e2 | 55 | def testGettingUserInfo(self): |
c1490af7 | 56 | info = test_connection.getUserInfo() |
264336e2 MM |
57 | self.assertEqual(dict, type(info)) |
58 | ||
7a31b4aa MM |
59 | |
60 | class ClientTests(unittest.TestCase): | |
264336e2 | 61 | def testGettingStream(self): |
c1490af7 | 62 | client = diaspy.client.Client(test_connection) |
264336e2 | 63 | stream = client.get_stream() |
7a31b4aa | 64 | if len(stream): self.assertEqual(diaspy.models.Post, type(stream[0])) |
264336e2 MM |
65 | |
66 | def testGettingNotifications(self): | |
c1490af7 | 67 | client = diaspy.client.Client(test_connection) |
264336e2 MM |
68 | notifications = client.get_notifications() |
69 | self.assertEqual(list, type(notifications)) | |
70 | if notifications: self.assertEqual(dict, type(notifications[0])) | |
71 | ||
66c3bb76 | 72 | def testGettingTag(self): |
c1490af7 | 73 | client = diaspy.client.Client(test_connection) |
fab8b736 | 74 | tag = client.get_tag('foo') |
62f1912f MM |
75 | self.assertEqual(diaspy.streams.Generic, type(tag)) |
76 | if tag: self.assertEqual(diaspy.models.Post, type(tag[0])) | |
77 | ||
fab8b736 | 78 | def testGettingMailbox(self): |
c1490af7 | 79 | client = diaspy.client.Client(test_connection) |
fab8b736 MM |
80 | mailbox = client.get_mailbox() |
81 | self.assertEqual(list, type(mailbox)) | |
82 | self.assertEqual(diaspy.conversations.Conversation, type(mailbox[0])) | |
83 | ||
f2eaa3c7 | 84 | |
f3eaa601 MM |
85 | class StreamTest(unittest.TestCase): |
86 | def testGetting(self): | |
87 | stream = diaspy.streams.Generic(test_connection) | |
88 | ||
89 | def testGettingLength(self): | |
90 | stream = diaspy.streams.Generic(test_connection) | |
91 | len(stream) | |
92 | ||
93 | def testClearing(self): | |
94 | stream = diaspy.streams.Stream(test_connection) | |
95 | stream.clear() | |
96 | self.assertEqual(0, len(stream)) | |
97 | ||
98 | def testPurging(self): | |
99 | stream = diaspy.streams.Stream(test_connection) | |
100 | post = stream.post('#diaspy test') | |
101 | stream.update() | |
102 | post.delete() | |
103 | stream.purge() | |
104 | self.assertNotIn(post.post_id, [p.post_id for p in stream]) | |
105 | ||
106 | def testPostingText(self): | |
107 | stream = diaspy.streams.Stream(test_connection) | |
a98c6792 | 108 | post = stream.post(post_text) |
f3eaa601 | 109 | self.assertEqual(diaspy.models.Post, type(post)) |
27f09973 MM |
110 | |
111 | @unittest.skip('returns internal server error -- not our fault that it is failing') | |
f3eaa601 MM |
112 | def testPostingImage(self): |
113 | stream = diaspy.streams.Stream(test_connection) | |
a98c6792 | 114 | stream.post(text=post_text, photo='test-image.png') |
f3eaa601 MM |
115 | |
116 | def testingAddingTag(self): | |
117 | ft = diaspy.streams.FollowedTags(test_connection) | |
118 | ft.add('test') | |
119 | ||
27a28aaf MM |
120 | def testAspectsAdd(self): |
121 | aspects = diaspy.streams.Aspects(test_connection) | |
278febce MM |
122 | aspects.add(testconf.test_aspect_name_fake) |
123 | testconf.test_aspect_id = aspects.add(testconf.test_aspect_name) | |
27a28aaf | 124 | |
63cc182d MM |
125 | def testAspectsGettingID(self): |
126 | aspects = diaspy.streams.Aspects(test_connection) | |
278febce MM |
127 | id = aspects.getAspectID(testconf.test_aspect_name) |
128 | self.assertEqual(testconf.test_aspect_id, id) | |
63cc182d | 129 | |
1467ec15 | 130 | def testAspectsRemoveById(self): |
27a28aaf | 131 | aspects = diaspy.streams.Aspects(test_connection) |
278febce MM |
132 | aspects.remove(testconf.test_aspect_id) |
133 | self.assertEqual(-1, aspects.getAspectID(testconf.test_aspect_name)) | |
27a28aaf | 134 | |
1467ec15 MM |
135 | def testAspectsRemoveByName(self): |
136 | aspects = diaspy.streams.Aspects(test_connection) | |
278febce MM |
137 | aspects.remove(name=testconf.test_aspect_name_fake) |
138 | self.assertEqual(-1, aspects.getAspectID(testconf.test_aspect_name_fake)) | |
1467ec15 | 139 | |
27a28aaf MM |
140 | def testActivity(self): |
141 | activity = diaspy.streams.Activity(test_connection) | |
142 | ||
143 | def testMentionsStream(self): | |
144 | mentions = diaspy.streams.Mentions(test_connection) | |
145 | ||
f3eaa601 MM |
146 | |
147 | class UserTests(unittest.TestCase): | |
148 | def testHandleSeparatorRaisingExceptions(self): | |
149 | user = diaspy.people.User(test_connection) | |
150 | handles = ['user.pod.example.com', | |
151 | 'user@podexamplecom', | |
152 | '@pod.example.com', | |
153 | 'use r@pod.example.com', | |
154 | 'user0@pod300 example.com', | |
155 | ] | |
156 | for h in handles: | |
141216df MM |
157 | self.assertRaises(Exception, user._sephandle, h) |
158 | ||
159 | def testGettingUserByHandle(self): | |
160 | user = diaspy.people.User(test_connection) | |
161 | user.fetchhandle(testconf.diaspora_id) | |
162 | self.assertEqual(testconf.guid, user['guid']) | |
a8fdc14a | 163 | self.assertEqual(testconf.diaspora_name, user['diaspora_name']) |
141216df | 164 | self.assertIn('id', user.data) |
a8fdc14a | 165 | self.assertIn('image_urls', user.data) |
141216df MM |
166 | self.assertEqual(type(user.stream), diaspy.streams.Outer) |
167 | ||
168 | def testGettingUserByGUID(self): | |
169 | user = diaspy.people.User(test_connection) | |
170 | user.fetchguid(testconf.guid) | |
171 | self.assertEqual(testconf.diaspora_id, user['diaspora_id']) | |
a8fdc14a | 172 | self.assertEqual(testconf.diaspora_name, user['diaspora_name']) |
141216df | 173 | self.assertIn('id', user.data) |
a8fdc14a | 174 | self.assertIn('image_urls', user.data) |
141216df | 175 | self.assertEqual(type(user.stream), diaspy.streams.Outer) |
f3eaa601 MM |
176 | |
177 | ||
dd0a4d9f MM |
178 | class ContactsTest(unittest.TestCase): |
179 | def testGetOnlySharing(self): | |
180 | contacts = diaspy.people.Contacts(test_connection) | |
7a818fdb MM |
181 | result = contacts.get(set='only_sharing') |
182 | for i in result: | |
dd0a4d9f MM |
183 | self.assertEqual(diaspy.people.User, type(i)) |
184 | ||
27f09973 MM |
185 | def testGetAll(self): |
186 | contacts = diaspy.people.Contacts(test_connection) | |
7a818fdb MM |
187 | result = contacts.get(set='all') |
188 | for i in result: | |
27f09973 MM |
189 | self.assertEqual(diaspy.people.User, type(i)) |
190 | ||
191 | def testGet(self): | |
192 | contacts = diaspy.people.Contacts(test_connection) | |
7a818fdb MM |
193 | result = contacts.get() |
194 | for i in result: | |
27f09973 MM |
195 | self.assertEqual(diaspy.people.User, type(i)) |
196 | ||
dd0a4d9f | 197 | |
1467ec15 MM |
198 | class PostTests(unittest.TestCase): |
199 | def testStringConversion(self): | |
200 | s = diaspy.streams.Stream(test_connection) | |
1467ec15 MM |
201 | |
202 | def testRepr(self): | |
203 | s = diaspy.streams.Stream(test_connection) | |
1467ec15 MM |
204 | |
205 | ||
33a45682 | 206 | if __name__ == '__main__': unittest.main() |