From 004b3ac8324e6cdbfb5d04b8bbdc6664ea48fbcf Mon Sep 17 00:00:00 2001 From: Alex Kondratyuk Date: Thu, 28 Apr 2022 12:33:26 +0300 Subject: [PATCH] fix: don't uppercase unknown methods (#1542) * fix: don't uppercase unknown methods --- src/request.js | 4 +++- test/request.js | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/request.js b/src/request.js index a4d1b2209..a63f7e606 100644 --- a/src/request.js +++ b/src/request.js @@ -61,7 +61,9 @@ export default class Request extends Body { } let method = init.method || input.method || 'GET'; - method = method.toUpperCase(); + if (/^(delete|get|head|options|post|put)$/i.test(method)) { + method = method.toUpperCase(); + } if ('data' in init) { doBadDataWarn(); diff --git a/test/request.js b/test/request.js index b8ba107e9..03cbe3cf1 100644 --- a/test/request.js +++ b/test/request.js @@ -151,6 +151,24 @@ describe('Request', () => { expect(request.headers.get('a')).to.equal('1'); }); + it('should uppercase DELETE, GET, HEAD, OPTIONS, POST and PUT methods', () => { + const url = base; + for (const method of ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']) { + const request = new Request(url, { + method: method.toLowerCase() + }); + expect(request.method).to.equal(method); + } + }); + + it('should not uppercase unknown methods and patch', () => { + const url = base; + for (const method of ['patch', 'chicken']) { + const request = new Request(url, {method}); + expect(request.method).to.equal(method); + } + }); + it('should support arrayBuffer() method', () => { const url = base; const request = new Request(url, {