import 'dart:io'; import 'package:flutter_test/flutter_test.dart'; import 'package:reelbox/media/media_files_io.dart' as files; void main() { TestWidgetsFlutterBinding.ensureInitialized(); test( 'parallel optimization requires a successful HEAD with size and ranges', () async { final previous = HttpOverrides.current; HttpOverrides.global = null; addTearDown(() => HttpOverrides.global = previous); final server = await HttpServer.bind(InternetAddress.loopbackIPv4, 0); addTearDown(() => server.close(force: true)); final methods = []; server.listen((request) async { methods.add(request.method); switch (request.uri.path) { case '/capable': request.response.contentLength = 524288; request.response.headers.set('accept-ranges', 'bytes'); case '/no-head': request.response.statusCode = HttpStatus.methodNotAllowed; case '/no-ranges': request.response.contentLength = 524288; case '/unknown-size': request.response.headers.set('accept-ranges', 'bytes'); case '/forbidden': request.response.statusCode = HttpStatus.forbidden; default: request.response.statusCode = HttpStatus.notFound; } await request.response.close(); }); String url(String path) => 'http://127.0.0.1:${server.port}$path'; expect(await files.supportsParallelDownload(url('/capable')), isTrue); for (final path in [ '/no-head', '/no-ranges', '/unknown-size', '/forbidden', ]) { expect( await files.supportsParallelDownload(url(path)), isFalse, reason: path, ); } expect(methods, List.filled(5, 'HEAD')); expect( await files.supportsParallelDownload('file:///private.mp4'), isFalse, ); }, ); }