Exemplo n.º 1
0
    def test_write_raises_blocking_error(self):
        file_object = mock.Mock()
        file_object.write = mock.Mock(
            side_effect=io.BlockingIOError(None, None, 5))
        adapter = file_object_adapter.FileObjectAdapter(file_object)

        self.assertEqual(5, adapter.write(b'something'))
Exemplo n.º 2
0
 def test_basic(self):
     file_object = io.BytesIO()
     adapter = file_object_adapter.FileObjectAdapter(file_object)
     self.assertEqual(9, adapter.write(b'something'))
     self.assertEqual(9, adapter.position())
     self.assertEqual(b'something', file_object.getvalue())
     adapter.close()
Exemplo n.º 3
0
    def test_multiple_read(self):
        file_object = io.BytesIO(b'something')
        adapter = file_object_adapter.FileObjectAdapter(file_object)

        self.assertEqual(adapter.read(3), b'som')
        self.assertEqual(adapter.read(3), b'eth')
        self.assertEqual(adapter.read(3), b'ing')
Exemplo n.º 4
0
    def test_read_raises_blocking_error(self):
        file_object = mock.Mock()
        file_object.read = mock.Mock(
            side_effect=io.BlockingIOError(None, None))
        adapter = file_object_adapter.FileObjectAdapter(file_object)

        self.assertEqual(adapter.read(10), b'')
Exemplo n.º 5
0
 def test_multiple_write(self):
     file_object = io.BytesIO()
     adapter = file_object_adapter.FileObjectAdapter(file_object)
     self.assertEqual(9, adapter.write(b'something'))
     self.assertEqual(3, adapter.write(b'123'))
     self.assertEqual(3, adapter.write(b'456'))
     self.assertEqual(b'something123456', file_object.getvalue())
     adapter.close()
Exemplo n.º 6
0
 def test_position(self):
     file_object = io.BytesIO()
     adapter = file_object_adapter.FileObjectAdapter(file_object)
     self.assertEqual(0, adapter.position())
     self.assertEqual(9, adapter.write(b'something'))
     self.assertEqual(9, adapter.position())
     self.assertEqual(3, adapter.write(b'123'))
     self.assertEqual(12, adapter.position())
     adapter.close()
Exemplo n.º 7
0
    def test_partial_write(self):
        class TestFileObject(io.RawIOBase):
            """Test file-like object that always writes only first 5 bytes of data."""
            def __init__(self):
                super(TestFileObject, self).__init__()
                self.value = b''

            def writable(self):
                return True

            def write(self, data):
                self.value += data[:5]
                return 5

            def tell(self):
                return len(self.value)

        file_object = TestFileObject()
        adapter = file_object_adapter.FileObjectAdapter(file_object)
        self.assertEqual(5, adapter.write(b'something'))
        self.assertEqual(5, adapter.position())
        self.assertEqual(b'somet', file_object.value)
Exemplo n.º 8
0
    def __init__(self, stream_aead, ciphertext_destination: BinaryIO,
                 associated_data: bytes):
        """Create a new EncryptingStream.

    Args:
      stream_aead: C++ StreamingAead primitive from which a C++ EncryptingStream
        will be obtained.
      ciphertext_destination: A writable file-like object to which ciphertext
        bytes will be written.
      associated_data: The associated data to use for encryption. This must
        match the associated_data used for decryption.
    """
        super(EncryptingStream, self).__init__()
        self._closed = False
        self._bytes_written = 0

        # Create FileObjectAdapter
        if not ciphertext_destination.writable():
            raise ValueError('ciphertext_destination must be writable')
        cc_ciphertext_destination = file_object_adapter.FileObjectAdapter(
            ciphertext_destination)
        # Get OutputStreamAdapter of C++ EncryptingStream
        self._output_stream_adapter = self._get_output_stream_adapter(
            stream_aead, associated_data, cc_ciphertext_destination)
Exemplo n.º 9
0
  def __init__(self, stream_aead, ciphertext_source: BinaryIO,
               associated_data: bytes):
    """Create a new DecryptingStream.

    Args:
      stream_aead: C++ StreamingAead primitive from which a C++ DecryptingStream
        will be obtained.
      ciphertext_source: A readable file-like object from which ciphertext bytes
        will be read.
      associated_data: The associated data to use for decryption.
    """
    super(DecryptingStream, self).__init__()
    self._closed = False
    self._bytes_read = 0
    self._ciphertext_source = ciphertext_source

    # Create FileObjectAdapter
    if not ciphertext_source.readable():
      raise ValueError('ciphertext_source must be readable')
    cc_ciphertext_source = file_object_adapter.FileObjectAdapter(
        ciphertext_source)
    # Get InputStreamAdapter of C++ DecryptingStream
    self._input_stream_adapter = self._get_input_stream_adapter(
        stream_aead, associated_data, cc_ciphertext_source)
Exemplo n.º 10
0
 def test_write_after_close(self):
     file_object = io.BytesIO()
     adapter = file_object_adapter.FileObjectAdapter(file_object)
     adapter.close()
     self.assertRaises(ValueError, adapter.write, b'something')
Exemplo n.º 11
0
    def test_read_eof(self):
        file_object = mock.Mock()
        file_object.read = mock.Mock(return_value=b'')
        adapter = file_object_adapter.FileObjectAdapter(file_object)

        self.assertRaises(EOFError, adapter.read, 10)
Exemplo n.º 12
0
    def test_read_returns_none(self):
        file_object = mock.Mock()
        file_object.read = mock.Mock(return_value=None)
        adapter = file_object_adapter.FileObjectAdapter(file_object)

        self.assertEqual(adapter.read(10), b'')
Exemplo n.º 13
0
    def test_basic_read(self):
        file_object = io.BytesIO(b'something')
        adapter = file_object_adapter.FileObjectAdapter(file_object)

        self.assertEqual(adapter.read(9), b'something')
Exemplo n.º 14
0
    def test_partial_write(self):
        file_object = mock.Mock()
        file_object.write = mock.Mock(wraps=lambda data: len(data) - 1)
        adapter = file_object_adapter.FileObjectAdapter(file_object)

        self.assertEqual(8, adapter.write(b'something'))
Exemplo n.º 15
0
    def test_write_returns_none(self):
        file_object = mock.Mock()
        file_object.write = mock.Mock(return_value=None)
        adapter = file_object_adapter.FileObjectAdapter(file_object)

        self.assertEqual(0, adapter.write(b'something'))
Exemplo n.º 16
0
    def test_read_size_0(self):
        file_object = io.BytesIO(b'something')
        adapter = file_object_adapter.FileObjectAdapter(file_object)

        self.assertEqual(adapter.read(0), b'')