Skip to content

Commit c8f7d9b

Browse files
committed
fix tests
1 parent 21aad84 commit c8f7d9b

File tree

1 file changed

+46
-8
lines changed

1 file changed

+46
-8
lines changed

tests/test_client.py

Lines changed: 46 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -267,11 +267,14 @@ def generate():
267267
'insecure': False,
268268
'stream': True,
269269
},
270-
).respond_with_json({})
270+
).respond_with_handler(stream_handler)
271271

272272
client = Client(httpserver.url_for('/'))
273273
response = client.pull('dummy', stream=True)
274-
assert isinstance(response, types.GeneratorType)
274+
275+
it = iter(['pulling manifest', 'verifying sha256 digest', 'writing manifest', 'removing any unused layers', 'success'])
276+
for part in response:
277+
assert part['status'] == next(it)
275278

276279

277280
def test_client_push(httpserver: HTTPServer):
@@ -291,6 +294,14 @@ def test_client_push(httpserver: HTTPServer):
291294

292295

293296
def test_client_push_stream(httpserver: HTTPServer):
297+
def stream_handler(_: Request):
298+
def generate():
299+
yield json.dumps({'status': 'retrieving manifest'}) + '\n'
300+
yield json.dumps({'status': 'pushing manifest'}) + '\n'
301+
yield json.dumps({'status': 'success'}) + '\n'
302+
303+
return Response(generate())
304+
294305
httpserver.expect_ordered_request(
295306
'/api/push',
296307
method='POST',
@@ -299,11 +310,14 @@ def test_client_push_stream(httpserver: HTTPServer):
299310
'insecure': False,
300311
'stream': True,
301312
},
302-
).respond_with_json({})
313+
).respond_with_handler(stream_handler)
303314

304315
client = Client(httpserver.url_for('/'))
305316
response = client.push('dummy', stream=True)
306-
assert isinstance(response, types.GeneratorType)
317+
318+
it = iter(['retrieving manifest', 'pushing manifest', 'success'])
319+
for part in response:
320+
assert part['status'] == next(it)
307321

308322

309323
def test_client_create_path(httpserver: HTTPServer):
@@ -642,6 +656,16 @@ async def test_async_client_pull(httpserver: HTTPServer):
642656

643657
@pytest.mark.asyncio
644658
async def test_async_client_pull_stream(httpserver: HTTPServer):
659+
def stream_handler(_: Request):
660+
def generate():
661+
yield json.dumps({'status': 'pulling manifest'}) + '\n'
662+
yield json.dumps({'status': 'verifying sha256 digest'}) + '\n'
663+
yield json.dumps({'status': 'writing manifest'}) + '\n'
664+
yield json.dumps({'status': 'removing any unused layers'}) + '\n'
665+
yield json.dumps({'status': 'success'}) + '\n'
666+
667+
return Response(generate())
668+
645669
httpserver.expect_ordered_request(
646670
'/api/pull',
647671
method='POST',
@@ -650,11 +674,14 @@ async def test_async_client_pull_stream(httpserver: HTTPServer):
650674
'insecure': False,
651675
'stream': True,
652676
},
653-
).respond_with_json({})
677+
).respond_with_handler(stream_handler)
654678

655679
client = AsyncClient(httpserver.url_for('/'))
656680
response = await client.pull('dummy', stream=True)
657-
assert isinstance(response, types.AsyncGeneratorType)
681+
682+
it = iter(['pulling manifest', 'verifying sha256 digest', 'writing manifest', 'removing any unused layers', 'success'])
683+
async for part in response:
684+
assert part['status'] == next(it)
658685

659686

660687
@pytest.mark.asyncio
@@ -676,6 +703,14 @@ async def test_async_client_push(httpserver: HTTPServer):
676703

677704
@pytest.mark.asyncio
678705
async def test_async_client_push_stream(httpserver: HTTPServer):
706+
def stream_handler(_: Request):
707+
def generate():
708+
yield json.dumps({'status': 'retrieving manifest'}) + '\n'
709+
yield json.dumps({'status': 'pushing manifest'}) + '\n'
710+
yield json.dumps({'status': 'success'}) + '\n'
711+
712+
return Response(generate())
713+
679714
httpserver.expect_ordered_request(
680715
'/api/push',
681716
method='POST',
@@ -684,11 +719,14 @@ async def test_async_client_push_stream(httpserver: HTTPServer):
684719
'insecure': False,
685720
'stream': True,
686721
},
687-
).respond_with_json({})
722+
).respond_with_handler(stream_handler)
688723

689724
client = AsyncClient(httpserver.url_for('/'))
690725
response = await client.push('dummy', stream=True)
691-
assert isinstance(response, types.AsyncGeneratorType)
726+
727+
it = iter(['retrieving manifest', 'pushing manifest', 'success'])
728+
async for part in response:
729+
assert part['status'] == next(it)
692730

693731

694732
@pytest.mark.asyncio

0 commit comments

Comments
 (0)