Source code for chariots.testing._test_op_store_client

# pylint: disable=missing-module-docstring
import copy
import json
import os

from .. import op_store


[docs]class TestOpStoreClient(op_store.BaseOpStoreClient): """helper class to have a client without launching the server"""
[docs] def __init__(self, path, saver=None): self.db_path = os.path.join(path, 'db.sqlite') ops_path = os.path.join(path, 'ops') os.makedirs(ops_path, exist_ok=True) self._saver = saver or op_store.savers.FileSaver(ops_path) self.server = op_store.OpStoreServer(self._saver, db_url='sqlite:///{}'.format(self.db_path)) self._test_client = self.server.flask.test_client()
[docs] def post(self, route, arguments_json): response = self._test_client.post(route, data=json.dumps(arguments_json), content_type='application/json') if response.status_code != 200: raise ValueError('something went wrong') return json.loads(response.data.decode('utf-8'))
def __getstate__(self): server = self.server _test_client = self._test_client res = self.__dict__ res['_test_client'] = None res['server'] = None res = copy.deepcopy(res) self.server = server self._test_client = _test_client return res def __setstate__(self, state): self.__dict__ = state self.server = op_store.OpStoreServer(self._saver, 'sqlite:///{}'.format(self.db_path)) self._test_client = self.server.flask.test_client()