33from collections .abc import AsyncIterator , Awaitable , Callable
44from typing import Any
55
6- import aiohttp
76import pytest
87from aiohttp import web
98
109from ai .backend .client .exceptions import BackendAPIError , BackendClientError
1110from ai .backend .client .v2 .deployment_chat import (
1211 DeploymentChatAuthError ,
1312 DeploymentChatClient ,
13+ DeploymentChatClientArgs ,
1414)
1515
1616HandlerFn = Callable [[web .Request ], Awaitable [web .StreamResponse ]]
@@ -61,14 +61,14 @@ async def wrapped(request: web.Request) -> web.StreamResponse:
6161
6262@pytest .fixture
6363async def chat_client () -> AsyncIterator [DeploymentChatClient ]:
64- client = DeploymentChatClient ( )
64+ client = await DeploymentChatClient . create ( DeploymentChatClientArgs () )
6565 try :
6666 yield client
6767 finally :
6868 await client .close ()
6969
7070
71- def _request_body () -> dict [str , Any ]:
71+ def _make_body () -> dict [str , Any ]:
7272 return {
7373 "model" : "meta/test-model" ,
7474 "messages" : [{"role" : "user" , "content" : "hello" }],
@@ -96,7 +96,7 @@ async def handler(_request: web.Request) -> web.Response:
9696 resp = await chat_client .chat_completion (
9797 server .base_url ,
9898 "sk-test-token" ,
99- _request_body (),
99+ _make_body (),
100100 )
101101 finally :
102102 await server .stop ()
@@ -105,7 +105,7 @@ async def handler(_request: web.Request) -> web.Response:
105105 assert server .recorded ["path" ] == "/v1/chat/completions"
106106 assert server .recorded ["headers" ]["Authorization" ] == "Bearer sk-test-token"
107107 assert server .recorded ["headers" ]["Content-Type" ] == "application/json"
108- assert server .recorded ["json" ] == _request_body ()
108+ assert server .recorded ["json" ] == _make_body ()
109109 assert resp ["choices" ][0 ]["message" ]["content" ] == "hi"
110110
111111 async def test_endpoint_url_already_ending_in_chat_completions (
@@ -117,7 +117,7 @@ async def handler(_request: web.Request) -> web.Response:
117117 server = await _start_server ("POST" , "/v1/chat/completions" , handler )
118118 try :
119119 full_url = f"{ server .base_url } /v1/chat/completions"
120- await chat_client .chat_completion (full_url , "sk-x" , _request_body ())
120+ await chat_client .chat_completion (full_url , "sk-x" , _make_body ())
121121 finally :
122122 await server .stop ()
123123 assert server .recorded ["path" ] == "/v1/chat/completions"
@@ -131,7 +131,7 @@ async def handler(_request: web.Request) -> web.Response:
131131 server = await _start_server ("POST" , "/v1/chat/completions" , handler )
132132 try :
133133 full_url = f"{ server .base_url } /v1/chat/completions/"
134- await chat_client .chat_completion (full_url , "sk-x" , _request_body ())
134+ await chat_client .chat_completion (full_url , "sk-x" , _make_body ())
135135 finally :
136136 await server .stop ()
137137 assert server .recorded ["path" ] == "/v1/chat/completions"
@@ -144,7 +144,7 @@ async def handler(_request: web.Request) -> web.Response:
144144
145145 server = await _start_server ("POST" , "/v1/chat/completions" , handler )
146146 try :
147- await chat_client .chat_completion (server .base_url , None , _request_body ())
147+ await chat_client .chat_completion (server .base_url , None , _make_body ())
148148 finally :
149149 await server .stop ()
150150 assert "Authorization" not in server .recorded ["headers" ]
@@ -177,7 +177,7 @@ async def handler(_request: web.Request) -> web.Response:
177177 server = await _start_server ("POST" , "/v1/chat/completions" , handler )
178178 try :
179179 with pytest .raises (DeploymentChatAuthError ) as exc_info :
180- await chat_client .chat_completion (server .base_url , "bad" , _request_body ())
180+ await chat_client .chat_completion (server .base_url , "bad" , _make_body ())
181181 finally :
182182 await server .stop ()
183183 assert exc_info .value .status == 401
@@ -191,7 +191,7 @@ async def handler(_request: web.Request) -> web.Response:
191191 server = await _start_server ("POST" , "/v1/chat/completions" , handler )
192192 try :
193193 with pytest .raises (DeploymentChatAuthError ):
194- await chat_client .chat_completion (server .base_url , "bad" , _request_body ())
194+ await chat_client .chat_completion (server .base_url , "bad" , _make_body ())
195195 finally :
196196 await server .stop ()
197197
@@ -206,7 +206,7 @@ async def handler(_request: web.Request) -> web.Response:
206206 server = await _start_server ("POST" , "/v1/chat/completions" , handler )
207207 try :
208208 with pytest .raises (BackendAPIError ) as exc_info :
209- await chat_client .chat_completion (server .base_url , "sk" , _request_body ())
209+ await chat_client .chat_completion (server .base_url , "sk" , _make_body ())
210210 finally :
211211 await server .stop ()
212212 assert not isinstance (exc_info .value , DeploymentChatAuthError )
@@ -223,14 +223,6 @@ async def handler(_request: web.Request) -> web.Response:
223223 server = await _start_server ("POST" , "/v1/chat/completions" , handler )
224224 try :
225225 with pytest .raises (BackendClientError ):
226- await chat_client .chat_completion (server .base_url , "sk" , _request_body ())
226+ await chat_client .chat_completion (server .base_url , "sk" , _make_body ())
227227 finally :
228228 await server .stop ()
229-
230-
231- class TestExternalSession :
232- async def test_does_not_close_externally_owned_session (self ) -> None :
233- async with aiohttp .ClientSession () as external :
234- client = DeploymentChatClient (session = external )
235- await client .close ()
236- assert external .closed is False
0 commit comments