diff --git a/packages/net-stubbing/lib/server/util.ts b/packages/net-stubbing/lib/server/util.ts index c33d4be1464f..68d31bc26f9d 100644 --- a/packages/net-stubbing/lib/server/util.ts +++ b/packages/net-stubbing/lib/server/util.ts @@ -251,6 +251,10 @@ export function getBodyEncoding (req: CyHttpMessages.IncomingRequest): BodyEncod if (contentType.includes('charset=utf-8') || contentType.includes('charset="utf-8"')) { return 'utf8' } + + if (contentType.includes('multipart/form-data')) { + return 'binary' + } } // with fallback to inspecting the buffer using diff --git a/packages/net-stubbing/test/unit/util-spec.ts b/packages/net-stubbing/test/unit/util-spec.ts index 3775f48ffa8d..f2e1db390975 100644 --- a/packages/net-stubbing/test/unit/util-spec.ts +++ b/packages/net-stubbing/test/unit/util-spec.ts @@ -69,5 +69,19 @@ describe('net-stubbing util', () => { expect(getBodyEncoding(req), 'image').to.equal('binary') }) + + it('returns binary for form-data bodies', () => { + const formDataRequest = { + body: Buffer.from('hello world'), + headers: { + 'content-type': 'multipart/form-data', + }, + method: 'POST', + url: 'somewhere', + httpVersion: '1.1', + } + + expect(getBodyEncoding(formDataRequest)).to.equal('binary') + }) }) })