def test_filetype_from_open_file(): def get_file_type_from_open_file(filename): try: with open(filename, 'rb') as fp: return _get_file_type(fp) except SandboxError: pass try: with open(filename, 'rb') as fp: return type(fp) except SandboxError: pass raise TestException("Unable to get file type") filename = READ_FILENAME config = createSandboxConfig() if config.cpython_restricted: # the CPython restricted mode denies to open any file raise SkipTest("require _sandbox") config.allowPath(filename) def get_file_type_object(): file_type = get_file_type_from_open_file(filename) try: read_first_line(file_type) except TypeError as err: assert str(err) in ('object.__new__() takes no parameters', 'default __new__ takes no parameters') else: assert False Sandbox(config).call(get_file_type_object) file_type = get_file_type_from_open_file(filename) read_first_line(file_type)
def get_file_type_object(): file_type = get_file_type_from_stdout() try: read_first_line(file_type) except TypeError, err: assert str(err) in ('object.__new__() takes no parameters', 'default __new__ takes no parameters')
def get_file_type_object(): file_type = get_file_type_from_stdout() try: read_first_line(file_type) except TypeError as err: assert str(err) in ('object.__new__() takes no parameters', 'default __new__ takes no parameters') else: assert False
def access_denied(): try: read_first_line(open) except IOError, err: if err.errno == EACCES: # safe_open() error assert err.args[1].startswith("Sandbox deny access to the file ") else: # restricted python error assert str(err) == "file() constructor not accessible in restricted mode"
def access_denied(): try: read_first_line(open) except IOError, err: if err.errno == EACCES: # safe_open() error assert err.args[1].startswith('Sandbox deny access to the file ') else: # restricted python error assert str(err) == 'file() constructor not accessible in restricted mode'
def test_filetype_from_sys_stdout(): def get_file_type_from_stdout(): import sys return _get_file_type(sys.stdout) config = createSandboxConfig('stdout') def get_file_type_object(): file_type = get_file_type_from_stdout() try: read_first_line(file_type) except TypeError as err: assert str(err) in ('object.__new__() takes no parameters', 'default __new__ takes no parameters') else: assert False Sandbox(config).call(get_file_type_object) file_type = get_file_type_from_stdout() read_first_line(file_type)
def test_open_denied(): from errno import EACCES def access_denied(): try: read_first_line(open) except IOError as err: if err.errno == EACCES: # safe_open() error assert err.args[1].startswith('Sandbox deny access to the file ') else: # restricted python error assert str(err) == 'file() constructor not accessible in restricted mode' else: assert False createSandbox().call(access_denied) read_first_line(open)
def test_subclasses(): if version_info >= (3, 0): raise SkipTest("Python 3 has not file type") def get_file_type_from_subclasses(): for subtype in object.__subclasses__(): if subtype.__name__ == "file": return subtype raise ValueError("Unable to get file type") def subclasses_denied(): try: get_file_type_from_subclasses() except AttributeError as err: assert str(err) == "type object 'object' has no attribute '__subclasses__'" else: assert False createSandbox().call(subclasses_denied) file_type = get_file_type_from_subclasses() read_first_line(file_type)
def get_file_type_object(): file_type = get_file_type_from_stdout() try: read_first_line(file_type) except TypeError, err: assert str(err) in ("object.__new__() takes no parameters", "default __new__ takes no parameters")
def access_denied(): try: read_first_line(open) except IOError, err: if err.errno == EACCES: # safe_open() error assert err.args[1].startswith("Sandbox deny access to the file ") else: # restricted python error assert str(err) == "file() constructor not accessible in restricted mode" else: assert False createSandbox().call(access_denied) read_first_line(open) def test_open_whitelist(): config = createSandboxConfig() if config.cpython_restricted: # the CPython restricted mode denies to open any file raise SkipTest("require _sandbox") config.allowPath(READ_FILENAME) Sandbox(config).call(read_first_line, open) def test_write_file(): def write_file(filename): with open(filename, "w") as fp: fp.write("test")
except IOError, err: if err.errno == EACCES: # safe_open() error assert err.args[1].startswith( 'Sandbox deny access to the file ') else: # restricted python error assert str( err ) == 'file() constructor not accessible in restricted mode' else: assert False createSandbox().call(access_denied) read_first_line(open) def test_open_whitelist(): if not HAVE_CSANDBOX: # restricted python denies access to all files raise SkipTest("require _sandbox") config = createSandboxConfig() config.allowPath(READ_FILENAME) Sandbox(config).call(read_first_line, open) def test_write_file(): def write_file(filename): with open(filename, "w") as fp:
def get_file_type_object(): file_type = get_file_type_from_open_file(filename) try: read_first_line(file_type) except TypeError, err: assert str(err) in ('object.__new__() takes no parameters', 'default __new__ takes no parameters')