From 76c3d9dd826d33de1b2cec2a128c86f6553139ad Mon Sep 17 00:00:00 2001 From: alireza easazade Date: Tue, 18 Apr 2023 16:28:22 +0330 Subject: [PATCH] fix(dart_frog): `Response.json()` overwrites `content-type` header (#596) --- .gitignore | 3 ++- packages/dart_frog/lib/src/response.dart | 3 ++- packages/dart_frog/test/src/response_test.dart | 11 +++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 723ef36f4..db5283476 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -.idea \ No newline at end of file +.idea +.vscode/settings.json \ No newline at end of file diff --git a/packages/dart_frog/lib/src/response.dart b/packages/dart_frog/lib/src/response.dart index ffae67fbe..6574c6980 100644 --- a/packages/dart_frog/lib/src/response.dart +++ b/packages/dart_frog/lib/src/response.dart @@ -55,7 +55,8 @@ class Response { body: body != null ? jsonEncode(body) : null, headers: { ...headers, - HttpHeaders.contentTypeHeader: ContentType.json.value, + if (!headers.containsKey(HttpHeaders.contentTypeHeader)) + HttpHeaders.contentTypeHeader: ContentType.json.value, }, ); diff --git a/packages/dart_frog/test/src/response_test.dart b/packages/dart_frog/test/src/response_test.dart index d060b04ba..d3fcd9734 100644 --- a/packages/dart_frog/test/src/response_test.dart +++ b/packages/dart_frog/test/src/response_test.dart @@ -184,6 +184,17 @@ void main() { final response = Response.json(); expect(response.json(), completion(isEmpty)); }); + + test('has correct content-type when overriden in headers', () { + final headers = { + HttpHeaders.contentTypeHeader: ContentType.html.value, + }; + final response = Response.json(headers: headers); + expect( + response.headers[HttpHeaders.contentTypeHeader], + equals(ContentType.html.value), + ); + }); }); }); }