diff --git a/tests/integration_api/__init__.py b/tests/integration_api/__init__.py index aa8d8fcdc3..ebd3f0d135 100644 --- a/tests/integration_api/__init__.py +++ b/tests/integration_api/__init__.py @@ -14,10 +14,14 @@ from common.common import BASE_URL, USERNAME, PASSWORD import requests, re +BASE_URL = BASE_URL PING_URL = BASE_URL + u'/api2/ping/' 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' + META_AUTH = {'username': USERNAME, 'password': PASSWORD} def get_auth_token(): @@ -29,10 +33,13 @@ def get_auth_token(): return None return token +_token = get_auth_token() +if (_token != None): + _instance = requests.Session() + _instance.headers.update({'Authorization': 'Token ' + _token}) +else: + _instance = None + def get_authed_instance(): - token = get_auth_token() - if (token == None): - return None - s = requests.Session() - s.headers.update({'Authorization': 'Token ' + token}) - return s + return _instance + diff --git a/tests/integration_api/account.py b/tests/integration_api/account.py new file mode 100644 index 0000000000..c9f6d1bfc6 --- /dev/null +++ b/tests/integration_api/account.py @@ -0,0 +1,67 @@ +from integration_api import ACCOUNTS_URL, ACCOUNT_INFO_URL, get_authed_instance +from integration_api import USERNAME +import unittest + +ACCOUNT_USERNAME = u'test_tmp@test.com' +ACCOUNT_PASSWORD = r'test_test' +ACCOUNT_PASSWORD2 = r'test_test2' +ACCOUNT_URL = ACCOUNTS_URL + ACCOUNT_USERNAME + u'/' + +class AccountApiTestCase(unittest.TestCase): + + def setUp(self): + self.requests = get_authed_instance() + self.assertIsNotNone(self.requests) + + def testCheckAccountInfoApi(self): + res = self.requests.get(ACCOUNT_INFO_URL) + self.assertEqual(res.status_code, 200) + json = res.json() + self.assertIsNotNone(json) + self.assertEqual(json['email'], USERNAME) + self.assertIsNotNone(json['total']) + self.assertIsNotNone(json['usage']) + + def testListAccountsApi(self): + res = self.requests.get(ACCOUNTS_URL) + self.assertEqual(res.status_code, 200) + self.assertIsNotNone(res.json()) + found = False + for i in res.json(): + if (i['email'] == USERNAME): + found = True + self.assertEqual(found, True) + + def testCreateAccountApi(self): + data = { 'password': ACCOUNT_PASSWORD } + res = self.requests.put(ACCOUNT_URL, data=data) + self.assertEqual(res.status_code, 201) + self.assertEqual(res.text, u'"success"') + self.requests.delete(ACCOUNT_URL) + + def testUpdateAccountApi(self): + data = { 'password': ACCOUNT_PASSWORD } + self.requests.put(ACCOUNT_URL, data=data) + data = { 'password': ACCOUNT_PASSWORD2, 'is_staff': 1, + 'is_active': 1 } + res = self.requests.put(ACCOUNT_URL, data=data) + self.assertEqual(res.status_code, 200) + self.assertEqual(res.text, u'"success"') + self.requests.delete(ACCOUNT_URL) + #TODO: verify updated account + + def testDeleteAccountApi(self): + data = { 'password': ACCOUNT_PASSWORD } + res = self.requests.put(ACCOUNT_URL, data=data) + res = self.requests.delete(ACCOUNT_URL) + self.assertEqual(res.status_code, 200) + self.assertEqual(res.text, u'"success"') + res = self.requests.get(ACCOUNTS_URL) + found = False + for i in res.json(): + if (i['email'] == ACCOUNT_USERNAME): + found = True + self.assertEqual(found, False) + +if __name__ == '__main__': + unittest.main(verbosity=2) diff --git a/tests/integration_suite.py b/tests/integration_suite.py index c809302f04..fdf6917fe7 100644 --- a/tests/integration_suite.py +++ b/tests/integration_suite.py @@ -8,10 +8,12 @@ def suite(): )) from integration_api.ping import PingApiTestCase - from integration_api.authping import AuthPingApiTestCase + from integration_api.authping import AuthPingApiTestCase + from integration_api.account import AccountApiTestCase integration_api_suite = unittest.TestSuite((\ unittest.makeSuite(PingApiTestCase), unittest.makeSuite(AuthPingApiTestCase), + unittest.makeSuite(AccountApiTestCase), )) return unittest.TestSuite([integration_api_suite, integration_suite])