web-base/test/apiTest.py

73 lines
2.7 KiB
Python

from phpTest import PhpTest
class ApiTestCase(PhpTest):
def __init__(self):
super().__init__({
"Testing login…": self.test_login,
"Testing already logged in…": self.test_already_logged_in,
# ApiKeys
"Testing get api keys empty…": self.test_get_api_keys_empty,
"Testing create api key…": self.test_create_api_key,
"Testing refresh api key…": self.test_refresh_api_key,
"Testing revoke api key…": self.test_revoke_api_key,
# Notifications
"Testing fetch notifications…": self.test_fetch_notifications,
"Testing logout…": self.test_logout,
})
def api(self, method):
return "/api/%s" % method
def getApiKeys(self):
obj = self.httpPost(self.api("apiKey/fetch"))
self.assertEquals(True, obj["success"], obj["msg"])
return obj
def test_login(self):
obj = self.httpPost(self.api("user/login"), data={ "username": PhpTest.ADMIN_USERNAME, "password": PhpTest.ADMIN_PASSWORD })
self.assertEquals(True, obj["success"], obj["msg"])
return obj
def test_already_logged_in(self):
obj = self.test_login()
self.assertEquals("You are already logged in", obj["msg"])
def test_get_api_keys_empty(self):
obj = self.getApiKeys()
self.assertEquals([], obj["api_keys"])
def test_create_api_key(self):
obj = self.httpPost(self.api("apiKey/create"))
self.assertEquals(True, obj["success"], obj["msg"])
self.assertTrue("api_key" in obj)
self.apiKey = obj["api_key"]
obj = self.getApiKeys()
self.assertEquals(1, len(obj["api_keys"]))
self.assertDictEqual(self.apiKey, obj["api_keys"][0])
def test_refresh_api_key(self):
obj = self.httpPost(self.api("apiKey/refresh"), data={"id": self.apiKey["uid"]})
self.assertEquals(True, obj["success"], obj["msg"])
self.assertTrue("valid_until" in obj)
self.assertTrue(obj["valid_until"] >= self.apiKey["valid_until"])
def test_revoke_api_key(self):
obj = self.httpPost(self.api("apiKey/revoke"), data={"id": self.apiKey["uid"]})
self.assertEquals(True, obj["success"], obj["msg"])
self.test_get_api_keys_empty()
def test_fetch_notifications(self):
obj = self.httpPost(self.api("notifications/fetch"))
self.assertEquals(True, obj["success"], obj["msg"])
def test_logout(self):
obj = self.httpPost(self.api("user/logout"))
self.assertEquals(True, obj["success"], obj["msg"])
obj = self.httpPost(self.api("user/logout"))
self.assertEquals(False, obj["success"])