##// END OF EJS Templates
add path2url and url2path to html.utils
add path2url and url2path to html.utils

File last commit:

r13048:56ccf804
r13054:42ddf846
Show More
test_sessions_api.py
94 lines | 3.1 KiB | text/x-python | PythonLexer
Zachary Sailer
add tests for session api
r13044 """Test the sessions web service API."""
import os
import sys
import json
from zmq.utils import jsonapi
import requests
Zachary Sailer
Code review changes....
r13048 from IPython.html.utils import url_path_join
Zachary Sailer
add tests for session api
r13044 from IPython.html.tests.launchnotebook import NotebookTestBase
class SessionAPITest(NotebookTestBase):
"""Test the sessions web service API"""
def notebook_url(self):
Zachary Sailer
Code review changes....
r13048 return url_path_join(super(SessionAPITest,self).base_url(), 'api/notebooks')
Zachary Sailer
add tests for session api
r13044
def session_url(self):
return super(SessionAPITest,self).base_url() + 'api/sessions'
def mknb(self, name='', path='/'):
url = self.notebook_url() + path
return url, requests.post(url)
def delnb(self, name, path='/'):
url = self.notebook_url() + path + name
r = requests.delete(url)
return r.status_code
def test_no_sessions(self):
"""Make sure there are no sessions running at the start"""
url = self.session_url()
r = requests.get(url)
self.assertEqual(r.json(), [])
def test_session_root_handler(self):
# POST a session
url, nb = self.mknb()
notebook = nb.json()
param = {'notebook_path': notebook['path'] + notebook['name']}
r = requests.post(self.session_url(), params=param)
data = r.json()
assert isinstance(data, dict)
Zachary Sailer
review fixes on tests, add extra kernel api test
r13045 self.assertIn('name', data)
Zachary Sailer
add tests for session api
r13044 self.assertEqual(data['name'], notebook['name'])
# GET sessions
r = requests.get(self.session_url())
assert isinstance(r.json(), list)
assert isinstance(r.json()[0], dict)
self.assertEqual(r.json()[0]['id'], data['id'])
# Clean up
self.delnb('Untitled0.ipynb')
sess_url = self.session_url() +'/'+data['id']
r = requests.delete(sess_url)
self.assertEqual(r.status_code, 204)
def test_session_handler(self):
# Create a session
url, nb = self.mknb()
notebook = nb.json()
param = {'notebook_path': notebook['path'] + notebook['name']}
r = requests.post(self.session_url(), params=param)
session = r.json()
# GET a session
sess_url = self.session_url() + '/' + session['id']
r = requests.get(sess_url)
assert isinstance(r.json(), dict)
self.assertEqual(r.json(), session)
# PATCH a session
data = {'notebook_path': 'test.ipynb'}
r = requests.patch(sess_url, data=jsonapi.dumps(data))
# Patching the notebook webservice too (just for consistency)
requests.patch(self.notebook_url() + '/Untitled0.ipynb',
data=jsonapi.dumps({'name':'test.ipynb'}))
assert isinstance(r.json(), dict)
Zachary Sailer
review fixes on tests, add extra kernel api test
r13045 self.assertIn('name', r.json())
self.assertIn('id', r.json())
Zachary Sailer
add tests for session api
r13044 self.assertEqual(r.json()['name'], 'test.ipynb')
self.assertEqual(r.json()['id'], session['id'])
# DELETE a session
r = requests.delete(sess_url)
self.assertEqual(r.status_code, 204)
r = requests.get(self.session_url())
Zachary Sailer
review fixes on tests, add extra kernel api test
r13045 self.assertEqual(r.json(), [])
Zachary Sailer
add tests for session api
r13044
# Clean up
r = self.delnb('test.ipynb')
Zachary Sailer
review fixes on tests, add extra kernel api test
r13045 self.assertEqual(r, 204)