diff --git a/tests/common/utils.py b/tests/common/utils.py new file mode 100644 index 0000000000..fc0ad111df --- /dev/null +++ b/tests/common/utils.py @@ -0,0 +1,4 @@ +import random, string + +def randomword(length): + return ''.join(random.choice(string.lowercase) for i in range(length)) diff --git a/tests/integration_api/__init__.py b/tests/integration_api/__init__.py index ebd3f0d135..701f9fad6f 100644 --- a/tests/integration_api/__init__.py +++ b/tests/integration_api/__init__.py @@ -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} diff --git a/tests/integration_api/gmembers.py b/tests/integration_api/gmembers.py new file mode 100644 index 0000000000..6486b48218 --- /dev/null +++ b/tests/integration_api/gmembers.py @@ -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) diff --git a/tests/integration_api/groupmsgs.py b/tests/integration_api/groupmsgs.py new file mode 100644 index 0000000000..315c59b966 --- /dev/null +++ b/tests/integration_api/groupmsgs.py @@ -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) diff --git a/tests/integration_api/groups.py b/tests/integration_api/groups.py new file mode 100644 index 0000000000..d68820d744 --- /dev/null +++ b/tests/integration_api/groups.py @@ -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) diff --git a/tests/integration_api/starredfiles.py b/tests/integration_api/starredfiles.py new file mode 100644 index 0000000000..0ec79bbfe5 --- /dev/null +++ b/tests/integration_api/starredfiles.py @@ -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) diff --git a/tests/integration_api/usermsgs.py b/tests/integration_api/usermsgs.py new file mode 100644 index 0000000000..5765a2b69d --- /dev/null +++ b/tests/integration_api/usermsgs.py @@ -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) diff --git a/tests/integration_suite.py b/tests/integration_suite.py index fdf6917fe7..821211a07e 100644 --- a/tests/integration_suite.py +++ b/tests/integration_suite.py @@ -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])