示例#1
0
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)
示例#2
0
 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')
示例#3
0
 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
示例#4
0
 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"
示例#5
0
 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'
示例#6
0
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)
示例#7
0
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)
示例#8
0
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)
示例#9
0
 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")
示例#10
0
    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")
示例#11
0
        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:
示例#12
0
 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')