1
0
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:
Chilledheart
2014-08-28 02:45:58 +08:00
committed by lins05
parent f7f304096b
commit e65248bcc2
8 changed files with 246 additions and 1 deletions

4
tests/common/utils.py Normal file
View File

@@ -0,0 +1,4 @@
import random, string
def randomword(length):
return ''.join(random.choice(string.lowercase) for i in range(length))

View File

@@ -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}

View 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)

View 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)

View 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)

View 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)

View 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)

View File

@@ -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])