##// END OF EJS Templates
Move the display Promise into a lower level method,...
Move the display Promise into a lower level method, into the create view method of the widget manager. This makes sure that views created by parent views are also accounted for in the state/display order guarantee.

File last commit:

r18707:dc68aaa5
r18905:e8cb71d7
Show More
test_config_api.py
68 lines | 2.3 KiB | text/x-python | PythonLexer
Thomas Kluyver
Add REST API for retrieving, storing and updating config
r18703 # coding: utf-8
Thomas Kluyver
Apply JSON config updates recursively
r18705 """Test the config webservice API."""
Thomas Kluyver
Add REST API for retrieving, storing and updating config
r18703
import json
import requests
from IPython.html.utils import url_path_join
from IPython.html.tests.launchnotebook import NotebookTestBase
class ConfigAPI(object):
"""Wrapper for notebook API calls."""
def __init__(self, base_url):
self.base_url = base_url
def _req(self, verb, section, body=None):
response = requests.request(verb,
url_path_join(self.base_url, 'api/config', section),
data=body,
)
response.raise_for_status()
return response
def get(self, section):
return self._req('GET', section)
def set(self, section, values):
return self._req('PUT', section, json.dumps(values))
def modify(self, section, values):
return self._req('PATCH', section, json.dumps(values))
class APITest(NotebookTestBase):
Thomas Kluyver
Apply JSON config updates recursively
r18705 """Test the config web service API"""
Thomas Kluyver
Add REST API for retrieving, storing and updating config
r18703 def setUp(self):
self.config_api = ConfigAPI(self.base_url())
def test_create_retrieve_config(self):
sample = {'foo': 'bar', 'baz': 73}
r = self.config_api.set('example', sample)
self.assertEqual(r.status_code, 204)
r = self.config_api.get('example')
self.assertEqual(r.status_code, 200)
self.assertEqual(r.json(), sample)
def test_modify(self):
Thomas Kluyver
Apply JSON config updates recursively
r18705 sample = {'foo': 'bar', 'baz': 73,
'sub': {'a': 6, 'b': 7}, 'sub2': {'c': 8}}
Thomas Kluyver
Add REST API for retrieving, storing and updating config
r18703 self.config_api.set('example', sample)
r = self.config_api.modify('example', {'foo': None, # should delete foo
'baz': 75,
'wib': [1,2,3],
Thomas Kluyver
Apply JSON config updates recursively
r18705 'sub': {'a': 8, 'b': None, 'd': 9},
'sub2': {'c': None} # should delete sub2
Thomas Kluyver
Add REST API for retrieving, storing and updating config
r18703 })
self.assertEqual(r.status_code, 200)
Thomas Kluyver
Apply JSON config updates recursively
r18705 self.assertEqual(r.json(), {'baz': 75, 'wib': [1,2,3],
'sub': {'a': 8, 'd': 9}})
Thomas Kluyver
Add REST API for retrieving, storing and updating config
r18703
def test_get_unknown(self):
# We should get an empty config dictionary instead of a 404
r = self.config_api.get('nonexistant')
self.assertEqual(r.status_code, 200)
self.assertEqual(r.json(), {})