test: add test for multipart keeping order (#27787)
Test for https://github.com/microsoft/playwright/issues/27720
This commit is contained in:
parent
1afeff5be0
commit
5f0d91a42c
|
|
@ -920,7 +920,7 @@ it('should support multipart/form-data', async function({ context, server }) {
|
||||||
expect(response.status()).toBe(200);
|
expect(response.status()).toBe(200);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should support multipart/form-data with ReadSream values', async function({ context, page, asset, server }) {
|
it('should support multipart/form-data with ReadStream values', async function({ context, page, asset, server }) {
|
||||||
const formReceived = new Promise<{error: any, fields: formidable.Fields, files: Record<string, formidable.File>, serverRequest: IncomingMessage}>(resolve => {
|
const formReceived = new Promise<{error: any, fields: formidable.Fields, files: Record<string, formidable.File>, serverRequest: IncomingMessage}>(resolve => {
|
||||||
server.setRoute('/empty.html', async (serverRequest, res) => {
|
server.setRoute('/empty.html', async (serverRequest, res) => {
|
||||||
const form = new formidable.IncomingForm();
|
const form = new formidable.IncomingForm();
|
||||||
|
|
@ -953,6 +953,35 @@ it('should support multipart/form-data with ReadSream values', async function({
|
||||||
expect(response.status()).toBe(200);
|
expect(response.status()).toBe(200);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should support multipart/form-data and keep the order', async function({ context, page, asset, server }) {
|
||||||
|
const given = {
|
||||||
|
firstName: 'John',
|
||||||
|
lastName: 'Doe',
|
||||||
|
age: 27,
|
||||||
|
};
|
||||||
|
given['foo'] = 'bar';
|
||||||
|
const givenKeys = Object.keys(given);
|
||||||
|
const formReceived = new Promise<{error: any, fields: formidable.Fields}>(resolve => {
|
||||||
|
server.setRoute('/empty.html', async (serverRequest, res) => {
|
||||||
|
const form = new formidable.IncomingForm();
|
||||||
|
form.parse(serverRequest, (error, fields, files) => {
|
||||||
|
server.serveFile(serverRequest, res);
|
||||||
|
resolve({ error, fields });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
const [{ error, fields }, response] = await Promise.all([
|
||||||
|
formReceived,
|
||||||
|
context.request.post(server.EMPTY_PAGE, {
|
||||||
|
multipart: given,
|
||||||
|
})
|
||||||
|
]);
|
||||||
|
expect(error).toBeFalsy();
|
||||||
|
const actualKeys = Object.keys(fields);
|
||||||
|
expect(actualKeys).toEqual(givenKeys);
|
||||||
|
expect(response.status()).toBe(200);
|
||||||
|
});
|
||||||
|
|
||||||
it('should serialize data to json regardless of content-type', async function({ context, server }) {
|
it('should serialize data to json regardless of content-type', async function({ context, server }) {
|
||||||
const data = {
|
const data = {
|
||||||
firstName: 'John',
|
firstName: 'John',
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue