openai/openai-python

Public

mirrored from https://github.com/openai/openai-pythonAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
v2.18.0

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

tests/api_resources/conversations/test_items.py

499lines · modeblame

4e28a424stainless-app[bot]10 months ago1# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
3from __future__ import annotations
4
5import os
6from typing import Any, cast
7
8import pytest
9
10from openai import OpenAI, AsyncOpenAI
11from tests.utils import assert_matches_type
12from openai.pagination import SyncConversationCursorPage, AsyncConversationCursorPage
13from openai.types.conversations import (
14Conversation,
15ConversationItem,
16ConversationItemList,
17)
18
19base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
20
21
22class TestItems:
23parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])
24
25@parametrize
26def test_method_create(self, client: OpenAI) -> None:
27item = client.conversations.items.create(
28conversation_id="conv_123",
29items=[
30{
31"content": "string",
32"role": "user",
3a3cabb7stainless-app[bot]9 months ago33"type": "message",
4e28a424stainless-app[bot]10 months ago34}
35],
36)
37assert_matches_type(ConversationItemList, item, path=["response"])
38
39@parametrize
40def test_method_create_with_all_params(self, client: OpenAI) -> None:
41item = client.conversations.items.create(
42conversation_id="conv_123",
43items=[
44{
45"content": "string",
46"role": "user",
47"type": "message",
48}
49],
0a5ad3e8stainless-app[bot]8 months ago50include=["file_search_call.results"],
4e28a424stainless-app[bot]10 months ago51)
52assert_matches_type(ConversationItemList, item, path=["response"])
53
54@parametrize
55def test_raw_response_create(self, client: OpenAI) -> None:
56response = client.conversations.items.with_raw_response.create(
57conversation_id="conv_123",
58items=[
59{
60"content": "string",
61"role": "user",
3a3cabb7stainless-app[bot]9 months ago62"type": "message",
4e28a424stainless-app[bot]10 months ago63}
64],
65)
66
67assert response.is_closed is True
68assert response.http_request.headers.get("X-Stainless-Lang") == "python"
69item = response.parse()
70assert_matches_type(ConversationItemList, item, path=["response"])
71
72@parametrize
73def test_streaming_response_create(self, client: OpenAI) -> None:
74with client.conversations.items.with_streaming_response.create(
75conversation_id="conv_123",
76items=[
77{
78"content": "string",
79"role": "user",
3a3cabb7stainless-app[bot]9 months ago80"type": "message",
4e28a424stainless-app[bot]10 months ago81}
82],
83) as response:
84assert not response.is_closed
85assert response.http_request.headers.get("X-Stainless-Lang") == "python"
86
87item = response.parse()
88assert_matches_type(ConversationItemList, item, path=["response"])
89
90assert cast(Any, response.is_closed) is True
91
92@parametrize
93def test_path_params_create(self, client: OpenAI) -> None:
94with pytest.raises(ValueError, match=r"Expected a non-empty value for `conversation_id` but received ''"):
95client.conversations.items.with_raw_response.create(
96conversation_id="",
97items=[
98{
99"content": "string",
100"role": "user",
3a3cabb7stainless-app[bot]9 months ago101"type": "message",
4e28a424stainless-app[bot]10 months ago102}
103],
104)
105
106@parametrize
107def test_method_retrieve(self, client: OpenAI) -> None:
108item = client.conversations.items.retrieve(
109item_id="msg_abc",
110conversation_id="conv_123",
111)
112assert_matches_type(ConversationItem, item, path=["response"])
113
114@parametrize
115def test_method_retrieve_with_all_params(self, client: OpenAI) -> None:
116item = client.conversations.items.retrieve(
117item_id="msg_abc",
118conversation_id="conv_123",
0a5ad3e8stainless-app[bot]8 months ago119include=["file_search_call.results"],
4e28a424stainless-app[bot]10 months ago120)
121assert_matches_type(ConversationItem, item, path=["response"])
122
123@parametrize
124def test_raw_response_retrieve(self, client: OpenAI) -> None:
125response = client.conversations.items.with_raw_response.retrieve(
126item_id="msg_abc",
127conversation_id="conv_123",
128)
129
130assert response.is_closed is True
131assert response.http_request.headers.get("X-Stainless-Lang") == "python"
132item = response.parse()
133assert_matches_type(ConversationItem, item, path=["response"])
134
135@parametrize
136def test_streaming_response_retrieve(self, client: OpenAI) -> None:
137with client.conversations.items.with_streaming_response.retrieve(
138item_id="msg_abc",
139conversation_id="conv_123",
140) as response:
141assert not response.is_closed
142assert response.http_request.headers.get("X-Stainless-Lang") == "python"
143
144item = response.parse()
145assert_matches_type(ConversationItem, item, path=["response"])
146
147assert cast(Any, response.is_closed) is True
148
149@parametrize
150def test_path_params_retrieve(self, client: OpenAI) -> None:
151with pytest.raises(ValueError, match=r"Expected a non-empty value for `conversation_id` but received ''"):
152client.conversations.items.with_raw_response.retrieve(
153item_id="msg_abc",
154conversation_id="",
155)
156
157with pytest.raises(ValueError, match=r"Expected a non-empty value for `item_id` but received ''"):
158client.conversations.items.with_raw_response.retrieve(
159item_id="",
160conversation_id="conv_123",
161)
162
163@parametrize
164def test_method_list(self, client: OpenAI) -> None:
165item = client.conversations.items.list(
166conversation_id="conv_123",
167)
168assert_matches_type(SyncConversationCursorPage[ConversationItem], item, path=["response"])
169
170@parametrize
171def test_method_list_with_all_params(self, client: OpenAI) -> None:
172item = client.conversations.items.list(
173conversation_id="conv_123",
174after="after",
0a5ad3e8stainless-app[bot]8 months ago175include=["file_search_call.results"],
4e28a424stainless-app[bot]10 months ago176limit=0,
177order="asc",
178)
179assert_matches_type(SyncConversationCursorPage[ConversationItem], item, path=["response"])
180
181@parametrize
182def test_raw_response_list(self, client: OpenAI) -> None:
183response = client.conversations.items.with_raw_response.list(
184conversation_id="conv_123",
185)
186
187assert response.is_closed is True
188assert response.http_request.headers.get("X-Stainless-Lang") == "python"
189item = response.parse()
190assert_matches_type(SyncConversationCursorPage[ConversationItem], item, path=["response"])
191
192@parametrize
193def test_streaming_response_list(self, client: OpenAI) -> None:
194with client.conversations.items.with_streaming_response.list(
195conversation_id="conv_123",
196) as response:
197assert not response.is_closed
198assert response.http_request.headers.get("X-Stainless-Lang") == "python"
199
200item = response.parse()
201assert_matches_type(SyncConversationCursorPage[ConversationItem], item, path=["response"])
202
203assert cast(Any, response.is_closed) is True
204
205@parametrize
206def test_path_params_list(self, client: OpenAI) -> None:
207with pytest.raises(ValueError, match=r"Expected a non-empty value for `conversation_id` but received ''"):
208client.conversations.items.with_raw_response.list(
209conversation_id="",
210)
211
212@parametrize
213def test_method_delete(self, client: OpenAI) -> None:
214item = client.conversations.items.delete(
215item_id="msg_abc",
216conversation_id="conv_123",
217)
218assert_matches_type(Conversation, item, path=["response"])
219
220@parametrize
221def test_raw_response_delete(self, client: OpenAI) -> None:
222response = client.conversations.items.with_raw_response.delete(
223item_id="msg_abc",
224conversation_id="conv_123",
225)
226
227assert response.is_closed is True
228assert response.http_request.headers.get("X-Stainless-Lang") == "python"
229item = response.parse()
230assert_matches_type(Conversation, item, path=["response"])
231
232@parametrize
233def test_streaming_response_delete(self, client: OpenAI) -> None:
234with client.conversations.items.with_streaming_response.delete(
235item_id="msg_abc",
236conversation_id="conv_123",
237) as response:
238assert not response.is_closed
239assert response.http_request.headers.get("X-Stainless-Lang") == "python"
240
241item = response.parse()
242assert_matches_type(Conversation, item, path=["response"])
243
244assert cast(Any, response.is_closed) is True
245
246@parametrize
247def test_path_params_delete(self, client: OpenAI) -> None:
248with pytest.raises(ValueError, match=r"Expected a non-empty value for `conversation_id` but received ''"):
249client.conversations.items.with_raw_response.delete(
250item_id="msg_abc",
251conversation_id="",
252)
253
254with pytest.raises(ValueError, match=r"Expected a non-empty value for `item_id` but received ''"):
255client.conversations.items.with_raw_response.delete(
256item_id="",
257conversation_id="conv_123",
258)
259
260
261class TestAsyncItems:
262parametrize = pytest.mark.parametrize(
263"async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
264)
265
266@parametrize
267async def test_method_create(self, async_client: AsyncOpenAI) -> None:
268item = await async_client.conversations.items.create(
269conversation_id="conv_123",
270items=[
271{
272"content": "string",
273"role": "user",
3a3cabb7stainless-app[bot]9 months ago274"type": "message",
4e28a424stainless-app[bot]10 months ago275}
276],
277)
278assert_matches_type(ConversationItemList, item, path=["response"])
279
280@parametrize
281async def test_method_create_with_all_params(self, async_client: AsyncOpenAI) -> None:
282item = await async_client.conversations.items.create(
283conversation_id="conv_123",
284items=[
285{
286"content": "string",
287"role": "user",
288"type": "message",
289}
290],
0a5ad3e8stainless-app[bot]8 months ago291include=["file_search_call.results"],
4e28a424stainless-app[bot]10 months ago292)
293assert_matches_type(ConversationItemList, item, path=["response"])
294
295@parametrize
296async def test_raw_response_create(self, async_client: AsyncOpenAI) -> None:
297response = await async_client.conversations.items.with_raw_response.create(
298conversation_id="conv_123",
299items=[
300{
301"content": "string",
302"role": "user",
3a3cabb7stainless-app[bot]9 months ago303"type": "message",
4e28a424stainless-app[bot]10 months ago304}
305],
306)
307
308assert response.is_closed is True
309assert response.http_request.headers.get("X-Stainless-Lang") == "python"
310item = response.parse()
311assert_matches_type(ConversationItemList, item, path=["response"])
312
313@parametrize
314async def test_streaming_response_create(self, async_client: AsyncOpenAI) -> None:
315async with async_client.conversations.items.with_streaming_response.create(
316conversation_id="conv_123",
317items=[
318{
319"content": "string",
320"role": "user",
3a3cabb7stainless-app[bot]9 months ago321"type": "message",
4e28a424stainless-app[bot]10 months ago322}
323],
324) as response:
325assert not response.is_closed
326assert response.http_request.headers.get("X-Stainless-Lang") == "python"
327
328item = await response.parse()
329assert_matches_type(ConversationItemList, item, path=["response"])
330
331assert cast(Any, response.is_closed) is True
332
333@parametrize
334async def test_path_params_create(self, async_client: AsyncOpenAI) -> None:
335with pytest.raises(ValueError, match=r"Expected a non-empty value for `conversation_id` but received ''"):
336await async_client.conversations.items.with_raw_response.create(
337conversation_id="",
338items=[
339{
340"content": "string",
341"role": "user",
3a3cabb7stainless-app[bot]9 months ago342"type": "message",
4e28a424stainless-app[bot]10 months ago343}
344],
345)
346
347@parametrize
348async def test_method_retrieve(self, async_client: AsyncOpenAI) -> None:
349item = await async_client.conversations.items.retrieve(
350item_id="msg_abc",
351conversation_id="conv_123",
352)
353assert_matches_type(ConversationItem, item, path=["response"])
354
355@parametrize
356async def test_method_retrieve_with_all_params(self, async_client: AsyncOpenAI) -> None:
357item = await async_client.conversations.items.retrieve(
358item_id="msg_abc",
359conversation_id="conv_123",
0a5ad3e8stainless-app[bot]8 months ago360include=["file_search_call.results"],
4e28a424stainless-app[bot]10 months ago361)
362assert_matches_type(ConversationItem, item, path=["response"])
363
364@parametrize
365async def test_raw_response_retrieve(self, async_client: AsyncOpenAI) -> None:
366response = await async_client.conversations.items.with_raw_response.retrieve(
367item_id="msg_abc",
368conversation_id="conv_123",
369)
370
371assert response.is_closed is True
372assert response.http_request.headers.get("X-Stainless-Lang") == "python"
373item = response.parse()
374assert_matches_type(ConversationItem, item, path=["response"])
375
376@parametrize
377async def test_streaming_response_retrieve(self, async_client: AsyncOpenAI) -> None:
378async with async_client.conversations.items.with_streaming_response.retrieve(
379item_id="msg_abc",
380conversation_id="conv_123",
381) as response:
382assert not response.is_closed
383assert response.http_request.headers.get("X-Stainless-Lang") == "python"
384
385item = await response.parse()
386assert_matches_type(ConversationItem, item, path=["response"])
387
388assert cast(Any, response.is_closed) is True
389
390@parametrize
391async def test_path_params_retrieve(self, async_client: AsyncOpenAI) -> None:
392with pytest.raises(ValueError, match=r"Expected a non-empty value for `conversation_id` but received ''"):
393await async_client.conversations.items.with_raw_response.retrieve(
394item_id="msg_abc",
395conversation_id="",
396)
397
398with pytest.raises(ValueError, match=r"Expected a non-empty value for `item_id` but received ''"):
399await async_client.conversations.items.with_raw_response.retrieve(
400item_id="",
401conversation_id="conv_123",
402)
403
404@parametrize
405async def test_method_list(self, async_client: AsyncOpenAI) -> None:
406item = await async_client.conversations.items.list(
407conversation_id="conv_123",
408)
409assert_matches_type(AsyncConversationCursorPage[ConversationItem], item, path=["response"])
410
411@parametrize
412async def test_method_list_with_all_params(self, async_client: AsyncOpenAI) -> None:
413item = await async_client.conversations.items.list(
414conversation_id="conv_123",
415after="after",
0a5ad3e8stainless-app[bot]8 months ago416include=["file_search_call.results"],
4e28a424stainless-app[bot]10 months ago417limit=0,
418order="asc",
419)
420assert_matches_type(AsyncConversationCursorPage[ConversationItem], item, path=["response"])
421
422@parametrize
423async def test_raw_response_list(self, async_client: AsyncOpenAI) -> None:
424response = await async_client.conversations.items.with_raw_response.list(
425conversation_id="conv_123",
426)
427
428assert response.is_closed is True
429assert response.http_request.headers.get("X-Stainless-Lang") == "python"
430item = response.parse()
431assert_matches_type(AsyncConversationCursorPage[ConversationItem], item, path=["response"])
432
433@parametrize
434async def test_streaming_response_list(self, async_client: AsyncOpenAI) -> None:
435async with async_client.conversations.items.with_streaming_response.list(
436conversation_id="conv_123",
437) as response:
438assert not response.is_closed
439assert response.http_request.headers.get("X-Stainless-Lang") == "python"
440
441item = await response.parse()
442assert_matches_type(AsyncConversationCursorPage[ConversationItem], item, path=["response"])
443
444assert cast(Any, response.is_closed) is True
445
446@parametrize
447async def test_path_params_list(self, async_client: AsyncOpenAI) -> None:
448with pytest.raises(ValueError, match=r"Expected a non-empty value for `conversation_id` but received ''"):
449await async_client.conversations.items.with_raw_response.list(
450conversation_id="",
451)
452
453@parametrize
454async def test_method_delete(self, async_client: AsyncOpenAI) -> None:
455item = await async_client.conversations.items.delete(
456item_id="msg_abc",
457conversation_id="conv_123",
458)
459assert_matches_type(Conversation, item, path=["response"])
460
461@parametrize
462async def test_raw_response_delete(self, async_client: AsyncOpenAI) -> None:
463response = await async_client.conversations.items.with_raw_response.delete(
464item_id="msg_abc",
465conversation_id="conv_123",
466)
467
468assert response.is_closed is True
469assert response.http_request.headers.get("X-Stainless-Lang") == "python"
470item = response.parse()
471assert_matches_type(Conversation, item, path=["response"])
472
473@parametrize
474async def test_streaming_response_delete(self, async_client: AsyncOpenAI) -> None:
475async with async_client.conversations.items.with_streaming_response.delete(
476item_id="msg_abc",
477conversation_id="conv_123",
478) as response:
479assert not response.is_closed
480assert response.http_request.headers.get("X-Stainless-Lang") == "python"
481
482item = await response.parse()
483assert_matches_type(Conversation, item, path=["response"])
484
485assert cast(Any, response.is_closed) is True
486
487@parametrize
488async def test_path_params_delete(self, async_client: AsyncOpenAI) -> None:
489with pytest.raises(ValueError, match=r"Expected a non-empty value for `conversation_id` but received ''"):
490await async_client.conversations.items.with_raw_response.delete(
491item_id="msg_abc",
492conversation_id="",
493)
494
495with pytest.raises(ValueError, match=r"Expected a non-empty value for `item_id` but received ''"):
496await async_client.conversations.items.with_raw_response.delete(
497item_id="",
498conversation_id="conv_123",
499)