47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
"""Test the basic /api endpoints"""
|
|
|
|
from datetime import timedelta
|
|
|
|
from notebook._tz import isoformat, utcnow
|
|
from notebook.utils import url_path_join
|
|
from notebook.tests.launchnotebook import NotebookTestBase
|
|
|
|
|
|
class APITest(NotebookTestBase):
|
|
"""Test the kernels web service API"""
|
|
|
|
def _req(self, verb, path, **kwargs):
|
|
r = self.request(verb, url_path_join('api', path))
|
|
r.raise_for_status()
|
|
return r
|
|
|
|
def get(self, path, **kwargs):
|
|
return self._req('GET', path)
|
|
|
|
def test_get_spec(self):
|
|
r = self.get('spec.yaml')
|
|
assert r.text
|
|
|
|
def test_get_status(self):
|
|
r = self.get('status')
|
|
data = r.json()
|
|
assert data['connections'] == 0
|
|
assert data['kernels'] == 0
|
|
assert data['last_activity'].endswith('Z')
|
|
assert data['started'].endswith('Z')
|
|
assert data['started'] == isoformat(self.notebook.web_app.settings['started'])
|
|
|
|
def test_no_track_activity(self):
|
|
# initialize with old last api activity
|
|
old = utcnow() - timedelta(days=1)
|
|
settings = self.notebook.web_app.settings
|
|
settings['api_last_activity'] = old
|
|
# accessing status doesn't update activity
|
|
self.get('status')
|
|
assert settings['api_last_activity'] == old
|
|
# accessing with ?no_track_activity doesn't update activity
|
|
self.get('contents?no_track_activity=1')
|
|
assert settings['api_last_activity'] == old
|
|
# accessing without ?no_track_activity does update activity
|
|
self.get('contents')
|
|
assert settings['api_last_activity'] > old
|