def _get_from_server(url, headers={}, status_code=200) -> requests.Response: session = Storage.session() resp = session.get( url, headers=headers, ) if resp.status_code != status_code: logger.error(f"Failed to fetch from {url}. Response: {resp.text}") return resp
def _put_to_server( path: str, headers: Optional[Dict[Any, Any]] = None, status_code: int = 200, **kwargs: Any, ) -> httpx.Response: if not headers: headers = {} with Storage.session() as session: resp = session.put(path, headers=headers, timeout=60, **kwargs) if resp.status_code != status_code: logger.error("Failed to put to %s. Response: %s", path, resp.text) return resp
def _delete_on_server( path: str, headers: Optional[Dict[Any, Any]] = None, status_code: int = 200 ) -> httpx.Response: if not headers: headers = {} with Storage.session() as session: resp = session.delete( path, headers=headers, timeout=60, ) if resp.status_code != status_code: logger.error("Failed to delete %s. Response: %s", path, resp.text) return resp
def test_integration(tmp_path, monkeypatch): """Actually start the server, wait for it to be online and do a health check""" monkeypatch.chdir(tmp_path) # Note: Sqlite needs at least 4-5 seconds to spin up even on # an unloaded M1-based Mac using local disk. On the CI-server # we have less control of available resources, so set timeout- # value large to allow time for sqlite to get ready with Storage.start_server(timeout=120) as server: resp = requests.get(f"{server.fetch_url()}/healthcheck", auth=server.fetch_auth()) assert "ALL OK!" in resp.json() with Storage.session() as session: session.get("/healthcheck") assert not (tmp_path / "storage_server.json").exists()
def _post_to_server(url, data=None, params=None, json=None, headers={}, status_code=200) -> requests.Response: session = Storage.session() resp = session.post( url, headers=headers, params=params, data=data, json=json, ) if resp.status_code != status_code: logger.error(f"Failed to post to {url}. Response: {resp.text}") return resp
def _put(url: str, headers: Dict[str, Any], **kwargs: Any) -> httpx.Response: with Storage.session() as session: return session.put(url=url, headers=headers, timeout=60, **kwargs)
def _get(url: str, headers: Dict[str, Any]) -> httpx.Response: with Storage.session() as session: return session.get(url, headers=headers, timeout=60)