| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- """Test the bundlers API."""
- # Copyright (c) Jupyter Development Team.
- # Distributed under the terms of the Modified BSD License.
- import io
- from os.path import join as pjoin
- from notebook.tests.launchnotebook import NotebookTestBase
- from nbformat import write
- from nbformat.v4 import (
- new_notebook, new_markdown_cell, new_code_cell, new_output,
- )
- try:
- from unittest.mock import patch
- except ImportError:
- from mock import patch # py3
-
- def bundle(handler, model):
- """Bundler test stub. Echo the notebook path."""
- handler.finish(model['path'])
- class BundleAPITest(NotebookTestBase):
- """Test the bundlers web service API"""
- @classmethod
- def setup_class(cls):
- """Make a test notebook. Borrowed from nbconvert test. Assumes the class
- teardown will clean it up in the end."""
- super(BundleAPITest, cls).setup_class()
- nbdir = cls.notebook_dir
- nb = new_notebook()
- nb.cells.append(new_markdown_cell(u'Created by test'))
- cc1 = new_code_cell(source=u'print(2*6)')
- cc1.outputs.append(new_output(output_type="stream", text=u'12'))
- nb.cells.append(cc1)
-
- with io.open(pjoin(nbdir, 'testnb.ipynb'), 'w',
- encoding='utf-8') as f:
- write(nb, f, version=4)
- def test_missing_bundler_arg(self):
- """Should respond with 400 error about missing bundler arg"""
- resp = self.request('GET', 'bundle/fake.ipynb')
- self.assertEqual(resp.status_code, 400)
- self.assertIn('Missing argument bundler', resp.text)
- def test_notebook_not_found(self):
- """Shoudl respond with 404 error about missing notebook"""
- resp = self.request('GET', 'bundle/fake.ipynb',
- params={'bundler': 'fake_bundler'})
- self.assertEqual(resp.status_code, 404)
- self.assertIn('Not Found', resp.text)
- def test_bundler_not_enabled(self):
- """Should respond with 400 error about disabled bundler"""
- resp = self.request('GET', 'bundle/testnb.ipynb',
- params={'bundler': 'fake_bundler'})
- self.assertEqual(resp.status_code, 400)
- self.assertIn('Bundler fake_bundler not enabled', resp.text)
- def test_bundler_import_error(self):
- """Should respond with 500 error about failure to load bundler module"""
- with patch('notebook.bundler.handlers.BundlerHandler.get_bundler') as mock:
- mock.return_value = {'module_name': 'fake_module'}
- resp = self.request('GET', 'bundle/testnb.ipynb',
- params={'bundler': 'fake_bundler'})
- mock.assert_called_with('fake_bundler')
- self.assertEqual(resp.status_code, 500)
- self.assertIn('Could not import bundler fake_bundler', resp.text)
-
- def test_bundler_invoke(self):
- """Should respond with 200 and output from test bundler stub"""
- with patch('notebook.bundler.handlers.BundlerHandler.get_bundler') as mock:
- mock.return_value = {'module_name': 'notebook.bundler.tests.test_bundler_api'}
- resp = self.request('GET', 'bundle/testnb.ipynb',
- params={'bundler': 'stub_bundler'})
- mock.assert_called_with('stub_bundler')
- self.assertEqual(resp.status_code, 200)
- self.assertIn('testnb.ipynb', resp.text)
|