Skip to content

Commit 08e2760

Browse files
committed
fix all
1 parent e9d2cb6 commit 08e2760

File tree

6 files changed

+142
-242
lines changed

6 files changed

+142
-242
lines changed
Lines changed: 91 additions & 181 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
import httpx
21
import pytest
3-
4-
from unstructured_client.models import operations
5-
from unstructured_client import UnstructuredClient, basesdk, utils
2+
from dataclasses import dataclass
3+
from unstructured_client import UnstructuredClient, utils
64

75

86
# Raise one of these from our mock to return to the test code
@@ -53,195 +51,107 @@ def mock_build_request(*args, base_url, **kwargs):
5351

5452
return endpoint_method
5553

56-
57-
@pytest.mark.parametrize(
58-
"sdk_endpoint_name",
59-
[
60-
("general.partition"),
61-
],
62-
)
63-
def test_endpoint_uses_correct_url(monkeypatch, sdk_endpoint_name):
64-
# Test 1
65-
# Pass server_url to the client, no path
66-
s = UnstructuredClient(server_url="http://localhost:8000")
67-
client_method = get_client_method_with_mock(
68-
sdk_endpoint_name,
69-
s,
70-
"http://localhost:8000",
71-
monkeypatch
72-
)
73-
74-
try:
75-
client_method(request={})
76-
except BaseUrlCorrect:
77-
pass
78-
except BaseUrlIncorrect as e:
79-
pytest.fail(f"server_url was passed to client and ignored, got {e}")
80-
81-
# Test 2
82-
# Pass server_url to the client, with path
83-
s = UnstructuredClient(server_url="http://localhost:8000/my/endpoint")
84-
client_method = get_client_method_with_mock(
85-
sdk_endpoint_name,
86-
s,
87-
"http://localhost:8000",
88-
monkeypatch
89-
)
90-
91-
try:
92-
client_method(request={})
93-
except BaseUrlCorrect:
94-
pass
95-
except BaseUrlIncorrect as e:
96-
pytest.fail(f"server_url was passed to client and was not stripped, got {e}")
97-
98-
# Test 3
99-
# Pass server_url to the endpoint, no path
100-
s = UnstructuredClient()
101-
client_method = get_client_method_with_mock(
102-
sdk_endpoint_name,
103-
s,
104-
"http://localhost:8000",
105-
monkeypatch
106-
)
107-
108-
try:
109-
client_method(request={}, server_url="http://localhost:8000")
110-
except BaseUrlCorrect:
111-
pass
112-
except BaseUrlIncorrect as e:
113-
pytest.fail(f"server_url was passed to endpoint and ignored, got {e}")
114-
115-
# Test 4
116-
# Pass server_url to the endpoint, with path
117-
s = UnstructuredClient()
118-
client_method = get_client_method_with_mock(
119-
sdk_endpoint_name,
120-
s,
121-
"http://localhost:8000",
122-
monkeypatch
123-
)
124-
125-
try:
126-
client_method(request={}, server_url="http://localhost:8000/my/endpoint")
127-
except BaseUrlCorrect:
128-
pass
129-
except BaseUrlIncorrect as e:
130-
pytest.fail(f"server_url was passed to endpoint and ignored, got {e}")
131-
132-
133-
# Test 5
134-
# No server_url, should take the default
135-
server_url = "https://api.unstructuredapp.io" if "partition" in sdk_endpoint_name else "https://platform.unstructuredapp.io"
136-
137-
s = UnstructuredClient()
138-
client_method = get_client_method_with_mock(
139-
sdk_endpoint_name,
140-
s,
141-
server_url,
142-
monkeypatch
143-
)
144-
145-
try:
146-
client_method(request={})
147-
except BaseUrlCorrect:
148-
pass
149-
except BaseUrlIncorrect as e:
150-
pytest.fail(f"Default url not used, got {e}")
151-
54+
@dataclass
55+
class URLTestCase:
56+
description: str
57+
sdk_endpoint_name: str
58+
# url when you init the client (global for all endpoints)
59+
client_url: str | None
60+
# url when you init the SDK endpoint (vary per endpoint)
61+
endpoint_url: str | None
62+
# expected url when actually making the HTTP request in build_request
63+
expected_url: str
15264

15365
@pytest.mark.asyncio
15466
@pytest.mark.parametrize(
155-
"sdk_endpoint_name",
67+
"case",
15668
[
157-
("general.partition_async"),
158-
],
69+
URLTestCase(
70+
description="non UNST domain client-level URL, no path",
71+
sdk_endpoint_name="general.partition_async",
72+
client_url="http://localhost:8000",
73+
endpoint_url=None,
74+
expected_url="http://localhost:8000"
75+
),
76+
URLTestCase(
77+
description="non UNST domain client-level URL, with path",
78+
sdk_endpoint_name="general.partition_async",
79+
client_url="http://localhost:8000/my/endpoint",
80+
endpoint_url=None,
81+
expected_url="http://localhost:8000/my/endpoint"
82+
),
83+
URLTestCase(
84+
description="non UNST domain endpoint-level URL, no path",
85+
sdk_endpoint_name="general.partition_async",
86+
client_url=None,
87+
endpoint_url="http://localhost:8000",
88+
expected_url="http://localhost:8000"
89+
),
90+
URLTestCase(
91+
description="non UNST domain endpoint-level URL, with path",
92+
sdk_endpoint_name="general.partition_async",
93+
client_url=None,
94+
endpoint_url="http://localhost:8000/my/endpoint",
95+
expected_url="http://localhost:8000/my/endpoint"
96+
),
97+
URLTestCase(
98+
description="UNST domain client-level URL, no path",
99+
sdk_endpoint_name="general.partition_async",
100+
client_url="https://unstructured-000mock.api.unstructuredapp.io",
101+
endpoint_url=None,
102+
expected_url="https://unstructured-000mock.api.unstructuredapp.io"
103+
),
104+
URLTestCase(
105+
description="UNST domain client-level URL, with path",
106+
sdk_endpoint_name="general.partition_async",
107+
client_url="https://unstructured-000mock.api.unstructuredapp.io/my/endpoint/",
108+
endpoint_url=None,
109+
expected_url="https://unstructured-000mock.api.unstructuredapp.io"
110+
),
111+
URLTestCase(
112+
description="UNST domain endpoint-level URL, no path",
113+
sdk_endpoint_name="general.partition_async",
114+
client_url=None,
115+
endpoint_url="https://unstructured-000mock.api.unstructuredapp.io",
116+
expected_url="https://unstructured-000mock.api.unstructuredapp.io"
117+
),
118+
URLTestCase(
119+
description="UNST domain endpoint-level URL, with path",
120+
sdk_endpoint_name="general.partition_async",
121+
client_url=None,
122+
endpoint_url="https://unstructured-000mock.api.unstructuredapp.io/my/endpoint/",
123+
expected_url="https://unstructured-000mock.api.unstructuredapp.io"
124+
),
125+
URLTestCase(
126+
description="default URL fallback",
127+
sdk_endpoint_name="general.partition_async",
128+
client_url=None,
129+
endpoint_url=None,
130+
expected_url="https://api.unstructuredapp.io"
131+
),
132+
]
159133
)
160-
async def test_async_endpoint_uses_correct_url(monkeypatch, sdk_endpoint_name):
161-
# Test 1
162-
# Pass server_url to the client, no path
163-
s = UnstructuredClient(server_url="http://localhost:8000")
164-
client_method = get_client_method_with_mock(
165-
sdk_endpoint_name,
166-
s,
167-
"http://localhost:8000",
168-
monkeypatch
169-
)
170-
171-
try:
172-
await client_method(request={})
173-
except BaseUrlCorrect:
174-
pass
175-
except BaseUrlIncorrect as e:
176-
pytest.fail(f"server_url was passed to client and ignored, got {e}")
177-
178-
# Test 2
179-
# Pass server_url to the client, with path
180-
s = UnstructuredClient(server_url="http://localhost:8000/my/endpoint")
181-
client_method = get_client_method_with_mock(
182-
sdk_endpoint_name,
183-
s,
184-
"http://localhost:8000",
185-
monkeypatch
186-
)
187-
188-
try:
189-
await client_method(request={})
190-
except BaseUrlCorrect:
191-
pass
192-
except BaseUrlIncorrect as e:
193-
pytest.fail(f"server_url was passed to client and was not stripped, got {e}")
194-
195-
# Test 3
196-
# Pass server_url to the endpoint, no path
197-
s = UnstructuredClient()
198-
client_method = get_client_method_with_mock(
199-
sdk_endpoint_name,
200-
s,
201-
"http://localhost:8000",
202-
monkeypatch
203-
)
204-
205-
try:
206-
await client_method(request={}, server_url="http://localhost:8000")
207-
except BaseUrlCorrect:
208-
pass
209-
except BaseUrlIncorrect as e:
210-
pytest.fail(f"server_url was passed to endpoint and ignored, got {e}")
211-
212-
# Test 4
213-
# Pass server_url to the endpoint, with path
214-
s = UnstructuredClient()
215-
client_method = get_client_method_with_mock(
216-
sdk_endpoint_name,
217-
s,
218-
"http://localhost:8000",
219-
monkeypatch
220-
)
221-
222-
try:
223-
await client_method(request={}, server_url="http://localhost:8000/my/endpoint")
224-
except BaseUrlCorrect:
225-
pass
226-
except BaseUrlIncorrect as e:
227-
pytest.fail(f"server_url was passed to endpoint and ignored, got {e}")
228-
229-
230-
# Test 5
231-
# No server_url, should take the default
232-
server_url = "https://api.unstructuredapp.io" if "partition" in sdk_endpoint_name else "https://platform.unstructuredapp.io"
134+
async def test_async_endpoint_uses_correct_url(monkeypatch, case: URLTestCase):
135+
if case.client_url:
136+
s = UnstructuredClient(server_url=case.client_url)
137+
else:
138+
s = UnstructuredClient()
233139

234-
s = UnstructuredClient()
235140
client_method = get_client_method_with_mock(
236-
sdk_endpoint_name,
141+
case.sdk_endpoint_name,
237142
s,
238-
server_url,
143+
case.expected_url,
239144
monkeypatch
240145
)
241146

242147
try:
243-
await client_method(request={})
148+
if case.endpoint_url:
149+
await client_method(request={}, server_url=case.endpoint_url)
150+
else:
151+
await client_method(request={})
244152
except BaseUrlCorrect:
245153
pass
246154
except BaseUrlIncorrect as e:
247-
pytest.fail(f"Default url not used, got {e}")
155+
pytest.fail(
156+
f"{case.description}: Expected {case.expected_url}, got {e}"
157+
)

0 commit comments

Comments
 (0)