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'))
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'))