mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-01 15:09:14 +00:00
[tests] add api test for group members, groups, group msgs, user msgs
This commit is contained in:
4
tests/common/utils.py
Normal file
4
tests/common/utils.py
Normal file
@@ -0,0 +1,4 @@
|
||||
import random, string
|
||||
|
||||
def randomword(length):
|
||||
return ''.join(random.choice(string.lowercase) for i in range(length))
|
@@ -20,7 +20,15 @@ TOKEN_URL = BASE_URL + u'/api2/auth-token/'
|
||||
AUTH_PING_URL = BASE_URL + u'/api2/auth/ping/'
|
||||
|
||||
ACCOUNTS_URL = BASE_URL + u'/api2/accounts/'
|
||||
ACCOUNT_INFO_URL = BASE_URL + u'/api2/account/info'
|
||||
ACCOUNT_INFO_URL = BASE_URL + u'/api2/account/info/'
|
||||
USERMSGS_URL = BASE_URL + u'/api2/user/msgs/' + USERNAME + u'/'
|
||||
USERMSGS_COUNT_URL = BASE_URL + u'/api2/unseen_messages/'
|
||||
GROUP_URL = BASE_URL + u'/api2/group/'
|
||||
GROUPS_URL = BASE_URL + u'/api2/groups/'
|
||||
GROUPMSGS_URL = BASE_URL + u'/api2/group/msgs/'
|
||||
GROUPMSGS_NREPLY_URL = BASE_URL + u'/api2/new_replies/'
|
||||
|
||||
STARREDFILES_URL = BASE_URL + u'/api2/starredfiles/'
|
||||
|
||||
META_AUTH = {'username': USERNAME, 'password': PASSWORD}
|
||||
|
||||
|
37
tests/integration_api/gmembers.py
Normal file
37
tests/integration_api/gmembers.py
Normal file
@@ -0,0 +1,37 @@
|
||||
from integration_api import ACCOUNTS_URL, GROUPS_URL, get_authed_instance
|
||||
from common.utils import randomword
|
||||
import unittest
|
||||
|
||||
class GroupMemeberApiTestCase(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.requests = get_authed_instance()
|
||||
self.assertIsNotNone(self.requests)
|
||||
self.name = randomword(4) + u'@test.com'
|
||||
data = {'password': 'testtest'}
|
||||
self.requests.put(ACCOUNTS_URL + self.name + u'/', data=data)
|
||||
self.gname = randomword(16)
|
||||
data = { 'group_name': self.gname }
|
||||
res = self.requests.put(GROUPS_URL, data=data)
|
||||
self.gid = res.json()['group_id']
|
||||
self.gurl = GROUPS_URL + str(self.gid) + u'/members/'
|
||||
|
||||
def tearDown(self):
|
||||
self.requests.delete(ACCOUNTS_URL + self.name + u'/')
|
||||
|
||||
def testAddGroupMemberApi(self):
|
||||
data = { 'user_name': self.name }
|
||||
res = self.requests.put(self.gurl, data=data)
|
||||
self.assertEqual(res.status_code, 200)
|
||||
self.assertEqual(res.json()['success'], True)
|
||||
self.requests.delete(self.gurl, data=data)
|
||||
|
||||
def testRemoveGroupMemberApi(self):
|
||||
data = { 'user_name': self.name }
|
||||
self.requests.put(self.gurl, data=data)
|
||||
res = self.requests.delete(self.gurl, data=data)
|
||||
self.assertEqual(res.status_code, 200)
|
||||
self.assertEqual(res.json()['success'], True)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main(verbosity=2)
|
74
tests/integration_api/groupmsgs.py
Normal file
74
tests/integration_api/groupmsgs.py
Normal file
@@ -0,0 +1,74 @@
|
||||
from integration_api import GROUPS_URL, GROUPMSGS_URL, GROUPMSGS_NREPLY_URL
|
||||
from integration_api import GROUP_URL, get_authed_instance
|
||||
from common.utils import randomword
|
||||
import unittest
|
||||
|
||||
class GroupMsgsApiTestCase(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.requests = get_authed_instance()
|
||||
self.assertIsNotNone(self.requests)
|
||||
self.gname = randomword(16)
|
||||
data = { 'group_name': self.gname }
|
||||
res = self.requests.put(GROUPS_URL, data=data)
|
||||
self.gid = res.json()['group_id']
|
||||
self.gmurl = GROUPMSGS_URL + str(self.gid) + u'/'
|
||||
self.gmurl_ = GROUP_URL + str(self.gid) + u'/msg/'
|
||||
|
||||
def testListGroupMsgsApi(self):
|
||||
res = self.requests.get(self.gmurl)
|
||||
self.assertEqual(res.status_code, 200)
|
||||
json = res.json()
|
||||
self.assertIsNotNone(json)
|
||||
self.assertIsNotNone(json['next_page'])
|
||||
self.assertIsNotNone(json['msgs'])
|
||||
|
||||
def testPostGroupMsgApi(self):
|
||||
#repo_id and path is not tested
|
||||
data = { 'message': 'test message' }
|
||||
res = self.requests.post(self.gmurl, data=data)
|
||||
self.assertEqual(res.status_code, 200)
|
||||
self.assertIsNotNone(res.json()['msgid'])
|
||||
|
||||
def testReplyGroupMsgApi(self):
|
||||
data = { 'message': 'test message' }
|
||||
res = self.requests.post(self.gmurl, data=data)
|
||||
msgid = res.json()['msgid']
|
||||
res = self.requests.post(self.gmurl_ + str(msgid) + u'/', data=data)
|
||||
self.assertEqual(res.status_code, 200)
|
||||
self.assertIsNotNone(res.json()['msgid'])
|
||||
|
||||
def testGetGroupMsgDetailApi(self):
|
||||
data = { 'message': 'test message' }
|
||||
res = self.requests.post(self.gmurl, data=data)
|
||||
msgid = res.json()['msgid']
|
||||
res = self.requests.get(self.gmurl_ + str(msgid) + u'/')
|
||||
self.assertEqual(res.status_code, 200)
|
||||
json = res.json()
|
||||
self.assertIsNotNone(json)
|
||||
self.assertIsNotNone(json['reply_cnt'])
|
||||
self.assertIsNotNone(json['timestamp'])
|
||||
self.assertIsNotNone(json['replies'])
|
||||
self.assertIsNotNone(json['from_email'])
|
||||
self.assertIsNotNone(json['msgid'])
|
||||
self.assertIsNotNone(json['msg'])
|
||||
self.assertIsNotNone(json['nickname'])
|
||||
|
||||
def testNewRepliesGroupMsgApi(self):
|
||||
data = { 'message': 'test message' }
|
||||
res = self.requests.post(self.gmurl, data=data)
|
||||
res = self.requests.get(GROUPMSGS_NREPLY_URL)
|
||||
self.assertEqual(res.status_code, 200)
|
||||
json = res.json()
|
||||
self.assertIsNotNone(json)
|
||||
for reply in json:
|
||||
self.assertIsNotNone(reply['reply_cnt'])
|
||||
self.assertIsNotNone(reply['timestamp'])
|
||||
self.assertIsNotNone(reply['replies'])
|
||||
self.assertIsNotNone(reply['from_email'])
|
||||
self.assertIsNotNone(reply['msgid'])
|
||||
self.assertIsNotNone(reply['msg'])
|
||||
self.assertIsNotNone(reply['nickname'])
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main(verbosity=2)
|
41
tests/integration_api/groups.py
Normal file
41
tests/integration_api/groups.py
Normal file
@@ -0,0 +1,41 @@
|
||||
from integration_api import GROUPS_URL, get_authed_instance
|
||||
from common.utils import randomword
|
||||
import unittest
|
||||
|
||||
class GroupsApiTestCase(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.requests = get_authed_instance()
|
||||
self.assertIsNotNone(self.requests)
|
||||
|
||||
def testListGroupsApi(self):
|
||||
data = { 'group_name': 'demo group' }
|
||||
self.requests.put(GROUPS_URL, data=data)
|
||||
res = self.requests.get(GROUPS_URL)
|
||||
self.assertEqual(res.status_code, 200)
|
||||
json = res.json()
|
||||
self.assertIsNotNone(json)
|
||||
self.assertIsNotNone(json['replynum'])
|
||||
self.assertIsNotNone(json['groups'])
|
||||
self.assertGreater(len(json['groups']), 0)
|
||||
for group in json['groups']:
|
||||
self.assertIsNotNone(group['ctime'])
|
||||
self.assertIsNotNone(group['creator'])
|
||||
self.assertIsNotNone(group['msgnum'])
|
||||
self.assertIsNotNone(group['mtime'])
|
||||
self.assertIsNotNone(group['id'])
|
||||
self.assertIsNotNone(group['name'])
|
||||
|
||||
def testAddGroupApi(self):
|
||||
# We cannot create two groups which have the same group name or delete group
|
||||
# Hack it by creating group with a random name, hope it won't break ci
|
||||
data = { 'group_name': randomword(16) }
|
||||
res = self.requests.put(GROUPS_URL, data=data)
|
||||
self.assertEqual(res.status_code, 200)
|
||||
json = res.json()
|
||||
self.assertIsNotNone(json)
|
||||
self.assertIsNotNone(json['group_id'])
|
||||
self.assertEqual(json['success'], True)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main(verbosity=2)
|
32
tests/integration_api/starredfiles.py
Normal file
32
tests/integration_api/starredfiles.py
Normal file
@@ -0,0 +1,32 @@
|
||||
from integration_api import STARREDFILES_URL, get_authed_instance
|
||||
import unittest
|
||||
|
||||
class StarredFilesApiTestCase(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.requests = get_authed_instance()
|
||||
self.assertIsNotNone(self.requests)
|
||||
#todo upload file and star a file here
|
||||
|
||||
def testListStarredFilesApi(self):
|
||||
res = self.requests.get(STARREDFILES_URL)
|
||||
self.assertEqual(res.status_code, 200)
|
||||
json = res.json()
|
||||
self.assertIsNotNone(json)
|
||||
self.assertEqual(len(json), 0)
|
||||
|
||||
def testStarFileApi(self):
|
||||
data = { 'repo_id': '', 'p': '' }
|
||||
res = self.requests.post(STARREDFILES_URL, data=data)
|
||||
self.assertEqual(res.status_code, 201)
|
||||
self.assertEqual(res.text, u'"success"')
|
||||
|
||||
def testUnStarFileApi(self):
|
||||
data = { 'repo_id': '', 'p': '' }
|
||||
res = self.requests.delete(STARREDFILES_URL, data=data)
|
||||
self.assertEqual(res.status_code, 200)
|
||||
self.assertEqual(res.text, u'"success"')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main(verbosity=2)
|
38
tests/integration_api/usermsgs.py
Normal file
38
tests/integration_api/usermsgs.py
Normal file
@@ -0,0 +1,38 @@
|
||||
from integration_api import USERNAME, get_authed_instance
|
||||
from integration_api import USERMSGS_URL, USERMSGS_COUNT_URL
|
||||
import unittest
|
||||
|
||||
class UserMsgsApiTestCase(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.requests = get_authed_instance()
|
||||
self.assertIsNotNone(self.requests)
|
||||
|
||||
def testListUserMsgsApi(self):
|
||||
res = self.requests.get(USERMSGS_URL)
|
||||
self.assertEqual(res.status_code, 200)
|
||||
json = res.json()
|
||||
self.assertIsNotNone(json)
|
||||
self.assertEqual(json['to_email'], USERNAME)
|
||||
self.assertIsNotNone(json['next_page'])
|
||||
self.assertIsNotNone(json['msgs'])
|
||||
|
||||
def testReplyUserMsgApi(self):
|
||||
data = { 'id': '0', 'message': 'test' }
|
||||
res = self.requests.post(USERMSGS_URL, data=data)
|
||||
self.assertEqual(res.status_code, 200)
|
||||
json = res.json()
|
||||
self.assertIsNotNone(json)
|
||||
self.assertIsNotNone(json['msgid'])
|
||||
|
||||
def testCountUnseenMsgsApi(self):
|
||||
data = { 'id': '0', 'message': 'test' }
|
||||
self.requests.post(USERMSGS_URL, data=data)
|
||||
res = self.requests.get(USERMSGS_COUNT_URL, data=data)
|
||||
self.assertEqual(res.status_code, 200)
|
||||
json = res.json()
|
||||
self.assertIsNotNone(json)
|
||||
self.assertGreater(json['count'], 0)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main(verbosity=2)
|
@@ -10,10 +10,21 @@ def suite():
|
||||
from integration_api.ping import PingApiTestCase
|
||||
from integration_api.authping import AuthPingApiTestCase
|
||||
from integration_api.account import AccountApiTestCase
|
||||
from integration_api.usermsgs import UserMsgsApiTestCase
|
||||
from integration_api.groups import GroupsApiTestCase
|
||||
from integration_api.gmembers import GroupMemeberApiTestCase
|
||||
from integration_api.groupmsgs import GroupMsgsApiTestCase
|
||||
|
||||
from integration_api.starredfiles import StarredFilesApiTestCase
|
||||
integration_api_suite = unittest.TestSuite((\
|
||||
unittest.makeSuite(PingApiTestCase),
|
||||
unittest.makeSuite(AuthPingApiTestCase),
|
||||
unittest.makeSuite(AccountApiTestCase),
|
||||
unittest.makeSuite(UserMsgsApiTestCase),
|
||||
unittest.makeSuite(GroupsApiTestCase),
|
||||
unittest.makeSuite(GroupMemeberApiTestCase),
|
||||
unittest.makeSuite(GroupMsgsApiTestCase),
|
||||
#unittest.makeSuite(StarredFilesApiTestCase),
|
||||
))
|
||||
|
||||
return unittest.TestSuite([integration_api_suite, integration_suite])
|
||||
|
Reference in New Issue
Block a user