diff --git a/IPython/html/services/contents/tests/test_manager.py b/IPython/html/services/contents/tests/test_manager.py index 06a6645..b13bc1e 100644 --- a/IPython/html/services/contents/tests/test_manager.py +++ b/IPython/html/services/contents/tests/test_manager.py @@ -5,6 +5,7 @@ from __future__ import print_function import os import time +from nose import SkipTest from tornado.web import HTTPError from unittest import TestCase from tempfile import NamedTemporaryFile @@ -128,6 +129,25 @@ class TestFileContentsManager(TestCase): sorted(dir_model['content'], key=lambda x: x['name']), [symlink_model, file_model], ) + + def test_403(self): + if hasattr(os, 'getuid'): + if os.getuid() == 0: + raise SkipTest("Can't test permissions as root") + + with TemporaryDirectory() as td: + cm = FileContentsManager(root_dir=td) + model = cm.new_untitled(type='file') + os_path = cm._get_os_path(model['path']) + + os.chmod(os_path, 0o400) + try: + with cm.open(os_path, 'w') as f: + f.write(u"don't care") + except HTTPError as e: + self.assertEqual(e.status_code, 403) + else: + self.fail("Should have raised HTTPError(403)") class TestContentsManager(TestCase):