6
6
from pytest_httpx import HTTPXMock
7
7
8
8
from zep_python import NotFoundError
9
- from zep_python .models import Memory , MemorySearchPayload , Message
9
+ from zep_python .models import Memory , MemorySearchPayload , Message , Session
10
10
from zep_python .zep_client import ZepClient
11
11
12
12
api_base_url = "http://localhost/api/v1"
13
13
14
- mock_response = {
14
+ mock_messages = {
15
15
"messages" : [
16
16
{
17
17
"uuid" : "msg-uuid" ,
@@ -60,15 +60,15 @@ def filter_unset_fields(d: Dict) -> Dict:
60
60
61
61
62
62
def validate_memory (memory : Memory ):
63
- assert len (memory .messages ) == len (mock_response ["messages" ])
63
+ assert len (memory .messages ) == len (mock_messages ["messages" ])
64
64
65
65
for i in range (len (memory .messages )):
66
- assert memory .messages [i ].uuid == mock_response ["messages" ][i ]["uuid" ]
67
- assert memory .messages [i ].role == mock_response ["messages" ][i ]["role" ]
68
- assert memory .messages [i ].content == mock_response ["messages" ][i ]["content" ]
69
- assert memory .messages [i ].metadata == mock_response ["messages" ][i ]["metadata" ]
66
+ assert memory .messages [i ].uuid == mock_messages ["messages" ][i ]["uuid" ]
67
+ assert memory .messages [i ].role == mock_messages ["messages" ][i ]["role" ]
68
+ assert memory .messages [i ].content == mock_messages ["messages" ][i ]["content" ]
69
+ assert memory .messages [i ].metadata == mock_messages ["messages" ][i ]["metadata" ]
70
70
71
- assert filter_unset_fields (memory .dict ()) == mock_response
71
+ assert filter_unset_fields (memory .dict ()) == mock_messages
72
72
73
73
74
74
@pytest .mark .asyncio
@@ -87,7 +87,7 @@ async def test_set_authorization_header(httpx_mock):
87
87
async def test_aget_memory (httpx_mock : HTTPXMock ):
88
88
session_id = str (uuid4 ())
89
89
90
- httpx_mock .add_response (status_code = 200 , json = mock_response )
90
+ httpx_mock .add_response (status_code = 200 , json = mock_messages )
91
91
92
92
async with ZepClient (base_url = api_base_url ) as client :
93
93
memory = await client .aget_memory (session_id )
@@ -132,7 +132,7 @@ async def test_aget_memory_missing_values(httpx_mock: HTTPXMock):
132
132
def test_get_memory (httpx_mock : HTTPXMock ):
133
133
session_id = str (uuid4 ())
134
134
135
- httpx_mock .add_response (status_code = 200 , json = mock_response )
135
+ httpx_mock .add_response (status_code = 200 , json = mock_messages )
136
136
137
137
with ZepClient (base_url = api_base_url ) as client :
138
138
memory = client .get_memory (session_id )
@@ -267,3 +267,94 @@ def test_search_memory(httpx_mock: HTTPXMock):
267
267
assert search_results [0 ].message ["role" ] == "user"
268
268
assert search_results [0 ].message ["content" ] == "Test message"
269
269
assert search_results [0 ].dist == 0.9
270
+
271
+
272
+ # Predefined session response
273
+ mock_session = {
274
+ "uuid" : str (uuid4 ()),
275
+ "created_at" : "2020-12-31T23:59:59" ,
276
+ "updated_at" : "2021-01-01T00:00:00" ,
277
+ "deleted_at" : None ,
278
+ "session_id" : "abc123" ,
279
+ "metadata" : {},
280
+ }
281
+
282
+
283
+ def validate_session (session ):
284
+ # Validate the session object here
285
+ assert Session .parse_obj (mock_session ) == session
286
+
287
+
288
+ @pytest .mark .asyncio
289
+ async def test_get_session (httpx_mock : HTTPXMock ):
290
+ session_id = "abc123"
291
+
292
+ httpx_mock .add_response (status_code = 200 , json = mock_session )
293
+
294
+ client = ZepClient (base_url = api_base_url )
295
+ session = client .get_session (session_id )
296
+
297
+ validate_session (session )
298
+
299
+
300
+ def test_get_session_missing_id ():
301
+ client = ZepClient (base_url = api_base_url )
302
+
303
+ with pytest .raises (ValueError ):
304
+ client .get_session (session_id = None ) # type: ignore
305
+
306
+
307
+ @pytest .mark .asyncio
308
+ async def test_aget_session (httpx_mock : HTTPXMock ):
309
+ session_id = "abc123"
310
+
311
+ httpx_mock .add_response (status_code = 200 , json = mock_session )
312
+
313
+ async with ZepClient (base_url = api_base_url ) as client :
314
+ session = await client .aget_session (session_id )
315
+
316
+ validate_session (session )
317
+
318
+
319
+ @pytest .mark .asyncio
320
+ async def test_aget_session_missing_id (httpx_mock : HTTPXMock ):
321
+ async with ZepClient (base_url = api_base_url ) as client :
322
+ with pytest .raises (ValueError ):
323
+ _ = await client .aget_session (session_id = None ) # type: ignore
324
+
325
+
326
+ def test_add_session (httpx_mock : HTTPXMock ):
327
+ session = Session (** mock_session )
328
+
329
+ httpx_mock .add_response (status_code = 200 , text = "OK" )
330
+
331
+ client = ZepClient (base_url = api_base_url )
332
+ result = client .add_session (session )
333
+
334
+ assert result == "OK"
335
+
336
+
337
+ def test_add_session_missing_session ():
338
+ client = ZepClient (base_url = api_base_url )
339
+
340
+ with pytest .raises (ValueError ):
341
+ client .add_session (session = None ) # type: ignore
342
+
343
+
344
+ @pytest .mark .asyncio
345
+ async def test_aadd_session (httpx_mock : HTTPXMock ):
346
+ session = Session (** mock_session )
347
+
348
+ httpx_mock .add_response (status_code = 200 , text = "OK" )
349
+
350
+ async with ZepClient (base_url = api_base_url ) as client :
351
+ result = await client .aadd_session (session )
352
+
353
+ assert result == "OK"
354
+
355
+
356
+ @pytest .mark .asyncio
357
+ async def test_aadd_session_missing_session (httpx_mock : HTTPXMock ):
358
+ async with ZepClient (base_url = api_base_url ) as client :
359
+ with pytest .raises (ValueError ):
360
+ _ = await client .aadd_session (session = None ) # type: ignore
0 commit comments