Skip to content

Commit 288082d

Browse files
committed
feat(formdata): use formdata-node to handle form data
This remove use of isomorphic-form-data. Refs #2008
1 parent c66f49b commit 288082d

File tree

6 files changed

+56
-98
lines changed

6 files changed

+56
-98
lines changed

package-lock.json

Lines changed: 38 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
"test:unit:coverage": "cross-env BABEL_ENV=commonjs jest --runInBand --config ./config/jest/jest.unit.coverage.config.js",
4242
"test:unit:watch": "cross-env BABEL_ENV=commonjs jest --runInBand --watch --config ./config/jest/jest.unit.config.js",
4343
"test:artifact": "run-s test:artifact:umd:browser test:artifact:es test:artifact:commonjs",
44-
"test:artifact:umd:browser": "npm run build:umd:browser && cross-env BABEL_ENV=commonjs jest --config ./config/jest/jest.artifact-umd-browser.config.js",
44+
"test:artifact:umd:browser": "npm run build:umd:browser && cross-env BABEL_ENV=browser jest --config ./config/jest/jest.artifact-umd-browser.config.js",
4545
"test:artifact:es": "npm run build:es && cross-env BABEL_ENV=commonjs jest --config ./config/jest/jest.artifact-es.config.js",
4646
"test:artifact:commonjs": "npm run build:commonjs && cross-env BABEL_ENV=commonjs jest --config ./config/jest/jest.artifact-commonjs.config.js",
4747
"deps:license": "license-checker --production --csv --out $npm_package_config_deps_check_dir/licenses.csv && license-checker --development --csv --out $npm_package_config_deps_check_dir/licenses-dev.csv",
@@ -109,7 +109,7 @@
109109
"cross-fetch": "^3.1.4",
110110
"deep-extend": "~0.6.0",
111111
"fast-json-patch": "^3.0.0-1",
112-
"isomorphic-form-data": "~2.0.0",
112+
"formdata-node": "^3.6.2",
113113
"js-yaml": "^3.14.0",
114114
"lodash": "^4.17.19",
115115
"qs": "^6.9.4",

src/http.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import jsYaml from 'js-yaml';
44
import pick from 'lodash/pick';
55
import isFunction from 'lodash/isFunction';
66
import { Buffer } from 'buffer';
7+
import { FormData } from 'formdata-node';
78

8-
import FormData from './internal/form-data-monkey-patch';
99
import { encodeDisallowedCharacters } from './execute/oas3/style-serializer';
1010

1111
// For testing

src/internal/form-data-monkey-patch.js

Lines changed: 0 additions & 62 deletions
This file was deleted.

test/execute/main.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import FormData from '../../src/internal/form-data-monkey-patch';
1+
import { FormData } from 'formdata-node';
2+
23
import { execute, buildRequest, self as stubs } from '../../src/execute';
34
import { normalizeSwagger } from '../../src/helpers';
45

test/http-multipart.js

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import fetchMock from 'fetch-mock';
2+
import { FormData } from 'formdata-node';
23

3-
import FormData from '../src/internal/form-data-monkey-patch';
44
import { buildRequest } from '../src/execute';
55
import sampleMultipartOpenApi2 from './data/sample-multipart-oas2';
66
import sampleMultipartOpenApi3 from './data/sample-multipart-oas3';
@@ -132,10 +132,9 @@ describe('buildRequest - openapi 2.0', () => {
132132
expect(json.data.email.length).toEqual(2);
133133
expect(json.data.email[0]).toEqual('person1');
134134
expect(json.data.email[1]).toEqual('person2');
135-
// duck typing that fetch received a FormData instance instead of plain object
135+
// fetch received a FormData instance instead of plain object
136136
const lastOptions = fetchMock.lastOptions();
137-
expect(lastOptions.body.readable).toEqual(true);
138-
// expect(lastOptions.body._streams).toBeDefined()
137+
expect(lastOptions.body).toBeInstanceOf(FormData);
139138
});
140139
});
141140
});
@@ -222,10 +221,9 @@ describe('buildRequest - openapi 3.0', () => {
222221
expect(json.data.email.length).toEqual(2);
223222
expect(json.data.email[0]).toEqual('person1');
224223
expect(json.data.email[1]).toEqual('person2');
225-
// duck typing that fetch received a FormData instance instead of plain object
224+
// fetch received a FormData instance instead of plain object
226225
const lastOptions = fetchMock.lastOptions();
227-
expect(lastOptions.body.readable).toEqual(true);
228-
// expect(lastOptions.body._streams).toBeDefined()
226+
expect(lastOptions.body).toBeInstanceOf(FormData);
229227
});
230228
});
231229
});
@@ -243,7 +241,7 @@ describe('buildRequest - openapi 3.0', () => {
243241
},
244242
});
245243

246-
test('should return FormData entry list and item entries (in order)', () => {
244+
test('should return FormData entry list and item entries (in order)', async () => {
247245
expect(req).toMatchObject({
248246
method: 'POST',
249247
url: '/api/v1/land/content/uploadImage',
@@ -255,9 +253,10 @@ describe('buildRequest - openapi 3.0', () => {
255253
const validateFormDataInstance = req.body instanceof FormData;
256254
expect(validateFormDataInstance).toEqual(true);
257255
const itemEntries = req.body.getAll('images[]');
256+
258257
expect(itemEntries.length).toEqual(2);
259-
expect(itemEntries[0]).toEqual(file1);
260-
expect(itemEntries[1]).toEqual(file2);
258+
expect(await itemEntries[0].text()).toEqual(file1.toString());
259+
expect(await itemEntries[1].text()).toEqual(file2.toString());
261260
});
262261
});
263262

@@ -318,10 +317,10 @@ describe('buildRequest - openapi 3.0', () => {
318317
},
319318
});
320319

321-
expect(Array.from(req.body.entryList)).toEqual([
322-
{ name: 'color[R]', value: '100' },
323-
{ name: 'color[G]', value: '200' },
324-
{ name: 'color[B]', value: '150' },
320+
expect(Array.from(req.body)).toEqual([
321+
['color[R]', '100'],
322+
['color[G]', '200'],
323+
['color[B]', '150'],
325324
]);
326325
});
327326
});

0 commit comments

Comments
 (0)