node-fetch/test/form-data.js

94 lines
2.6 KiB
JavaScript

import {FormData as FormDataNode} from 'formdata-node';
import chai from 'chai';
import {Request, Response, FormData, Blob} from '../src/index.js';
const {expect} = chai;
describe('FormData', () => {
it('Consume empty URLSearchParams as FormData', async () => {
const res = new Response(new URLSearchParams());
const fd = await res.formData();
expect(fd).to.be.instanceOf(FormData);
});
it('Consume empty URLSearchParams as FormData', async () => {
const req = new Request('about:blank', {
method: 'POST',
body: new URLSearchParams()
});
const fd = await req.formData();
expect(fd).to.be.instanceOf(FormData);
});
it('Consume empty response.formData() as FormData', async () => {
const res = new Response(new FormData());
const fd = await res.formData();
expect(fd).to.be.instanceOf(FormData);
});
it('Consume empty response.formData() as FormData', async () => {
const res = new Response(new FormData());
const fd = await res.formData();
expect(fd).to.be.instanceOf(FormData);
});
it('Consume empty request.formData() as FormData', async () => {
const req = new Request('about:blank', {
method: 'POST',
body: new FormData()
});
const fd = await req.formData();
expect(fd).to.be.instanceOf(FormData);
});
it('Consume URLSearchParams with entries as FormData', async () => {
const res = new Response(new URLSearchParams({foo: 'bar'}));
const fd = await res.formData();
expect(fd.get('foo')).to.be.equal('bar');
});
it('should return a length for empty form-data', async () => {
const form = new FormData();
const ab = await new Request('http://a', {
method: 'post',
body: form
}).arrayBuffer();
expect(ab.byteLength).to.be.greaterThan(30);
});
it('should add a Blob field\'s size to the FormData length', async () => {
const form = new FormData();
const string = 'Hello, world!';
form.set('field', string);
const fd = await new Request('about:blank', {method: 'POST', body: form}).formData();
expect(fd.get('field')).to.equal(string);
});
it('should return a length for a Blob field', async () => {
const form = new FormData();
const blob = new Blob(['Hello, world!'], {type: 'text/plain'});
form.set('blob', blob);
const fd = await new Response(form).formData();
expect(fd.get('blob').size).to.equal(13);
});
it('FormData-node still works thanks to symbol.hasInstance', async () => {
const form = new FormDataNode();
form.append('file', new Blob(['abc'], {type: 'text/html'}));
const res = new Response(form);
const fd = await res.formData();
expect(await fd.get('file').text()).to.equal('abc');
expect(fd.get('file').type).to.equal('text/html');
});
});