From ce729c59802e24fd901d63bc34594e942f86af82 2013-10-17 21:09:08 From: Zachary Sailer Date: 2013-10-17 21:09:08 Subject: [PATCH] url encode/decode tests added to nbmanager --- diff --git a/IPython/html/services/notebooks/filenbmanager.py b/IPython/html/services/notebooks/filenbmanager.py index 9f93f95..974696a 100644 --- a/IPython/html/services/notebooks/filenbmanager.py +++ b/IPython/html/services/notebooks/filenbmanager.py @@ -86,11 +86,11 @@ class FileNotebookManager(NotebookManager): def list_notebooks(self, path): """List all notebooks in the notebook dir.""" notebook_names = self.get_notebook_names(path) - notebook_mapping = [] + notebooks = [] for name in notebook_names: model = self.notebook_model(name, path, content=False) - notebook_mapping.append(model) - return notebook_mapping + notebooks.append(model) + return notebooks def change_notebook(self, data, notebook_name, notebook_path=None): """Changes notebook""" diff --git a/IPython/html/services/notebooks/nbmanager.py b/IPython/html/services/notebooks/nbmanager.py index 9f57723..318ebbc 100644 --- a/IPython/html/services/notebooks/nbmanager.py +++ b/IPython/html/services/notebooks/nbmanager.py @@ -73,11 +73,13 @@ class NotebookManager(LoggingConfigurable): return name, path def url_encode(self, path): - parts = path.split('/') + parts = os.path.split(path) + #parts = path.split('/') return os.path.join(*[quote(p) for p in parts]) def url_decode(self, path): - parts = path.split('/') + parts = os.path.split(path) + #parts = path.split('/') return os.path.join(*[unquote(p) for p in parts]) def _notebook_dir_changed(self, new): @@ -127,11 +129,6 @@ class NotebookManager(LoggingConfigurable): """ raise NotImplementedError('must be implemented in a subclass') - - def notebook_exists(self, notebook_path): - """Does a notebook exist?""" - - def notebook_model(self, notebook_name, notebook_path=None, content=True): """ Creates the standard notebook model """ last_modified, contents = self.read_notebook_object(notebook_name, notebook_path) diff --git a/IPython/html/services/notebooks/tests/test_nbmanager.py b/IPython/html/services/notebooks/tests/test_nbmanager.py index ab633df..b4accf5 100644 --- a/IPython/html/services/notebooks/tests/test_nbmanager.py +++ b/IPython/html/services/notebooks/tests/test_nbmanager.py @@ -35,12 +35,12 @@ class TestFileNotebookManager(TestCase): class TestNotebookManager(TestCase): def test_named_notebook_path(self): nm = NotebookManager() - + # doesn't end with ipynb, should just be path name, path = nm.named_notebook_path('hello') self.assertEqual(name, None) self.assertEqual(path, '/hello/') - + name, path = nm.named_notebook_path('/') self.assertEqual(name, None) self.assertEqual(path, '/') @@ -48,17 +48,43 @@ class TestNotebookManager(TestCase): name, path = nm.named_notebook_path('hello.ipynb') self.assertEqual(name, 'hello.ipynb') self.assertEqual(path, '/') - + name, path = nm.named_notebook_path('/hello.ipynb') self.assertEqual(name, 'hello.ipynb') self.assertEqual(path, '/') - + name, path = nm.named_notebook_path('/this/is/a/path/hello.ipynb') self.assertEqual(name, 'hello.ipynb') self.assertEqual(path, '/this/is/a/path/') - + name, path = nm.named_notebook_path('path/without/leading/slash/hello.ipynb') self.assertEqual(name, 'hello.ipynb') self.assertEqual(path, '/path/without/leading/slash/') + def test_url_encode(self): + nm = NotebookManager() + + # changes path or notebook name with special characters to url encoding + # these tests specifically encode paths with spaces + path = nm.url_encode('/this is a test/for spaces/') + self.assertEqual(path, '/this%20is%20a%20test/for%20spaces/') + + path = nm.url_encode('notebook with space.ipynb') + self.assertEqual(path, 'notebook%20with%20space.ipynb') + + path = nm.url_encode('/path with a/notebook and space.ipynb') + self.assertEqual(path, '/path%20with%20a/notebook%20and%20space.ipynb') + def test_url_decode(self): + nm = NotebookManager() + + # decodes a url string to a plain string + # these tests decode paths with spaces + path = nm.url_decode('/this%20is%20a%20test/for%20spaces/') + self.assertEqual(path, '/this is a test/for spaces/') + + path = nm.url_decode('notebook%20with%20space.ipynb') + self.assertEqual(path, 'notebook with space.ipynb') + + path = nm.url_decode('/path%20with%20a/notebook%20and%20space.ipynb') + self.assertEqual(path, '/path with a/notebook and space.ipynb')