import 'package:podman/podman.dart'; import 'package:test/test.dart'; import 'support/fake_podman_transport.dart'; void main() { group('PodmanClient container archive API', () { test('supports head/get/put archive endpoints', () async { final transport = FakePodmanTransport() ..enqueue( method: HttpMethod.head, path: '/v5.0.0/libpod/containers/orchestrator/archive', queryParameters: const >{ 'path': ['/etc'], }, statusCode: 200, headers: const >{ 'x-docker-container-path-stat': ['stat-head'], }, ) ..enqueue( method: HttpMethod.get, path: '/v5.0.0/libpod/containers/orchestrator/archive', queryParameters: const >{ 'path': ['/etc'], 'rename': ['{"etc":"config"}'], }, statusCode: 200, headers: const >{ 'x-docker-container-path-stat': ['stat-get'], }, responseBody: [1, 2, 3, 4], ) ..enqueue( method: HttpMethod.put, path: '/v5.0.0/libpod/containers/orchestrator/archive', queryParameters: const >{ 'path': ['/tmp'], 'copyUIDGID': ['false'], 'noOverwriteDirNonDir': ['true'], 'rename': ['{"from":"to"}'], }, body: [65, 66, 67], statusCode: 200, ); final client = PodmanClient(transport: transport); final headStat = await client.headContainerArchive( 'orchestrator', path: '/etc', ); expect(headStat, 'stat-head'); final archive = await client.getContainerArchive( 'orchestrator', path: '/etc', rename: const {'etc': 'config'}, ); expect(archive.pathStatHeader, 'stat-get'); expect(archive.archiveBytes, [1, 2, 3, 4]); await client.putContainerArchive( 'orchestrator', path: '/tmp', archiveBytes: const [65, 66, 67], copyUidGid: false, noOverwriteDirNonDir: true, rename: const {'from': 'to'}, ); transport.expectNoPending(); }); }); }