Spaces:
Sleeping
Sleeping
| import unittest | |
| from carbon_folding_demo.folding_api import FoldingApiClient | |
| class FakeResponse: | |
| def __init__(self, payload): | |
| self.payload = payload | |
| def raise_for_status(self): | |
| return None | |
| def json(self): | |
| return self.payload | |
| class FakeSession: | |
| def __init__(self): | |
| self.posts = [] | |
| self.gets = [] | |
| self.poll_count = 0 | |
| def post(self, url, json, headers, timeout): | |
| self.posts.append((url, json, headers, timeout)) | |
| return FakeResponse({"job_id": "job-1"}) | |
| def get(self, url, headers, timeout): | |
| self.gets.append((url, headers, timeout)) | |
| if url.endswith("/tools"): | |
| return FakeResponse({"tools": [{"id": "esmfold"}]}) | |
| self.poll_count += 1 | |
| if self.poll_count == 1: | |
| return FakeResponse({"job_id": "job-1", "tool_id": "esmfold", "status": "running"}) | |
| return FakeResponse( | |
| { | |
| "job_id": "job-1", | |
| "tool_id": "esmfold", | |
| "status": "succeeded", | |
| "result": { | |
| "structures": [ | |
| { | |
| "format": "pdb", | |
| "content": "ATOM 1 N ALA A 1", | |
| "confidence": {"mean_plddt": 91.2}, | |
| } | |
| ], | |
| "metrics": {"runtime_seconds": 1.0}, | |
| "warnings": ["ok"], | |
| }, | |
| } | |
| ) | |
| class FoldingApiClientTest(unittest.TestCase): | |
| def test_submit_and_wait_normalizes_successful_job(self): | |
| session = FakeSession() | |
| client = FoldingApiClient("https://fold.example/api", token="secret", timeout_seconds=5, session=session) | |
| result = client.submit_and_wait( | |
| tool_id="esmfold", | |
| entities=[{"id": "A", "type": "protein", "sequence": "MKT"}], | |
| options={"seed": 1}, | |
| client_metadata={"source": "test"}, | |
| poll_interval=0, | |
| ) | |
| self.assertEqual(result.job_id, "job-1") | |
| self.assertEqual(result.tool_id, "esmfold") | |
| self.assertEqual(result.primary_structure().format, "pdb") | |
| self.assertEqual(result.primary_structure().confidence["mean_plddt"], 91.2) | |
| self.assertEqual(session.posts[0][2]["Authorization"], "Bearer secret") | |
| self.assertEqual(session.posts[0][1]["client_metadata"]["source"], "test") | |
| self.assertEqual(session.posts[0][3], 60.0) | |
| def test_request_timeout_uses_configured_ceiling(self): | |
| self.assertEqual(FoldingApiClient("https://fold.example/api", timeout_seconds=30).request_timeout, 60.0) | |
| self.assertEqual(FoldingApiClient("https://fold.example/api", timeout_seconds=900).request_timeout, 300.0) | |
| def test_list_tools_accepts_wrapped_response(self): | |
| session = FakeSession() | |
| client = FoldingApiClient("https://fold.example/api", session=session) | |
| self.assertEqual(client.list_tools(), [{"id": "esmfold"}]) | |
| if __name__ == "__main__": | |
| unittest.main() | |