diff --git a/pkgs/cronet_http/CHANGELOG.md b/pkgs/cronet_http/CHANGELOG.md index 7eecd298e0..5d11778cac 100644 --- a/pkgs/cronet_http/CHANGELOG.md +++ b/pkgs/cronet_http/CHANGELOG.md @@ -1,5 +1,7 @@ ## 0.4.3-wip +* Fix invalid requests method. + ## 0.4.2 * Require `package:jni >= 0.7.2` to remove a potential buffer overflow. diff --git a/pkgs/cronet_http/example/integration_test/cronet_configuration_test.dart b/pkgs/cronet_http/example/integration_test/cronet_configuration_test.dart index f787ebc39a..71f83be8a2 100644 --- a/pkgs/cronet_http/example/integration_test/cronet_configuration_test.dart +++ b/pkgs/cronet_http/example/integration_test/cronet_configuration_test.dart @@ -5,6 +5,7 @@ import 'dart:io'; import 'package:cronet_http/cronet_http.dart'; +import 'package:http/http.dart'; import 'package:integration_test/integration_test.dart'; import 'package:test/test.dart'; @@ -92,6 +93,49 @@ void testInvalidConfigurations() { }); } +void testMethods() { + group('methods', () { + late HttpServer server; + late String requestMethod; + + setUp(() async { + server = (await HttpServer.bind('localhost', 0)) + ..listen((request) async { + await request.drain(); + requestMethod = request.method; + await request.response.close(); + }); + }); + tearDown(() { + server.close(); + }); + + test('methods', () async { + final engine = CronetEngine.build(); + const methods = [ + 'GET', + 'HEAD', + 'POST', + 'PUT', + 'DELETE', + 'CONNECT', + 'OPTIONS', + 'TRACE', + 'PATCH', + 'CUSTOM', + ]; + for (final method in methods) { + final request = Request( + method, + Uri.parse('http://localhost:${server.port}'), + ); + await CronetClient.fromCronetEngine(engine).send(request); + expect(requestMethod, method); + } + }); + }); +} + void testUserAgent() { group('userAgent', () { late HttpServer server; @@ -125,5 +169,6 @@ void main() { testCache(); testInvalidConfigurations(); + testMethods(); testUserAgent(); } diff --git a/pkgs/cronet_http/lib/src/cronet_client.dart b/pkgs/cronet_http/lib/src/cronet_client.dart index c4d0d19006..92d2281eb2 100644 --- a/pkgs/cronet_http/lib/src/cronet_client.dart +++ b/pkgs/cronet_http/lib/src/cronet_client.dart @@ -312,12 +312,14 @@ class CronetClient extends BaseClient { final responseCompleter = Completer(); final engine = _engine!._engine; - final builder = engine.newUrlRequestBuilder( - request.url.toString().toJString(), - jb.UrlRequestCallbackProxy.new1( - _urlRequestCallbacks(request, responseCompleter)), - _executor, - ); + final builder = engine + .newUrlRequestBuilder( + request.url.toString().toJString(), + jb.UrlRequestCallbackProxy.new1( + _urlRequestCallbacks(request, responseCompleter)), + _executor, + ) + .setHttpMethod(request.method.toJString()); var headers = request.headers; if (body.isNotEmpty &&