Ejemplo n.º 1
0
    def test_dataitem_remove(self):
        conn = mock.Mock()
        self.client.connection = conn

        dataitem = DataItem(self.client, self.parent_id, self.keyname)
        dataitem.remove()
        params = {
                'cluster_id': dataitem.parent_id,
                'key': dataitem.name
            }
        conn.make_request.assert_called_once_with('remove_dataitem', params)
Ejemplo n.º 2
0
    def test_store_with_patch(self):
        test_data = StringIO.StringIO("Some test data to be sent to server")
        md5 = hashlib.md5()
        md5.update(test_data.read())
        test_data.seek(0)
        headers = {}
        headers['X-HOLVI-STORE-MODE'] = "patch"
        headers['X-HOLVI-KEY'] = self.keyname
        headers['X-HOLVI-PARENT'] = self.parent_id
        headers['X-HOLVI-META'] = 'v1:ENC:NONE::'
        headers['Content-Type'] = 'application/octet-stream'
        headers['X-HOLVI-HASH'] = md5.hexdigest()
        headers['X-HOLVI-OFFSET'] = 13
        headers['Content-Length'] = len(test_data.read())
        test_data.seek(0)

        conn = mock.Mock()
        conn.make_transaction.return_value = "OK"
        self.client.connection = conn

        dataitem = DataItem(self.client, self.parent_id, self.keyname)
        response = dataitem.store_data(test_data, "patch", offset=13)
        self.assertEquals(response, "OK")
        conn.make_transaction.assert_called_with(headers, '/store', 'Some test data to be sent to server')
        conn.reset_mock()
        test_data.seek(0)
        test_md5 = hashlib.md5()
        test_md5.update('ver')
        headers['X-HOLVI-HASH'] = test_md5.hexdigest()
        headers['X-HOLVI-OFFSET'] = 13 + len(test_data.read()) - 4 # start offset + len(content) - len(chunksize)
        headers['Content-Length'] = 3
        test_data.seek(0)
        file_iter = FileIterator(test_data, 4)
        response = dataitem.store_data(file_iter, "patch", offset=13)
        self.assertEquals(response, "OK")
        self.assertEquals(conn.make_transaction.mock_calls[8], mock.call(headers, '/store', 'ver'))
Ejemplo n.º 3
0
    def test_store_data(self):
        test_data = StringIO.StringIO("Some test data to be sent to server")
        md5 = hashlib.md5()
        md5.update(test_data.read())
        test_data.seek(0)
        headers = {}
        headers['X-HOLVI-STORE-MODE'] = "new"
        headers['X-HOLVI-KEY'] = self.keyname
        headers['X-HOLVI-PARENT'] = self.parent_id
        headers['X-HOLVI-META'] = 'v1:ENC:NONE::'
        headers['Content-Type'] = 'application/octet-stream'
        headers['X-HOLVI-HASH'] = md5.hexdigest()
        headers['Content-Length'] = len(test_data.read())
        test_data.seek(0)

        conn = mock.Mock()
        conn.make_transaction.return_value = "OK"
        self.client.connection = conn

        dataitem = DataItem(self.client, self.parent_id, self.keyname)
        response = dataitem.store_data(test_data, "new", offset=None)
        self.assertEquals(response, "OK")
        conn.make_transaction.assert_called_with(headers, '/store', 'Some test data to be sent to server')

        conn.reset_mock()
        test_data.seek(0)
        self.client.set_encryption_key("12345678901234561234567890123456")
        self.client.encryption_mode = "ENC:AES256"
        headers['X-HOLVI-META'] = 'v1:ENC:AES256::'

        response = dataitem.store_data(test_data, method="new", offset=None)
        self.assertEquals(response, "OK")
        conn.make_transaction.assert_called_with(headers, '/store', 'Some test data to be sent to server')

        with self.assertRaises(HolviDataItemException):
            dataitem.store_data(test_data, "new", offset=None)

        conn.reset_mock()
        test_data.seek(0)
        file_iter = FileIterator(test_data, 4)
        test_md5 = hashlib.md5()
        test_md5.update('ver')
        self.client.set_encryption_key("")
        self.client.encryption_mode = "ENC:NONE"
        headers['X-HOLVI-META'] = 'v1:ENC:NONE::'
        headers['X-HOLVI-HASH'] = test_md5.hexdigest()
        headers['Content-Length'] = 3
        headers['X-HOLVI-STORE-MODE'] = "append"
        response = dataitem.store_data(file_iter, "new", offset=None)
        self.assertEquals(response, "OK")
        self.assertEquals(conn.make_transaction.mock_calls[8], mock.call(headers, '/store', 'ver'))