Added system endpoints
This commit is contained in:
parent
ebaf3bc036
commit
09203ff2b8
3 changed files with 99 additions and 0 deletions
70
tests/unit/test_system.py
Normal file
70
tests/unit/test_system.py
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
import json
|
||||||
|
import httpretty
|
||||||
|
from httpretty import GET
|
||||||
|
|
||||||
|
# TEMP: Temporary hack until httpretty string checking is fixed
|
||||||
|
if httpretty.compat.PY3:
|
||||||
|
httpretty.core.basestring = (bytes, str)
|
||||||
|
|
||||||
|
try:
|
||||||
|
import unittest2 as unittest # Python2.6
|
||||||
|
except ImportError:
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
import trovebox
|
||||||
|
|
||||||
|
class TestSystem(unittest.TestCase):
|
||||||
|
test_host = "test.example.com"
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.client = trovebox.Trovebox(host=self.test_host)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _return_value(result, message="", code=200):
|
||||||
|
return json.dumps({"message": message, "code": code, "result": result})
|
||||||
|
|
||||||
|
class TestSystemVersion(TestSystem):
|
||||||
|
test_result = {"api": "v2",
|
||||||
|
"database": "2.0.0"}
|
||||||
|
|
||||||
|
@httpretty.activate
|
||||||
|
def test_version(self):
|
||||||
|
"""Check that the version dictionary is returned correctly"""
|
||||||
|
httpretty.register_uri(GET, uri="http://test.example.com/system/version.json",
|
||||||
|
body=self._return_value(self.test_result),
|
||||||
|
status=200)
|
||||||
|
response = self.client.system.version()
|
||||||
|
|
||||||
|
self.assertEqual(response, self.test_result)
|
||||||
|
|
||||||
|
class TestSystemDiagnostics(TestSystem):
|
||||||
|
test_result = {'database': [{'label': 'failure',
|
||||||
|
'message': 'Could not properly connect to the database.',
|
||||||
|
'status': False}],
|
||||||
|
}
|
||||||
|
|
||||||
|
@httpretty.activate
|
||||||
|
def test_diagnostics_pass(self):
|
||||||
|
"""Check that the diagnostics dictionary is returned correctly on success"""
|
||||||
|
httpretty.register_uri(GET, uri="http://test.example.com/system/diagnostics.json",
|
||||||
|
body=self._return_value(self.test_result),
|
||||||
|
status=200)
|
||||||
|
response = self.client.system.diagnostics()
|
||||||
|
|
||||||
|
self.assertEqual(response, self.test_result)
|
||||||
|
|
||||||
|
@httpretty.activate
|
||||||
|
def test_diagnostics_fail(self):
|
||||||
|
"""
|
||||||
|
Check that the diagnostics dictionary is returned correctly on failure.
|
||||||
|
Although the JSON code is 500, no exception should be raised.
|
||||||
|
"""
|
||||||
|
# On failure, the diagnostics endpoint returns a JSON code of 500
|
||||||
|
# and a response status code of 200.
|
||||||
|
httpretty.register_uri(GET, uri="http://test.example.com/system/diagnostics.json",
|
||||||
|
body=self._return_value(self.test_result, code=500),
|
||||||
|
status=200)
|
||||||
|
response = self.client.system.diagnostics()
|
||||||
|
|
||||||
|
self.assertEqual(response, self.test_result)
|
|
@ -9,6 +9,7 @@ from trovebox.api import api_tag
|
||||||
from trovebox.api import api_album
|
from trovebox.api import api_album
|
||||||
from trovebox.api import api_action
|
from trovebox.api import api_action
|
||||||
from trovebox.api import api_activity
|
from trovebox.api import api_activity
|
||||||
|
from trovebox.api import api_system
|
||||||
|
|
||||||
LATEST_API_VERSION = 2
|
LATEST_API_VERSION = 2
|
||||||
|
|
||||||
|
@ -41,3 +42,4 @@ class Trovebox(Http):
|
||||||
self.action = api_action.ApiAction(self)
|
self.action = api_action.ApiAction(self)
|
||||||
self.activities = api_activity.ApiActivities(self)
|
self.activities = api_activity.ApiActivities(self)
|
||||||
self.activity = api_activity.ApiActivity(self)
|
self.activity = api_activity.ApiActivity(self)
|
||||||
|
self.system = api_system.ApiSystem(self)
|
||||||
|
|
27
trovebox/api/api_system.py
Normal file
27
trovebox/api/api_system.py
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
"""
|
||||||
|
api_system.py : Trovebox System API Classes
|
||||||
|
"""
|
||||||
|
from .api_base import ApiBase
|
||||||
|
|
||||||
|
class ApiSystem(ApiBase):
|
||||||
|
""" Definitions of /system/ API endpoints """
|
||||||
|
def version(self, **kwds):
|
||||||
|
"""
|
||||||
|
Endpoint: /system/version.json
|
||||||
|
|
||||||
|
Returns a dictionary containing the various server version strings
|
||||||
|
"""
|
||||||
|
return self._client.get("/system/version.json", **kwds)["result"]
|
||||||
|
|
||||||
|
def diagnostics(self, **kwds):
|
||||||
|
"""
|
||||||
|
Endpoint: /system/diagnostics.json
|
||||||
|
|
||||||
|
Runs a set of diagnostic tests on the server.
|
||||||
|
Returns a dictionary containing the results.
|
||||||
|
"""
|
||||||
|
# Don't process the result automatically, since this raises an exception
|
||||||
|
# on failure, which doesn't provide the cause of the failure
|
||||||
|
self._client.get("/system/diagnostics.json", process_response=False,
|
||||||
|
**kwds)
|
||||||
|
return self._client.last_response.json()["result"]
|
Loading…
Add table
Add a link
Reference in a new issue