openai/openai-python

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
v2.26.0

Branches

Tags

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

Clone

HTTPS

Download ZIP

tests/api_resources/conversations/test_items.py

501lines · 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",
656e3cabstainless-app[bot]4 months ago47"phase": "commentary",
4e28a424stainless-app[bot]10 months ago48"type": "message",
49}
50],
0a5ad3e8stainless-app[bot]8 months ago51include=["file_search_call.results"],
4e28a424stainless-app[bot]10 months ago52)
53assert_matches_type(ConversationItemList, item, path=["response"])
54
55@parametrize
56def test_raw_response_create(self, client: OpenAI) -> None:
57response = client.conversations.items.with_raw_response.create(
58conversation_id="conv_123",
59items=[
60{
61"content": "string",
62"role": "user",
3a3cabb7stainless-app[bot]9 months ago63"type": "message",
4e28a424stainless-app[bot]10 months ago64}
65],
66)
67
68assert response.is_closed is True
69assert response.http_request.headers.get("X-Stainless-Lang") == "python"
70item = response.parse()
71assert_matches_type(ConversationItemList, item, path=["response"])
72
73@parametrize
74def test_streaming_response_create(self, client: OpenAI) -> None:
75with client.conversations.items.with_streaming_response.create(
76conversation_id="conv_123",
77items=[
78{
79"content": "string",
80"role": "user",
3a3cabb7stainless-app[bot]9 months ago81"type": "message",
4e28a424stainless-app[bot]10 months ago82}
83],
84) as response:
85assert not response.is_closed
86assert response.http_request.headers.get("X-Stainless-Lang") == "python"
87
88item = response.parse()
89assert_matches_type(ConversationItemList, item, path=["response"])
90
91assert cast(Any, response.is_closed) is True
92
93@parametrize
94def test_path_params_create(self, client: OpenAI) -> None:
95with pytest.raises(ValueError, match=r"Expected a non-empty value for `conversation_id` but received ''"):
96client.conversations.items.with_raw_response.create(
97conversation_id="",
98items=[
99{
100"content": "string",
101"role": "user",
3a3cabb7stainless-app[bot]9 months ago102"type": "message",
4e28a424stainless-app[bot]10 months ago103}
104],
105)
106
107@parametrize
108def test_method_retrieve(self, client: OpenAI) -> None:
109item = client.conversations.items.retrieve(
110item_id="msg_abc",
111conversation_id="conv_123",
112)
113assert_matches_type(ConversationItem, item, path=["response"])
114
115@parametrize
116def test_method_retrieve_with_all_params(self, client: OpenAI) -> None:
117item = client.conversations.items.retrieve(
118item_id="msg_abc",
119conversation_id="conv_123",
0a5ad3e8stainless-app[bot]8 months ago120include=["file_search_call.results"],
4e28a424stainless-app[bot]10 months ago121)
122assert_matches_type(ConversationItem, item, path=["response"])
123
124@parametrize
125def test_raw_response_retrieve(self, client: OpenAI) -> None:
126response = client.conversations.items.with_raw_response.retrieve(
127item_id="msg_abc",
128conversation_id="conv_123",
129)
130
131assert response.is_closed is True
132assert response.http_request.headers.get("X-Stainless-Lang") == "python"
133item = response.parse()
134assert_matches_type(ConversationItem, item, path=["response"])
135
136@parametrize
137def test_streaming_response_retrieve(self, client: OpenAI) -> None:
138with client.conversations.items.with_streaming_response.retrieve(
139item_id="msg_abc",
140conversation_id="conv_123",
141) as response:
142assert not response.is_closed
143assert response.http_request.headers.get("X-Stainless-Lang") == "python"
144
145item = response.parse()
146assert_matches_type(ConversationItem, item, path=["response"])
147
148assert cast(Any, response.is_closed) is True
149
150@parametrize
151def test_path_params_retrieve(self, client: OpenAI) -> None:
152with pytest.raises(ValueError, match=r"Expected a non-empty value for `conversation_id` but received ''"):
153client.conversations.items.with_raw_response.retrieve(
154item_id="msg_abc",
155conversation_id="",
156)
157
158with pytest.raises(ValueError, match=r"Expected a non-empty value for `item_id` but received ''"):
159client.conversations.items.with_raw_response.retrieve(
160item_id="",
161conversation_id="conv_123",
162)
163
164@parametrize
165def test_method_list(self, client: OpenAI) -> None:
166item = client.conversations.items.list(
167conversation_id="conv_123",
168)
169assert_matches_type(SyncConversationCursorPage[ConversationItem], item, path=["response"])
170
171@parametrize
172def test_method_list_with_all_params(self, client: OpenAI) -> None:
173item = client.conversations.items.list(
174conversation_id="conv_123",
175after="after",
0a5ad3e8stainless-app[bot]8 months ago176include=["file_search_call.results"],
4e28a424stainless-app[bot]10 months ago177limit=0,
178order="asc",
179)
180assert_matches_type(SyncConversationCursorPage[ConversationItem], item, path=["response"])
181
182@parametrize
183def test_raw_response_list(self, client: OpenAI) -> None:
184response = client.conversations.items.with_raw_response.list(
185conversation_id="conv_123",
186)
187
188assert response.is_closed is True
189assert response.http_request.headers.get("X-Stainless-Lang") == "python"
190item = response.parse()
191assert_matches_type(SyncConversationCursorPage[ConversationItem], item, path=["response"])
192
193@parametrize
194def test_streaming_response_list(self, client: OpenAI) -> None:
195with client.conversations.items.with_streaming_response.list(
196conversation_id="conv_123",
197) as response:
198assert not response.is_closed
199assert response.http_request.headers.get("X-Stainless-Lang") == "python"
200
201item = response.parse()
202assert_matches_type(SyncConversationCursorPage[ConversationItem], item, path=["response"])
203
204assert cast(Any, response.is_closed) is True
205
206@parametrize
207def test_path_params_list(self, client: OpenAI) -> None:
208with pytest.raises(ValueError, match=r"Expected a non-empty value for `conversation_id` but received ''"):
209client.conversations.items.with_raw_response.list(
210conversation_id="",
211)
212
213@parametrize
214def test_method_delete(self, client: OpenAI) -> None:
215item = client.conversations.items.delete(
216item_id="msg_abc",
217conversation_id="conv_123",
218)
219assert_matches_type(Conversation, item, path=["response"])
220
221@parametrize
222def test_raw_response_delete(self, client: OpenAI) -> None:
223response = client.conversations.items.with_raw_response.delete(
224item_id="msg_abc",
225conversation_id="conv_123",
226)
227
228assert response.is_closed is True
229assert response.http_request.headers.get("X-Stainless-Lang") == "python"
230item = response.parse()
231assert_matches_type(Conversation, item, path=["response"])
232
233@parametrize
234def test_streaming_response_delete(self, client: OpenAI) -> None:
235with client.conversations.items.with_streaming_response.delete(
236item_id="msg_abc",
237conversation_id="conv_123",
238) as response:
239assert not response.is_closed
240assert response.http_request.headers.get("X-Stainless-Lang") == "python"
241
242item = response.parse()
243assert_matches_type(Conversation, item, path=["response"])
244
245assert cast(Any, response.is_closed) is True
246
247@parametrize
248def test_path_params_delete(self, client: OpenAI) -> None:
249with pytest.raises(ValueError, match=r"Expected a non-empty value for `conversation_id` but received ''"):
250client.conversations.items.with_raw_response.delete(
251item_id="msg_abc",
252conversation_id="",
253)
254
255with pytest.raises(ValueError, match=r"Expected a non-empty value for `item_id` but received ''"):
256client.conversations.items.with_raw_response.delete(
257item_id="",
258conversation_id="conv_123",
259)
260
261
262class TestAsyncItems:
263parametrize = pytest.mark.parametrize(
264"async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
265)
266
267@parametrize
268async def test_method_create(self, async_client: AsyncOpenAI) -> None:
269item = await async_client.conversations.items.create(
270conversation_id="conv_123",
271items=[
272{
273"content": "string",
274"role": "user",
3a3cabb7stainless-app[bot]9 months ago275"type": "message",
4e28a424stainless-app[bot]10 months ago276}
277],
278)
279assert_matches_type(ConversationItemList, item, path=["response"])
280
281@parametrize
282async def test_method_create_with_all_params(self, async_client: AsyncOpenAI) -> None:
283item = await async_client.conversations.items.create(
284conversation_id="conv_123",
285items=[
286{
287"content": "string",
288"role": "user",
656e3cabstainless-app[bot]4 months ago289"phase": "commentary",
4e28a424stainless-app[bot]10 months ago290"type": "message",
291}
292],
0a5ad3e8stainless-app[bot]8 months ago293include=["file_search_call.results"],
4e28a424stainless-app[bot]10 months ago294)
295assert_matches_type(ConversationItemList, item, path=["response"])
296
297@parametrize
298async def test_raw_response_create(self, async_client: AsyncOpenAI) -> None:
299response = await async_client.conversations.items.with_raw_response.create(
300conversation_id="conv_123",
301items=[
302{
303"content": "string",
304"role": "user",
3a3cabb7stainless-app[bot]9 months ago305"type": "message",
4e28a424stainless-app[bot]10 months ago306}
307],
308)
309
310assert response.is_closed is True
311assert response.http_request.headers.get("X-Stainless-Lang") == "python"
312item = response.parse()
313assert_matches_type(ConversationItemList, item, path=["response"])
314
315@parametrize
316async def test_streaming_response_create(self, async_client: AsyncOpenAI) -> None:
317async with async_client.conversations.items.with_streaming_response.create(
318conversation_id="conv_123",
319items=[
320{
321"content": "string",
322"role": "user",
3a3cabb7stainless-app[bot]9 months ago323"type": "message",
4e28a424stainless-app[bot]10 months ago324}
325],
326) as response:
327assert not response.is_closed
328assert response.http_request.headers.get("X-Stainless-Lang") == "python"
329
330item = await response.parse()
331assert_matches_type(ConversationItemList, item, path=["response"])
332
333assert cast(Any, response.is_closed) is True
334
335@parametrize
336async def test_path_params_create(self, async_client: AsyncOpenAI) -> None:
337with pytest.raises(ValueError, match=r"Expected a non-empty value for `conversation_id` but received ''"):
338await async_client.conversations.items.with_raw_response.create(
339conversation_id="",
340items=[
341{
342"content": "string",
343"role": "user",
3a3cabb7stainless-app[bot]9 months ago344"type": "message",
4e28a424stainless-app[bot]10 months ago345}
346],
347)
348
349@parametrize
350async def test_method_retrieve(self, async_client: AsyncOpenAI) -> None:
351item = await async_client.conversations.items.retrieve(
352item_id="msg_abc",
353conversation_id="conv_123",
354)
355assert_matches_type(ConversationItem, item, path=["response"])
356
357@parametrize
358async def test_method_retrieve_with_all_params(self, async_client: AsyncOpenAI) -> None:
359item = await async_client.conversations.items.retrieve(
360item_id="msg_abc",
361conversation_id="conv_123",
0a5ad3e8stainless-app[bot]8 months ago362include=["file_search_call.results"],
4e28a424stainless-app[bot]10 months ago363)
364assert_matches_type(ConversationItem, item, path=["response"])
365
366@parametrize
367async def test_raw_response_retrieve(self, async_client: AsyncOpenAI) -> None:
368response = await async_client.conversations.items.with_raw_response.retrieve(
369item_id="msg_abc",
370conversation_id="conv_123",
371)
372
373assert response.is_closed is True
374assert response.http_request.headers.get("X-Stainless-Lang") == "python"
375item = response.parse()
376assert_matches_type(ConversationItem, item, path=["response"])
377
378@parametrize
379async def test_streaming_response_retrieve(self, async_client: AsyncOpenAI) -> None:
380async with async_client.conversations.items.with_streaming_response.retrieve(
381item_id="msg_abc",
382conversation_id="conv_123",
383) as response:
384assert not response.is_closed
385assert response.http_request.headers.get("X-Stainless-Lang") == "python"
386
387item = await response.parse()
388assert_matches_type(ConversationItem, item, path=["response"])
389
390assert cast(Any, response.is_closed) is True
391
392@parametrize
393async def test_path_params_retrieve(self, async_client: AsyncOpenAI) -> None:
394with pytest.raises(ValueError, match=r"Expected a non-empty value for `conversation_id` but received ''"):
395await async_client.conversations.items.with_raw_response.retrieve(
396item_id="msg_abc",
397conversation_id="",
398)
399
400with pytest.raises(ValueError, match=r"Expected a non-empty value for `item_id` but received ''"):
401await async_client.conversations.items.with_raw_response.retrieve(
402item_id="",
403conversation_id="conv_123",
404)
405
406@parametrize
407async def test_method_list(self, async_client: AsyncOpenAI) -> None:
408item = await async_client.conversations.items.list(
409conversation_id="conv_123",
410)
411assert_matches_type(AsyncConversationCursorPage[ConversationItem], item, path=["response"])
412
413@parametrize
414async def test_method_list_with_all_params(self, async_client: AsyncOpenAI) -> None:
415item = await async_client.conversations.items.list(
416conversation_id="conv_123",
417after="after",
0a5ad3e8stainless-app[bot]8 months ago418include=["file_search_call.results"],
4e28a424stainless-app[bot]10 months ago419limit=0,
420order="asc",
421)
422assert_matches_type(AsyncConversationCursorPage[ConversationItem], item, path=["response"])
423
424@parametrize
425async def test_raw_response_list(self, async_client: AsyncOpenAI) -> None:
426response = await async_client.conversations.items.with_raw_response.list(
427conversation_id="conv_123",
428)
429
430assert response.is_closed is True
431assert response.http_request.headers.get("X-Stainless-Lang") == "python"
432item = response.parse()
433assert_matches_type(AsyncConversationCursorPage[ConversationItem], item, path=["response"])
434
435@parametrize
436async def test_streaming_response_list(self, async_client: AsyncOpenAI) -> None:
437async with async_client.conversations.items.with_streaming_response.list(
438conversation_id="conv_123",
439) as response:
440assert not response.is_closed
441assert response.http_request.headers.get("X-Stainless-Lang") == "python"
442
443item = await response.parse()
444assert_matches_type(AsyncConversationCursorPage[ConversationItem], item, path=["response"])
445
446assert cast(Any, response.is_closed) is True
447
448@parametrize
449async def test_path_params_list(self, async_client: AsyncOpenAI) -> None:
450with pytest.raises(ValueError, match=r"Expected a non-empty value for `conversation_id` but received ''"):
451await async_client.conversations.items.with_raw_response.list(
452conversation_id="",
453)
454
455@parametrize
456async def test_method_delete(self, async_client: AsyncOpenAI) -> None:
457item = await async_client.conversations.items.delete(
458item_id="msg_abc",
459conversation_id="conv_123",
460)
461assert_matches_type(Conversation, item, path=["response"])
462
463@parametrize
464async def test_raw_response_delete(self, async_client: AsyncOpenAI) -> None:
465response = await async_client.conversations.items.with_raw_response.delete(
466item_id="msg_abc",
467conversation_id="conv_123",
468)
469
470assert response.is_closed is True
471assert response.http_request.headers.get("X-Stainless-Lang") == "python"
472item = response.parse()
473assert_matches_type(Conversation, item, path=["response"])
474
475@parametrize
476async def test_streaming_response_delete(self, async_client: AsyncOpenAI) -> None:
477async with async_client.conversations.items.with_streaming_response.delete(
478item_id="msg_abc",
479conversation_id="conv_123",
480) as response:
481assert not response.is_closed
482assert response.http_request.headers.get("X-Stainless-Lang") == "python"
483
484item = await response.parse()
485assert_matches_type(Conversation, item, path=["response"])
486
487assert cast(Any, response.is_closed) is True
488
489@parametrize
490async def test_path_params_delete(self, async_client: AsyncOpenAI) -> None:
491with pytest.raises(ValueError, match=r"Expected a non-empty value for `conversation_id` but received ''"):
492await async_client.conversations.items.with_raw_response.delete(
493item_id="msg_abc",
494conversation_id="",
495)
496
497with pytest.raises(ValueError, match=r"Expected a non-empty value for `item_id` but received ''"):
498await async_client.conversations.items.with_raw_response.delete(
499item_id="",
500conversation_id="conv_123",
501)